Skip to content

Instantly share code, notes, and snippets.

@Platin21
Last active October 16, 2021 16:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Platin21/3f891e0492362e0df15d51282e0b9b9f to your computer and use it in GitHub Desktop.
Save Platin21/3f891e0492362e0df15d51282e0b9b9f to your computer and use it in GitHub Desktop.
Failing-IL
; ModuleID = 'odin_package'
source_filename = "odin_package"
target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
target triple = "aarch64-unknown-linux-gnu"
%runtime.Type_Info = type { i64, i64, i32, i64, { [0 x i64], [120 x i8], i64 } }
%..string = type { i8*, i64 }
%runtime.Default_Temp_Allocator = type { { i8*, i64 }, i64, i8*, %runtime.Allocator, { { i8*, i64 }*, i64, i64, %runtime.Allocator } }
%runtime.Allocator = type { i8*, i8* }
%strconv.Float_Info = type { i64, i64, i64 }
%utf8.Accept_Range = type { i8, i8 }
%io.Stream_VTable = type { i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8* }
%runtime.Source_Code_Location = type { %..string, i32, i32, %..string }
%..any = type { i8*, i64 }
%runtime.Context = type { %runtime.Allocator, %runtime.Allocator, void ([2 x i64], [2 x i64], %runtime.Source_Code_Location*, i8*)*, %runtime.Logger, %..any, i8*, i64, i8* }
%runtime.Logger = type { void (i8*, i64, [2 x i64], i16, %runtime.Source_Code_Location*, i8*)*, i8*, i64, i16 }
%mem.Raw_String = type { i8*, i64 }
%time.Time = type { i64 }
%runtime.Type_Info_Named = type { %..string, %runtime.Type_Info*, %..string, %runtime.Source_Code_Location }
%runtime.Type_Info_Enum = type { %runtime.Type_Info*, { %..string*, i64 }, { i64*, i64 } }
%runtime.Raw_Slice = type { i8*, i64 }
%runtime.Raw_Dynamic_Array = type { i8*, i64, i64, %runtime.Allocator }
%runtime.Map_Header = type { %runtime.Raw_Map*, i8 (i8*, i8*)*, i64, i64, i64, i64, i64, i64 }
%runtime.Raw_Map = type { { i64*, i64 }, %runtime.Raw_Dynamic_Array }
%runtime.Map_Entry_Header = type { i64, i64 }
%runtime.Map_Hash = type { i64, i8* }
%os.OS_Stat = type { i64, i64, i64, i32, i32, i32, i32, i64, i64, i64, i64, %os.Unix_File_Time, %os.Unix_File_Time, %os.Unix_File_Time, i64, i64, i64 }
%os.Unix_File_Time = type { i64, i64 }
%strconv_decimal.Decimal = type { [384 x i8], i64, i64, i8, i8 }
%strconv.Decimal_Slice = type { { i8*, i64 }, i64, i64, i8 }
%strconv.format_digits.Buffer-1 = type { { i8*, i64 }, i64 }
%runtime.Map_Find_Result = type { i64, i64, i64 }
%runtime.Raw_String = type { i8*, i64 }
%io.Stream = type { %io.Stream_VTable*, i8* }
%io.Writer = type { %io.Stream }
%runtime.Type_Info_Union = type { { %runtime.Type_Info**, i64 }, i64, %runtime.Type_Info*, i8 (i8*, i8*)*, i8, i8, i8 }
%runtime.Type_Info_Integer = type { i8, i8 }
%runtime.Type_Info_Rune = type {}
%runtime.Type_Info_Float = type { i8 }
%runtime.Type_Info_Boolean = type {}
%runtime.Type_Info_Complex = type {}
%..complex64 = type { float, float }
%..complex128 = type { double, double }
%runtime.Type_Info_Quaternion = type {}
%..quaternion128 = type { float, float, float, float }
%..quaternion256 = type { double, double, double, double }
%fmt.Info = type { i8, i8, i8, i8, i8, i8, i8, i64, i64, i64, i8, i8, i8, %io.Writer, %..any, i64 }
%io.Flusher = type { %io.Stream }
%__gnu_h2f_ieee.fp32-2 = type { [0 x i32], [4 x i8] }
%runtime.Type_Info_String = type { i8 }
%runtime.Type_Info_Any = type {}
%runtime.Type_Info_Type_Id = type {}
%runtime.Type_Info_Pointer = type { %runtime.Type_Info* }
%runtime.Type_Info_Multi_Pointer = type { %runtime.Type_Info* }
%runtime.Type_Info_Procedure = type { %runtime.Type_Info*, %runtime.Type_Info*, i8, i8 }
%runtime.Type_Info_Tuple = type { { %runtime.Type_Info**, i64 }, { %..string*, i64 } }
%runtime.Type_Info_Array = type { %runtime.Type_Info*, i64, i64 }
%runtime.Type_Info_Enumerated_Array = type { %runtime.Type_Info*, %runtime.Type_Info*, i64, i64, i64, i64 }
%runtime.Type_Info_Dynamic_Array = type { %runtime.Type_Info*, i64 }
%runtime.Type_Info_Slice = type { %runtime.Type_Info*, i64 }
%runtime.Type_Info_Map = type { %runtime.Type_Info*, %runtime.Type_Info*, %runtime.Type_Info*, i8 (i8*, i8*)*, i64 (i8*, i64)* }
%runtime.Type_Info_Struct = type { { %runtime.Type_Info**, i64 }, { %..string*, i64 }, { i64*, i64 }, { i8*, i64 }, { %..string*, i64 }, i8, i8, i8, i8 (i8*, i8*)*, i8, %runtime.Type_Info*, i64 }
%runtime.Type_Info_Bit_Set = type { %runtime.Type_Info*, %runtime.Type_Info*, i64, i64 }
%runtime.Type_Info_Simd_Vector = type { %runtime.Type_Info*, i64, i64 }
%runtime.Type_Info_Relative_Pointer = type { %runtime.Type_Info*, %runtime.Type_Info* }
%runtime.Type_Info_Relative_Slice = type { %runtime.Type_Info*, %runtime.Type_Info* }
%mem.Raw_Dynamic_Array = type { i8*, i64, i64, %runtime.Allocator }
%mem.Raw_Slice = type { i8*, i64 }
%mem.Raw_Map = type { { i64*, i64 }, %mem.Raw_Dynamic_Array }
%io.Byte_Writer = type { %io.Stream }
@"__$type_info_data" = internal global [138 x %runtime.Type_Info] zeroinitializer
@"__$type_info_types_data" = internal global [103 x %runtime.Type_Info*] zeroinitializer
@"__$type_info_names_data" = internal global [103 x %..string] zeroinitializer
@"__$type_info_offsets_data" = internal global [103 x i64] zeroinitializer
@"__$type_info_usings_data" = internal global [103 x i8] zeroinitializer
@"__$type_info_tags_data" = internal global [103 x %..string] zeroinitializer
@runtime.global_default_temp_allocator_data = internal thread_local global %runtime.Default_Temp_Allocator zeroinitializer, !dbg !0
@runtime.type_table = internal global { %runtime.Type_Info*, i64 } { %runtime.Type_Info* getelementptr inbounds ([138 x %runtime.Type_Info], [138 x %runtime.Type_Info]* @"__$type_info_data", i64 0, i64 0), i64 138 }, !dbg !67
@runtime.args__ = internal global { i8**, i64 } zeroinitializer, !dbg !271
@os.stdout = internal global i32 1, !dbg !280
@os.stderr = internal global i32 2, !dbg !284
@fmt.__DIGITS_LOWER = internal global %..string { i8* getelementptr inbounds ([18 x i8], [18 x i8]* @"csbs$0", i64 0, i64 0), i64 17 }, !dbg !286
@"csbs$0" = internal global [18 x i8] c"0123456789abcdefx\00"
@fmt.__DIGITS_UPPER = internal global %..string { i8* getelementptr inbounds ([18 x i8], [18 x i8]* @"csbs$1", i64 0, i64 0), i64 17 }, !dbg !289
@"csbs$1" = internal global [18 x i8] c"0123456789ABCDEFX\00"
@time.days_before = internal global [13 x i32] [i32 0, i32 31, i32 59, i32 90, i32 120, i32 151, i32 181, i32 212, i32 243, i32 273, i32 304, i32 334, i32 365], !dbg !291
@strconv.digits = internal global %..string { i8* getelementptr inbounds ([37 x i8], [37 x i8]* @"csbs$2", i64 0, i64 0), i64 36 }, !dbg !297
@"csbs$2" = internal global [37 x i8] c"0123456789abcdefghijklmnopqrstuvwxyz\00"
@strconv._f16_info = internal global %strconv.Float_Info { i64 10, i64 5, i64 -15 }, !dbg !300
@strconv._f32_info = internal global %strconv.Float_Info { i64 23, i64 8, i64 -127 }, !dbg !310
@strconv._f64_info = internal global %strconv.Float_Info { i64 52, i64 11, i64 -1023 }, !dbg !312
@strings.DIGITS_LOWER-1532 = internal global %..string { i8* getelementptr inbounds ([18 x i8], [18 x i8]* @"csbs$0", i64 0, i64 0), i64 17 }, !dbg !314
@utf8.accept_ranges = internal global [5 x %utf8.Accept_Range] [%utf8.Accept_Range { i8 -128, i8 -65 }, %utf8.Accept_Range { i8 -96, i8 -65 }, %utf8.Accept_Range { i8 -128, i8 -97 }, %utf8.Accept_Range { i8 -112, i8 -65 }, %utf8.Accept_Range { i8 -128, i8 -113 }], !dbg !317
@utf8.accept_sizes = internal global [256 x i8] c"\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\13\03\03\03\03\03\03\03\03\03\03\03\03#\03\034\04\04\04D\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1", !dbg !327
@fmt._user_formatters = internal global { { i64*, i64 }, { i8*, i64, i64, %runtime.Allocator } }* null, !dbg !332
@os._file_stream_vtable-1513 = internal global %io.Stream_VTable* @"ggv$0", !dbg !515
@"csbs$3" = internal global [8 x i8] c"runtime\00"
@"csbs$4" = internal global [51 x i8] c"/home/armin/odin-arm64/Odin/core/runtime/core.odin\00"
@"csbs$5" = internal global [10 x i8] c"Type_Info\00"
@"csbs$6" = internal global [5 x i8] c"size\00"
@"csbs$7" = internal global [6 x i8] c"align\00"
@"csbs$8" = internal global [6 x i8] c"flags\00"
@"csbs$9" = internal global [3 x i8] c"id\00"
@"csbs$a" = internal global [8 x i8] c"variant\00"
@"csbs$b" = internal global [16 x i8] c"Type_Info_Flags\00"
@"csbs$c" = internal global [15 x i8] c"Type_Info_Flag\00"
@"$enum_names-16" = internal global [2 x %..string] [%..string { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"csbs$d", i64 0, i64 0), i64 10 }, %..string { i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"csbs$e", i64 0, i64 0), i64 14 }]
@"$enum_values-16" = internal global [2 x i64] [i64 0, i64 1]
@"csbs$d" = internal global [11 x i8] c"Comparable\00"
@"csbs$e" = internal global [15 x i8] c"Simple_Compare\00"
@"csbs$f" = internal global [16 x i8] c"Type_Info_Named\00"
@"csbs$10" = internal global [5 x i8] c"name\00"
@"csbs$11" = internal global [5 x i8] c"base\00"
@"csbs$12" = internal global [4 x i8] c"pkg\00"
@"csbs$13" = internal global [4 x i8] c"loc\00"
@"csbs$14" = internal global [21 x i8] c"Source_Code_Location\00"
@"csbs$15" = internal global [10 x i8] c"file_path\00"
@"csbs$16" = internal global [5 x i8] c"line\00"
@"csbs$17" = internal global [7 x i8] c"column\00"
@"csbs$18" = internal global [10 x i8] c"procedure\00"
@"csbs$19" = internal global [18 x i8] c"Type_Info_Integer\00"
@"csbs$1a" = internal global [7 x i8] c"signed\00"
@"csbs$1b" = internal global [11 x i8] c"endianness\00"
@"csbs$1c" = internal global [20 x i8] c"Platform_Endianness\00"
@"$enum_names-25" = internal global [3 x %..string] [%..string { i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"csbs$1d", i64 0, i64 0), i64 8 }, %..string { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"csbs$1e", i64 0, i64 0), i64 6 }, %..string { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"csbs$1f", i64 0, i64 0), i64 3 }]
@"$enum_values-25" = internal global [3 x i64] [i64 0, i64 1, i64 2]
@"csbs$1d" = internal global [9 x i8] c"Platform\00"
@"csbs$1e" = internal global [7 x i8] c"Little\00"
@"csbs$1f" = internal global [4 x i8] c"Big\00"
@"csbs$20" = internal global [15 x i8] c"Type_Info_Rune\00"
@"csbs$21" = internal global [16 x i8] c"Type_Info_Float\00"
@"csbs$22" = internal global [18 x i8] c"Type_Info_Complex\00"
@"csbs$23" = internal global [21 x i8] c"Type_Info_Quaternion\00"
@"csbs$24" = internal global [17 x i8] c"Type_Info_String\00"
@"csbs$25" = internal global [11 x i8] c"is_cstring\00"
@"csbs$26" = internal global [18 x i8] c"Type_Info_Boolean\00"
@"csbs$27" = internal global [14 x i8] c"Type_Info_Any\00"
@"csbs$28" = internal global [18 x i8] c"Type_Info_Type_Id\00"
@"csbs$29" = internal global [18 x i8] c"Type_Info_Pointer\00"
@"csbs$2a" = internal global [5 x i8] c"elem\00"
@"csbs$2b" = internal global [24 x i8] c"Type_Info_Multi_Pointer\00"
@"csbs$2c" = internal global [20 x i8] c"Type_Info_Procedure\00"
@"csbs$2d" = internal global [7 x i8] c"params\00"
@"csbs$2e" = internal global [8 x i8] c"results\00"
@"csbs$2f" = internal global [9 x i8] c"variadic\00"
@"csbs$30" = internal global [11 x i8] c"convention\00"
@"csbs$31" = internal global [19 x i8] c"Calling_Convention\00"
@"$enum_names-43" = internal global [8 x %..string] [%..string { i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"csbs$32", i64 0, i64 0), i64 7 }, %..string { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"csbs$33", i64 0, i64 0), i64 4 }, %..string { i8* getelementptr inbounds ([12 x i8], [12 x i8]* @"csbs$34", i64 0, i64 0), i64 11 }, %..string { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"csbs$35", i64 0, i64 0), i64 5 }, %..string { i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"csbs$36", i64 0, i64 0), i64 8 }, %..string { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"csbs$37", i64 0, i64 0), i64 9 }, %..string { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"csbs$38", i64 0, i64 0), i64 4 }, %..string { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"csbs$39", i64 0, i64 0), i64 5 }]
@"$enum_values-43" = internal global [8 x i64] [i64 0, i64 1, i64 2, i64 3, i64 4, i64 5, i64 6, i64 7]
@"csbs$32" = internal global [8 x i8] c"Invalid\00"
@"csbs$33" = internal global [5 x i8] c"Odin\00"
@"csbs$34" = internal global [12 x i8] c"Contextless\00"
@"csbs$35" = internal global [6 x i8] c"CDecl\00"
@"csbs$36" = internal global [9 x i8] c"Std_Call\00"
@"csbs$37" = internal global [10 x i8] c"Fast_Call\00"
@"csbs$38" = internal global [5 x i8] c"None\00"
@"csbs$39" = internal global [6 x i8] c"Naked\00"
@"csbs$3a" = internal global [16 x i8] c"Type_Info_Array\00"
@"csbs$3b" = internal global [10 x i8] c"elem_size\00"
@"csbs$3c" = internal global [6 x i8] c"count\00"
@"csbs$3d" = internal global [27 x i8] c"Type_Info_Enumerated_Array\00"
@"csbs$3e" = internal global [6 x i8] c"index\00"
@"csbs$3f" = internal global [10 x i8] c"min_value\00"
@"csbs$40" = internal global [10 x i8] c"max_value\00"
@"csbs$41" = internal global [21 x i8] c"Type_Info_Enum_Value\00"
@"csbs$42" = internal global [24 x i8] c"Type_Info_Dynamic_Array\00"
@"csbs$43" = internal global [16 x i8] c"Type_Info_Slice\00"
@"csbs$44" = internal global [16 x i8] c"Type_Info_Tuple\00"
@"csbs$45" = internal global [6 x i8] c"types\00"
@"csbs$46" = internal global [6 x i8] c"names\00"
@"csbs$47" = internal global [17 x i8] c"Type_Info_Struct\00"
@"csbs$48" = internal global [8 x i8] c"offsets\00"
@"csbs$49" = internal global [7 x i8] c"usings\00"
@"csbs$4a" = internal global [5 x i8] c"tags\00"
@"csbs$4b" = internal global [10 x i8] c"is_packed\00"
@"csbs$4c" = internal global [13 x i8] c"is_raw_union\00"
@"csbs$4d" = internal global [13 x i8] c"custom_align\00"
@"csbs$4e" = internal global [6 x i8] c"equal\00"
@"csbs$4f" = internal global [9 x i8] c"soa_kind\00"
@"csbs$50" = internal global [14 x i8] c"soa_base_type\00"
@"csbs$51" = internal global [8 x i8] c"soa_len\00"
@"csbs$52" = internal global [11 x i8] c"Equal_Proc\00"
@"csbs$53" = internal global [2 x i8] c"_\00"
@"csbs$54" = internal global [26 x i8] c"Type_Info_Struct_Soa_Kind\00"
@"$enum_names-72" = internal global [4 x %..string] [%..string { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"csbs$38", i64 0, i64 0), i64 4 }, %..string { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"csbs$55", i64 0, i64 0), i64 5 }, %..string { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"csbs$56", i64 0, i64 0), i64 5 }, %..string { i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"csbs$57", i64 0, i64 0), i64 7 }]
@"$enum_values-72" = internal global [4 x i64] [i64 0, i64 1, i64 2, i64 3]
@"csbs$55" = internal global [6 x i8] c"Fixed\00"
@"csbs$56" = internal global [6 x i8] c"Slice\00"
@"csbs$57" = internal global [8 x i8] c"Dynamic\00"
@"csbs$58" = internal global [16 x i8] c"Type_Info_Union\00"
@"csbs$59" = internal global [9 x i8] c"variants\00"
@"csbs$5a" = internal global [11 x i8] c"tag_offset\00"
@"csbs$5b" = internal global [9 x i8] c"tag_type\00"
@"csbs$5c" = internal global [7 x i8] c"no_nil\00"
@"csbs$5d" = internal global [6 x i8] c"maybe\00"
@"csbs$5e" = internal global [15 x i8] c"Type_Info_Enum\00"
@"csbs$5f" = internal global [7 x i8] c"values\00"
@"csbs$60" = internal global [14 x i8] c"Type_Info_Map\00"
@"csbs$61" = internal global [4 x i8] c"key\00"
@"csbs$62" = internal global [6 x i8] c"value\00"
@"csbs$63" = internal global [17 x i8] c"generated_struct\00"
@"csbs$64" = internal global [10 x i8] c"key_equal\00"
@"csbs$65" = internal global [11 x i8] c"key_hasher\00"
@"csbs$66" = internal global [12 x i8] c"Hasher_Proc\00"
@"csbs$67" = internal global [5 x i8] c"data\00"
@"csbs$68" = internal global [5 x i8] c"seed\00"
@"csbs$69" = internal global [18 x i8] c"Type_Info_Bit_Set\00"
@"csbs$6a" = internal global [11 x i8] c"underlying\00"
@"csbs$6b" = internal global [6 x i8] c"lower\00"
@"csbs$6c" = internal global [6 x i8] c"upper\00"
@"csbs$6d" = internal global [22 x i8] c"Type_Info_Simd_Vector\00"
@"csbs$6e" = internal global [27 x i8] c"Type_Info_Relative_Pointer\00"
@"csbs$6f" = internal global [8 x i8] c"pointer\00"
@"csbs$70" = internal global [13 x i8] c"base_integer\00"
@"csbs$71" = internal global [25 x i8] c"Type_Info_Relative_Slice\00"
@"csbs$72" = internal global [6 x i8] c"slice\00"
@"csbs$73" = internal global [5 x i8] c"time\00"
@"csbs$74" = internal global [48 x i8] c"/home/armin/odin-arm64/Odin/core/time/time.odin\00"
@"csbs$75" = internal global [9 x i8] c"Duration\00"
@"csbs$76" = internal global [5 x i8] c"Time\00"
@"csbs$77" = internal global [6 x i8] c"_nsec\00"
@"ggv$0" = global %io.Stream_VTable { i8* bitcast (i32 ([2 x i64], i8*)* @"_proclit$anon-7" to i8*), i8* bitcast (i32 ([2 x i64], i8*)* @"_proclit$anon-6" to i8*), i8* bitcast ([2 x i64] ([2 x i64], i64, i64, i8*)* @"_proclit$anon-4" to i8*), i8* bitcast (i64 ([2 x i64], i8*)* @"_proclit$anon-5" to i8*), i8* bitcast ([2 x i64] ([2 x i64], [2 x i64], i8*)* @"_proclit$anon-0" to i8*), i8* bitcast ([2 x i64] ([2 x i64], [2 x i64], i64, i8*)* @"_proclit$anon-1" to i8*), i8* null, i8* null, i8* null, i8* bitcast ([2 x i64] ([2 x i64], [2 x i64], i8*)* @"_proclit$anon-2" to i8*), i8* bitcast ([2 x i64] ([2 x i64], [2 x i64], i64, i8*)* @"_proclit$anon-3" to i8*), i8* null, i8* null, i8* null, i8* null, i8* null, i8* null }
@"csbs$78" = internal global [43 x i8] c"/home/armin/odin-arm64/Odin/test/test.odin\00"
@"csbs$79" = internal global [5 x i8] c"main\00"
@"csbs$7a" = internal global [2 x i8] c" \00"
@"csbs$7b" = internal global [3 x i8] c": \00"
@"csbs$7c" = internal global [56 x i8] c"/home/armin/odin-arm64/Odin/core/unicode/utf8/utf8.odin\00"
@"csbs$7d" = internal global [6 x i8] c"panic\00"
@"csbs$7e" = internal global [46 x i8] c"/home/armin/odin-arm64/Odin/core/mem/mem.odin\00"
@"csbs$7f" = internal global [74 x i8] c"/home/armin/odin-arm64/Odin/core/runtime/default_temporary_allocator.odin\00"
@"csbs$80" = internal global [28 x i8] c"default_temp_allocator_init\00"
@"csbs$81" = internal global [29 x i8] c"default_temp_allocator_alloc\00"
@"csbs$82" = internal global [52 x i8] c"default temp allocator resorted to backup_allocator\00"
@"csbs$83" = internal global [28 x i8] c"default_temp_allocator_free\00"
@"csbs$84" = internal global [32 x i8] c"default_temp_allocator_free_all\00"
@"csbs$85" = internal global [1 x i8] zeroinitializer
@"csbs$86" = internal global [69 x i8] c"/home/armin/odin-arm64/Odin/core/runtime/dynamic_array_internal.odin\00"
@"csbs$87" = internal global [24 x i8] c"__dynamic_array_reserve\00"
@"csbs$88" = internal global [23 x i8] c"__dynamic_array_append\00"
@"csbs$89" = internal global [31 x i8] c"__dynamic_array_append_nothing\00"
@"csbs$8a" = internal global [26 x i8] c"strconv: invalid bit_size\00"
@"csbs$8b" = internal global [60 x i8] c"/home/armin/odin-arm64/Odin/core/strconv/generic_float.odin\00"
@"csbs$8c" = internal global [13 x i8] c"generic_ftoa\00"
@"csbs$8d" = internal global [4 x i8] c"NaN\00"
@"csbs$8e" = internal global [5 x i8] c"-Inf\00"
@"csbs$8f" = internal global [5 x i8] c"+Inf\00"
@"csbs$90" = internal global [67 x i8] c"/home/armin/odin-arm64/Odin/core/runtime/dynamic_map_internal.odin\00"
@"csbs$91" = internal global [50 x i8] c"/home/armin/odin-arm64/Odin/core/os/os_linux.odin\00"
@"csbs$92" = internal global [18 x i8] c"__dynamic_map_set\00"
@"csbs$93" = internal global [42 x i8] c"is_integer_negative: Unknown integer size\00"
@"csbs$94" = internal global [55 x i8] c"/home/armin/odin-arm64/Odin/core/strconv/integers.odin\00"
@"csbs$95" = internal global [20 x i8] c"is_integer_negative\00"
@"csbs$96" = internal global [44 x i8] c"strconv: illegal base passed to append_bits\00"
@"csbs$97" = internal global [12 x i8] c"append_bits\00"
@"csbs$98" = internal global [24 x i8] c"is_integer_negative_128\00"
@"csbs$99" = internal global [16 x i8] c"append_bits_128\00"
@"csbs$9a" = internal global [24 x i8] c"__dynamic_map_get_entry\00"
@"csbs$9b" = internal global [25 x i8] c" Invalid slice indices: \00"
@"csbs$9c" = internal global [2 x i8] c":\00"
@"csbs$9d" = internal global [11 x i8] c"heap_alloc\00"
@"csbs$9e" = internal global [55 x i8] c"/home/armin/odin-arm64/Odin/core/runtime/internal.odin\00"
@"csbs$9f" = internal global [18 x i8] c"align_forward_int\00"
@"csbs$a0" = internal global [22 x i8] c"align_forward_uintptr\00"
@"csbs$a1" = internal global [54 x i8] c"/home/armin/odin-arm64/Odin/core/strings/builder.odin\00"
@"csbs$a2" = internal global [54 x i8] c"/home/armin/odin-arm64/Odin/core/reflect/reflect.odin\00"
@"csbs$a3" = internal global [4 x i8] c"\\a\22\00"
@"csbs$a4" = internal global [4 x i8] c"\\b\22\00"
@"csbs$a5" = internal global [4 x i8] c"\\e\22\00"
@"csbs$a6" = internal global [4 x i8] c"\\f\22\00"
@"csbs$a7" = internal global [4 x i8] c"\\n\22\00"
@"csbs$a8" = internal global [4 x i8] c"\\r\22\00"
@"csbs$a9" = internal global [4 x i8] c"\\t\22\00"
@"csbs$aa" = internal global [4 x i8] c"\\v\22\00"
@"csbs$ab" = internal global [3 x i8] c"\\x\00"
@"csbs$ac" = internal global [3 x i8] c"00\00"
@"csbs$ad" = internal global [3 x i8] c"\\a\00"
@"csbs$ae" = internal global [3 x i8] c"\\b\00"
@"csbs$af" = internal global [3 x i8] c"\\e\00"
@"csbs$b0" = internal global [3 x i8] c"\\f\00"
@"csbs$b1" = internal global [3 x i8] c"\\n\00"
@"csbs$b2" = internal global [3 x i8] c"\\r\00"
@"csbs$b3" = internal global [3 x i8] c"\\t\00"
@"csbs$b4" = internal global [3 x i8] c"\\v\00"
@"csbs$b5" = internal global [46 x i8] c"/home/armin/odin-arm64/Odin/core/fmt/fmt.odin\00"
@"csbs$b6" = internal global [3 x i8] c"%!\00"
@"csbs$b7" = internal global [6 x i8] c"<nil>\00"
@"csbs$b8" = internal global [5 x i8] c"true\00"
@"csbs$b9" = internal global [6 x i8] c"false\00"
@"csbs$ba" = internal global [54 x i8] c"_fmt_int: buffer overrun. Width and precision too big\00"
@"csbs$bb" = internal global [9 x i8] c"_fmt_int\00"
@"csbs$bc" = internal global [31 x i8] c"_fmt_int: unknown base, whoops\00"
@"csbs$bd" = internal global [13 x i8] c"_fmt_int_128\00"
@"csbs$be" = internal global [3 x i8] c"U+\00"
@"csbs$bf" = internal global [21 x i8] c"Unhandled float size\00"
@"csbs$c0" = internal global [10 x i8] c"fmt_float\00"
@"csbs$c1" = internal global [3 x i8] c"0h\00"
@"csbs$c2" = internal global [4 x i8] c"nil\00"
@"csbs$c3" = internal global [4 x i8] c"int\00"
@"csbs$c4" = internal global [5 x i8] c"uint\00"
@"csbs$c5" = internal global [8 x i8] c"uintptr\00"
@"csbs$c6" = internal global [3 x i8] c"le\00"
@"csbs$c7" = internal global [3 x i8] c"be\00"
@"csbs$c8" = internal global [5 x i8] c"rune\00"
@"csbs$c9" = internal global [8 x i8] c"complex\00"
@"csbs$ca" = internal global [11 x i8] c"quaternion\00"
@"csbs$cb" = internal global [8 x i8] c"cstring\00"
@"csbs$cc" = internal global [7 x i8] c"string\00"
@"csbs$cd" = internal global [5 x i8] c"bool\00"
@"csbs$ce" = internal global [4 x i8] c"any\00"
@"csbs$cf" = internal global [7 x i8] c"typeid\00"
@"csbs$d0" = internal global [7 x i8] c"rawptr\00"
@"csbs$d1" = internal global [2 x i8] c"^\00"
@"csbs$d2" = internal global [4 x i8] c"[^]\00"
@"csbs$d3" = internal global [5 x i8] c"proc\00"
@"csbs$d4" = internal global [3 x i8] c"()\00"
@"csbs$d5" = internal global [52 x i8] c"/home/armin/odin-arm64/Odin/core/reflect/types.odin\00"
@"csbs$d6" = internal global [2 x i8] c"(\00"
@"csbs$d7" = internal global [3 x i8] c", \00"
@"csbs$d8" = internal global [2 x i8] c")\00"
@"csbs$d9" = internal global [5 x i8] c" -> \00"
@"csbs$da" = internal global [2 x i8] c"[\00"
@"csbs$db" = internal global [2 x i8] c"]\00"
@"csbs$dc" = internal global [10 x i8] c"[dynamic]\00"
@"csbs$dd" = internal global [3 x i8] c"[]\00"
@"csbs$de" = internal global [5 x i8] c"map[\00"
@"csbs$df" = internal global [6 x i8] c"#soa[\00"
@"csbs$e0" = internal global [7 x i8] c"#soa[]\00"
@"csbs$e1" = internal global [14 x i8] c"#soa[dynamic]\00"
@"csbs$e2" = internal global [8 x i8] c"struct \00"
@"csbs$e3" = internal global [9 x i8] c"#packed \00"
@"csbs$e4" = internal global [12 x i8] c"#raw_union \00"
@"csbs$e5" = internal global [8 x i8] c"#align \00"
@"csbs$e6" = internal global [7 x i8] c"union \00"
@"csbs$e7" = internal global [6 x i8] c"enum \00"
@"csbs$e8" = internal global [3 x i8] c" {\00"
@"csbs$e9" = internal global [9 x i8] c"bit_set[\00"
@"csbs$ea" = internal global [3 x i8] c"..\00"
@"csbs$eb" = internal global [3 x i8] c"; \00"
@"csbs$ec" = internal global [7 x i8] c"#simd[\00"
@"csbs$ed" = internal global [11 x i8] c"#relative(\00"
@"csbs$ee" = internal global [3 x i8] c") \00"
@"csbs$ef" = internal global [3 x i8] c"0x\00"
@"csbs$f0" = internal global [62 x i8] c"/home/armin/odin-arm64/Odin/core/strconv/decimal/decimal.odin\00"
@"csbs$f1" = internal global [19 x i8] c"%!(BAD ENUM VALUE)\00"
@"csbs$f2" = internal global [22 x i8] c"unknown bit_size size\00"
@"csbs$f3" = internal global [12 x i8] c"fmt_bit_set\00"
@"csbs$f4" = internal global [11 x i8] c"shift_left\00"
@"csbs$f5" = internal global [3 x i8] c",\0A\00"
@"csbs$f6" = internal global [3 x i8] c"0s\00"
@"csbs$f7" = internal global [3 x i8] c"\C2\B5\00"
@"csbs$f8" = internal global [11 x i8] c" +0000 UTC\00"
@"csbs$f9" = internal global [3 x i8] c"{}\00"
@"csbs$fa" = internal global [4 x i8] c" = \00"
@"csbs$fb" = internal global [6 x i8] c"any{}\00"
@"csbs$fc" = internal global [3 x i8] c"[\0A\00"
@"csbs$fd" = internal global [2 x i8] c"=\00"
@"csbs$fe" = internal global [12 x i8] c"(raw_union)\00"
@"csbs$ff" = internal global [23 x i8] c"Invalid union tag type\00"
@"csbs$100" = internal global [10 x i8] c"fmt_value\00"
@"csbs$101" = internal global [4 x i8] c" @ \00"
@"csbs$102" = internal global [5 x i8] c"\\x00\00"
@"csbs$103" = internal global [52 x i8] c"/home/armin/odin-arm64/Odin/core/runtime/print.odin\00"
@"csbs$104" = internal global [9 x i8] c"#no_nil \00"
@"csbs$105" = internal global [2 x i8] c"}\00"
@"csbs$106" = internal global [44 x i8] c"/home/armin/odin-arm64/Odin/core/io/io.odin\00"
@"csbs$107" = internal global [15 x i8] c"__slice_resize\00"
@"csbs$108" = internal global [59 x i8] c"/home/armin/odin-arm64/Odin/core/runtime/core_builtin.odin\00"
@"csbs$109" = internal global [22 x i8] c"reserve_dynamic_array\00"
@"csbs$10a" = internal global [18 x i8] c"runtime assertion\00"
@"csbs$10b" = internal global [8 x i8] c" Index \00"
@"csbs$10c" = internal global [27 x i8] c" is out of bounds range 0:\00"
@"csbs$10d" = internal global [30 x i8] c" Invalid type assertion from \00"
@"csbs$10e" = internal global [5 x i8] c" to \00"
@"csbs$10f" = internal global [59 x i8] c"/home/armin/odin-arm64/Odin/core/runtime/error_checks.odin\00"
@"csbs$110" = internal global [16 x i8] c", actual type: \00"
@"csbs$111" = internal global [33 x i8] c" Invalid slice length for make: \00"
@"csbs$112" = internal global [45 x i8] c" Invalid dynamic array parameters for make: \00"
; Function Attrs: nounwind
define dso_local i128 @runtime.udivmod128(i128 %0, i128 %1, i128* %2) #0 !dbg !544 {
decls:
call void @llvm.dbg.declare(metadata i128* %3, metadata !552, metadata !DIExpression()), !dbg !581
%3 = alloca i128, align 16
call void @llvm.dbg.declare(metadata i128* %4, metadata !553, metadata !DIExpression()), !dbg !582
%4 = alloca i128, align 16
call void @llvm.dbg.declare(metadata [2 x i64]* %5, metadata !555, metadata !DIExpression()), !dbg !583
%5 = alloca [2 x i64], align 8, !dbg !583
call void @llvm.dbg.declare(metadata [2 x i64]* %6, metadata !560, metadata !DIExpression()), !dbg !584
%6 = alloca [2 x i64], align 8, !dbg !584
call void @llvm.dbg.declare(metadata [2 x i64]* %7, metadata !561, metadata !DIExpression()), !dbg !585
%7 = alloca [2 x i64], align 8, !dbg !585
call void @llvm.dbg.declare(metadata [2 x i64]* %8, metadata !562, metadata !DIExpression()), !dbg !586
%8 = alloca [2 x i64], align 8, !dbg !585
call void @llvm.dbg.declare(metadata i128* %9, metadata !574, metadata !DIExpression()), !dbg !587
%9 = alloca i128, align 16, !dbg !587
store i128 %0, i128* %3, align 16
store i128 %1, i128* %4, align 16
call void @llvm.dbg.value(metadata i128* %2, metadata !554, metadata !DIExpression()), !dbg !588
%10 = bitcast [2 x i64]* %5 to i8*, !dbg !583
call void @llvm.memset.p0i8.i64(i8* %10, i8 0, i64 16, i1 false), !dbg !583
%11 = bitcast i128* %3 to [2 x i64]*, !dbg !583
%12 = bitcast [2 x i64]* %11 to i8*, !dbg !583
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %10, i8* align 8 %12, i64 16, i1 false), !dbg !583
%13 = bitcast [2 x i64]* %6 to i8*, !dbg !584
call void @llvm.memset.p0i8.i64(i8* %13, i8 0, i64 16, i1 false), !dbg !584
%14 = bitcast i128* %4 to [2 x i64]*, !dbg !584
%15 = bitcast [2 x i64]* %14 to i8*, !dbg !584
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %13, i8* align 8 %15, i64 16, i1 false), !dbg !584
%16 = bitcast [2 x i64]* %7 to i8*, !dbg !585
call void @llvm.memset.p0i8.i64(i8* %16, i8 0, i64 16, i1 false), !dbg !585
%17 = bitcast [2 x i64]* %8 to i8*, !dbg !585
call void @llvm.memset.p0i8.i64(i8* %17, i8 0, i64 16, i1 false), !dbg !585
call void @llvm.memset.p0i8.i64(i8* align 8 %16, i8 undef, i64 16, i1 false), !dbg !585
call void @llvm.memset.p0i8.i64(i8* align 8 %17, i8 undef, i64 16, i1 false), !dbg !585
call void @llvm.dbg.value(metadata i32 0, metadata !563, metadata !DIExpression()), !dbg !589
%18 = getelementptr [2 x i64], [2 x i64]* %5, i64 0, i64 1, !dbg !590
%19 = load i64, i64* %18, align 8, !dbg !590
%20 = icmp eq i64 %19, 0, !dbg !590
br i1 %20, label %if.then, label %if.done6, !dbg !590
if.then: ; preds = %decls
%21 = getelementptr [2 x i64], [2 x i64]* %6, i64 0, i64 1, !dbg !591
%22 = load i64, i64* %21, align 8, !dbg !591
%23 = icmp eq i64 %22, 0, !dbg !591
%24 = icmp ne i128* %2, null, !dbg !592
br i1 %23, label %if.then1, label %if.done3, !dbg !591
if.then1: ; preds = %if.then
br i1 %24, label %if.then2, label %if.done, !dbg !593
if.then2: ; preds = %if.then1
call void @llvm.dbg.value(metadata i64 0, metadata !566, metadata !DIExpression()), !dbg !594
%25 = getelementptr [2 x i64], [2 x i64]* %5, i64 0, i64 0, !dbg !595
%26 = load i64, i64* %25, align 8, !dbg !595
%27 = getelementptr [2 x i64], [2 x i64]* %6, i64 0, i64 0, !dbg !595
%28 = load i64, i64* %27, align 8, !dbg !595
%29 = urem i64 %26, %28, !dbg !595
call void @llvm.dbg.value(metadata i64 %29, metadata !566, metadata !DIExpression()), !dbg !594
%30 = zext i64 %29 to i128, !dbg !596
store i128 %30, i128* %2, align 16, !dbg !596
br label %if.done, !dbg !593
if.done: ; preds = %if.then2, %if.then1
%31 = getelementptr [2 x i64], [2 x i64]* %5, i64 0, i64 0, !dbg !597
%32 = load i64, i64* %31, align 8, !dbg !597
%33 = getelementptr [2 x i64], [2 x i64]* %6, i64 0, i64 0, !dbg !597
%34 = load i64, i64* %33, align 8, !dbg !597
%35 = udiv i64 %32, %34, !dbg !597
%36 = zext i64 %35 to i128, !dbg !597
ret i128 %36, !dbg !597
if.done3: ; preds = %if.then
br i1 %24, label %if.then4, label %if.done5, !dbg !598
if.then4: ; preds = %if.done3
%37 = getelementptr [2 x i64], [2 x i64]* %5, i64 0, i64 0, !dbg !599
%38 = load i64, i64* %37, align 8, !dbg !599
%39 = zext i64 %38 to i128, !dbg !599
store i128 %39, i128* %2, align 16, !dbg !599
br label %if.done5, !dbg !598
if.done5: ; preds = %for.done, %if.then43, %if.then34, %if.then35, %if.then20, %if.then21, %if.then4, %if.done3
%merge = phi i128 [ 0, %if.then34 ], [ 0, %if.then35 ], [ 0, %if.then20 ], [ 0, %if.then21 ], [ 0, %if.then4 ], [ 0, %if.done3 ], [ %285, %if.then43 ], [ %285, %for.done ]
ret i128 %merge, !dbg !602
if.done6: ; preds = %decls
%40 = getelementptr [2 x i64], [2 x i64]* %6, i64 0, i64 0, !dbg !603
%41 = load i64, i64* %40, align 8, !dbg !603
%42 = icmp eq i64 %41, 0, !dbg !603
%43 = getelementptr [2 x i64], [2 x i64]* %6, i64 0, i64 1, !dbg !604
%44 = load i64, i64* %43, align 8, !dbg !604
%45 = icmp eq i64 %44, 0, !dbg !604
br i1 %42, label %if.then7, label %if.else, !dbg !603
if.then7: ; preds = %if.done6
br i1 %45, label %if.then8, label %if.done11, !dbg !606
if.then8: ; preds = %if.then7
%46 = icmp ne i128* %2, null, !dbg !608
br i1 %46, label %if.then9, label %if.done10, !dbg !608
if.then9: ; preds = %if.then8
%47 = urem i64 %19, %41, !dbg !611
%48 = zext i64 %47 to i128, !dbg !611
store i128 %48, i128* %2, align 16, !dbg !611
br label %if.done10, !dbg !608
if.done10: ; preds = %if.then9, %if.then8
%49 = load i64, i64* %18, align 8, !dbg !614
%50 = load i64, i64* %40, align 8, !dbg !614
%51 = udiv i64 %49, %50, !dbg !614
%52 = zext i64 %51 to i128, !dbg !614
ret i128 %52, !dbg !614
if.done11: ; preds = %if.then7
%53 = getelementptr [2 x i64], [2 x i64]* %5, i64 0, i64 0, !dbg !615
%54 = load i64, i64* %53, align 8, !dbg !615
%55 = icmp eq i64 %54, 0, !dbg !615
br i1 %55, label %if.then12, label %if.done15, !dbg !615
if.then12: ; preds = %if.done11
%56 = icmp ne i128* %2, null, !dbg !616
br i1 %56, label %if.then13, label %if.done14, !dbg !616
if.then13: ; preds = %if.then12
%57 = getelementptr [2 x i64], [2 x i64]* %8, i64 0, i64 1, !dbg !619
%58 = urem i64 %19, %44, !dbg !619
store i64 %58, i64* %57, align 8, !dbg !619
%59 = getelementptr [2 x i64], [2 x i64]* %8, i64 0, i64 0, !dbg !622
store i64 0, i64* %59, align 8, !dbg !622
%60 = bitcast [2 x i64]* %8 to i128*, !dbg !623
%61 = load i128, i128* %60, align 16, !dbg !623
store i128 %61, i128* %2, align 16, !dbg !623
br label %if.done14, !dbg !616
if.done14: ; preds = %if.then13, %if.then12
%62 = load i64, i64* %18, align 8, !dbg !624
%63 = load i64, i64* %43, align 8, !dbg !624
%64 = udiv i64 %62, %63, !dbg !624
%65 = zext i64 %64 to i128, !dbg !624
ret i128 %65, !dbg !624
if.done15: ; preds = %if.done11
%66 = sub i64 %44, 1, !dbg !625
%67 = and i64 %44, %66, !dbg !625
%68 = icmp eq i64 %67, 0, !dbg !625
br i1 %68, label %if.then16, label %if.done19, !dbg !625
if.then16: ; preds = %if.done15
%69 = icmp ne i128* %2, null, !dbg !626
br i1 %69, label %if.then17, label %if.done18, !dbg !626
if.then17: ; preds = %if.then16
%70 = getelementptr [2 x i64], [2 x i64]* %8, i64 0, i64 0, !dbg !629
store i64 %54, i64* %70, align 8, !dbg !629
%71 = getelementptr [2 x i64], [2 x i64]* %8, i64 0, i64 1, !dbg !632
%72 = load i64, i64* %18, align 8, !dbg !632
%73 = load i64, i64* %43, align 8, !dbg !632
%74 = sub i64 %73, 1, !dbg !632
%75 = and i64 %72, %74, !dbg !632
store i64 %75, i64* %71, align 8, !dbg !632
%76 = bitcast [2 x i64]* %8 to i128*, !dbg !633
%77 = load i128, i128* %76, align 16, !dbg !633
store i128 %77, i128* %2, align 16, !dbg !633
br label %if.done18, !dbg !626
if.done18: ; preds = %if.then17, %if.then16
%78 = load i64, i64* %18, align 8, !dbg !634
%79 = load i64, i64* %43, align 8, !dbg !634
%80 = call i64 @llvm.cttz.i64(i64 %79, i1 false), !dbg !634
%81 = icmp ult i64 %80, 64, !dbg !634
%82 = lshr i64 %78, %80, !dbg !634
%83 = select i1 %81, i64 %82, i64 0, !dbg !634
%84 = zext i64 %83 to i128, !dbg !634
ret i128 %84, !dbg !634
if.done19: ; preds = %if.done15
%85 = call i64 @llvm.ctlz.i64(i64 %44, i1 false), !dbg !635
%86 = trunc i64 %85 to i32, !dbg !635
%87 = call i64 @llvm.ctlz.i64(i64 %19, i1 false), !dbg !635
%88 = trunc i64 %87 to i32, !dbg !635
%89 = sub i32 %86, %88, !dbg !635
call void @llvm.dbg.value(metadata i32 %89, metadata !563, metadata !DIExpression()), !dbg !589
%90 = icmp ugt i32 %89, 62, !dbg !636
br i1 %90, label %if.then20, label %if.done23, !dbg !636
if.then20: ; preds = %if.done19
%91 = icmp ne i128* %2, null, !dbg !637
br i1 %91, label %if.then21, label %if.done5, !dbg !637
if.then21: ; preds = %if.then20
%92 = load i128, i128* %3, align 16, !dbg !640
store i128 %92, i128* %2, align 16, !dbg !640
br label %if.done5, !dbg !637
if.done23: ; preds = %if.done19
%93 = add i32 %89, 1, !dbg !643
call void @llvm.dbg.value(metadata i32 %93, metadata !563, metadata !DIExpression()), !dbg !589
%94 = getelementptr [2 x i64], [2 x i64]* %7, i64 0, i64 0, !dbg !644
store i64 0, i64* %94, align 8, !dbg !644
%95 = getelementptr [2 x i64], [2 x i64]* %7, i64 0, i64 1, !dbg !645
%96 = load i64, i64* %53, align 8, !dbg !645
%97 = sub i32 64, %93, !dbg !645
%98 = zext i32 %97 to i64, !dbg !645
%99 = icmp ult i64 %98, 64, !dbg !645
%100 = shl i64 %96, %98, !dbg !645
%101 = select i1 %99, i64 %100, i64 0, !dbg !645
store i64 %101, i64* %95, align 8, !dbg !645
%102 = getelementptr [2 x i64], [2 x i64]* %8, i64 0, i64 1, !dbg !646
%103 = load i64, i64* %18, align 8, !dbg !646
%104 = zext i32 %93 to i64, !dbg !646
%105 = icmp ult i64 %104, 64, !dbg !646
%106 = lshr i64 %103, %104, !dbg !646
%107 = select i1 %105, i64 %106, i64 0, !dbg !646
store i64 %107, i64* %102, align 8, !dbg !646
%108 = getelementptr [2 x i64], [2 x i64]* %8, i64 0, i64 0, !dbg !647
%109 = load i64, i64* %18, align 8, !dbg !647
%110 = shl i64 %109, %98, !dbg !647
%111 = select i1 %99, i64 %110, i64 0, !dbg !647
%112 = load i64, i64* %53, align 8, !dbg !647
%113 = lshr i64 %112, %104, !dbg !647
%114 = select i1 %105, i64 %113, i64 0, !dbg !647
%115 = or i64 %111, %114, !dbg !647
store i64 %115, i64* %108, align 8, !dbg !647
br label %if.done42, !dbg !603
if.else: ; preds = %if.done6
br i1 %45, label %if.then24, label %if.else33, !dbg !648
if.then24: ; preds = %if.else
%116 = sub i64 %41, 1, !dbg !650
%117 = and i64 %41, %116, !dbg !650
%118 = icmp eq i64 %117, 0, !dbg !650
br i1 %118, label %if.then25, label %if.done30, !dbg !650
if.then25: ; preds = %if.then24
%119 = icmp ne i128* %2, null, !dbg !653
br i1 %119, label %if.then26, label %if.done27, !dbg !653
if.then26: ; preds = %if.then25
%120 = getelementptr [2 x i64], [2 x i64]* %5, i64 0, i64 0, !dbg !656
%121 = load i64, i64* %120, align 8, !dbg !656
%122 = and i64 %121, %116, !dbg !656
%123 = zext i64 %122 to i128, !dbg !656
store i128 %123, i128* %2, align 16, !dbg !656
br label %if.done27, !dbg !653
if.done27: ; preds = %if.then26, %if.then25
%124 = load i64, i64* %40, align 8, !dbg !659
%125 = icmp eq i64 %124, 1, !dbg !659
br i1 %125, label %if.then28, label %if.done29, !dbg !659
if.then28: ; preds = %if.done27
%126 = load i128, i128* %3, align 16, !dbg !660
ret i128 %126, !dbg !660
if.done29: ; preds = %if.done27
%127 = call i64 @llvm.cttz.i64(i64 %124, i1 false), !dbg !663
%128 = trunc i64 %127 to i32, !dbg !663
call void @llvm.dbg.value(metadata i32 %128, metadata !563, metadata !DIExpression()), !dbg !589
%129 = getelementptr [2 x i64], [2 x i64]* %7, i64 0, i64 1, !dbg !664
%130 = load i64, i64* %18, align 8, !dbg !664
%131 = zext i32 %128 to i64, !dbg !664
%132 = icmp ult i64 %131, 64, !dbg !664
%133 = lshr i64 %130, %131, !dbg !664
%134 = select i1 %132, i64 %133, i64 0, !dbg !664
store i64 %134, i64* %129, align 8, !dbg !664
%135 = getelementptr [2 x i64], [2 x i64]* %7, i64 0, i64 0, !dbg !665
%136 = load i64, i64* %18, align 8, !dbg !665
%137 = sub i32 64, %128, !dbg !665
%138 = zext i32 %137 to i64, !dbg !665
%139 = icmp ult i64 %138, 64, !dbg !665
%140 = shl i64 %136, %138, !dbg !665
%141 = select i1 %139, i64 %140, i64 0, !dbg !665
%142 = getelementptr [2 x i64], [2 x i64]* %5, i64 0, i64 0, !dbg !665
%143 = load i64, i64* %142, align 8, !dbg !665
%144 = lshr i64 %143, %131, !dbg !665
%145 = select i1 %132, i64 %144, i64 0, !dbg !665
%146 = or i64 %141, %145, !dbg !665
store i64 %146, i64* %135, align 8, !dbg !665
%147 = bitcast [2 x i64]* %7 to i128*, !dbg !666
%148 = load i128, i128* %147, align 16, !dbg !666
ret i128 %148, !dbg !666
if.done30: ; preds = %if.then24
%149 = call i64 @llvm.ctlz.i64(i64 %41, i1 false), !dbg !667
%150 = trunc i64 %149 to i32, !dbg !667
%151 = add i32 65, %150, !dbg !667
%152 = call i64 @llvm.ctlz.i64(i64 %19, i1 false), !dbg !667
%153 = trunc i64 %152 to i32, !dbg !667
%154 = sub i32 %151, %153, !dbg !667
call void @llvm.dbg.value(metadata i32 %154, metadata !563, metadata !DIExpression()), !dbg !589
%155 = icmp eq i32 %154, 64, !dbg !668
br i1 %155, label %switch.case.body, label %switch.case.next, !dbg !668
switch.case.next: ; preds = %if.done30
%156 = icmp ult i32 %154, 64, !dbg !668
%157 = getelementptr [2 x i64], [2 x i64]* %7, i64 0, i64 0, !dbg !669
br i1 %156, label %switch.case.body32, label %switch.default.body, !dbg !668
switch.case.body: ; preds = %if.done30
%158 = getelementptr [2 x i64], [2 x i64]* %7, i64 0, i64 0, !dbg !671
store i64 0, i64* %158, align 8, !dbg !671
%159 = getelementptr [2 x i64], [2 x i64]* %7, i64 0, i64 1, !dbg !672
%160 = getelementptr [2 x i64], [2 x i64]* %5, i64 0, i64 0, !dbg !672
%161 = load i64, i64* %160, align 8, !dbg !672
store i64 %161, i64* %159, align 8, !dbg !672
%162 = getelementptr [2 x i64], [2 x i64]* %8, i64 0, i64 1, !dbg !673
store i64 0, i64* %162, align 8, !dbg !673
%163 = getelementptr [2 x i64], [2 x i64]* %8, i64 0, i64 0, !dbg !674
%164 = load i64, i64* %18, align 8, !dbg !674
store i64 %164, i64* %163, align 8, !dbg !674
br label %if.done42, !dbg !668
switch.case.body32: ; preds = %switch.case.next
store i64 0, i64* %157, align 8, !dbg !675
%165 = getelementptr [2 x i64], [2 x i64]* %7, i64 0, i64 1, !dbg !676
%166 = getelementptr [2 x i64], [2 x i64]* %5, i64 0, i64 0, !dbg !676
%167 = load i64, i64* %166, align 8, !dbg !676
%168 = sub i32 64, %154, !dbg !676
%169 = zext i32 %168 to i64, !dbg !676
%170 = icmp ult i64 %169, 64, !dbg !676
%171 = shl i64 %167, %169, !dbg !676
%172 = select i1 %170, i64 %171, i64 0, !dbg !676
store i64 %172, i64* %165, align 8, !dbg !676
%173 = getelementptr [2 x i64], [2 x i64]* %8, i64 0, i64 1, !dbg !677
%174 = load i64, i64* %18, align 8, !dbg !677
%175 = zext i32 %154 to i64, !dbg !677
%176 = icmp ult i64 %175, 64, !dbg !677
%177 = lshr i64 %174, %175, !dbg !677
%178 = select i1 %176, i64 %177, i64 0, !dbg !677
store i64 %178, i64* %173, align 8, !dbg !677
%179 = getelementptr [2 x i64], [2 x i64]* %8, i64 0, i64 0, !dbg !678
%180 = load i64, i64* %18, align 8, !dbg !678
%181 = shl i64 %180, %169, !dbg !678
%182 = select i1 %170, i64 %181, i64 0, !dbg !678
%183 = load i64, i64* %166, align 8, !dbg !678
%184 = lshr i64 %183, %175, !dbg !678
%185 = select i1 %176, i64 %184, i64 0, !dbg !678
%186 = or i64 %182, %185, !dbg !678
store i64 %186, i64* %179, align 8, !dbg !678
br label %if.done42, !dbg !668
switch.default.body: ; preds = %switch.case.next
%187 = getelementptr [2 x i64], [2 x i64]* %5, i64 0, i64 0, !dbg !679
%188 = load i64, i64* %187, align 8, !dbg !679
%189 = sub i32 128, %154, !dbg !679
%190 = zext i32 %189 to i64, !dbg !679
%191 = icmp ult i64 %190, 64, !dbg !679
%192 = shl i64 %188, %190, !dbg !679
%193 = select i1 %191, i64 %192, i64 0, !dbg !679
store i64 %193, i64* %157, align 8, !dbg !679
%194 = getelementptr [2 x i64], [2 x i64]* %7, i64 0, i64 1, !dbg !680
%195 = load i64, i64* %18, align 8, !dbg !680
%196 = shl i64 %195, %190, !dbg !680
%197 = select i1 %191, i64 %196, i64 0, !dbg !680
%198 = load i64, i64* %187, align 8, !dbg !680
%199 = sub i32 %154, 64, !dbg !680
%200 = zext i32 %199 to i64, !dbg !680
%201 = icmp ult i64 %200, 64, !dbg !680
%202 = lshr i64 %198, %200, !dbg !680
%203 = select i1 %201, i64 %202, i64 0, !dbg !680
%204 = or i64 %197, %203, !dbg !680
store i64 %204, i64* %194, align 8, !dbg !680
%205 = getelementptr [2 x i64], [2 x i64]* %8, i64 0, i64 1, !dbg !681
store i64 0, i64* %205, align 8, !dbg !681
%206 = getelementptr [2 x i64], [2 x i64]* %8, i64 0, i64 0, !dbg !682
%207 = load i64, i64* %18, align 8, !dbg !682
%208 = lshr i64 %207, %200, !dbg !682
%209 = select i1 %201, i64 %208, i64 0, !dbg !682
store i64 %209, i64* %206, align 8, !dbg !682
br label %if.done42, !dbg !668
if.else33: ; preds = %if.else
%210 = call i64 @llvm.ctlz.i64(i64 %44, i1 false), !dbg !683
%211 = trunc i64 %210 to i32, !dbg !683
%212 = call i64 @llvm.ctlz.i64(i64 %19, i1 false), !dbg !683
%213 = trunc i64 %212 to i32, !dbg !683
%214 = sub i32 %211, %213, !dbg !683
call void @llvm.dbg.value(metadata i32 %214, metadata !563, metadata !DIExpression()), !dbg !589
%215 = icmp ugt i32 %214, 63, !dbg !685
br i1 %215, label %if.then34, label %if.done37, !dbg !685
if.then34: ; preds = %if.else33
%216 = icmp ne i128* %2, null, !dbg !686
br i1 %216, label %if.then35, label %if.done5, !dbg !686
if.then35: ; preds = %if.then34
%217 = load i128, i128* %3, align 16, !dbg !689
store i128 %217, i128* %2, align 16, !dbg !689
br label %if.done5, !dbg !686
if.done37: ; preds = %if.else33
%218 = add i32 %214, 1, !dbg !692
call void @llvm.dbg.value(metadata i32 %218, metadata !563, metadata !DIExpression()), !dbg !589
%219 = getelementptr [2 x i64], [2 x i64]* %7, i64 0, i64 0, !dbg !693
store i64 0, i64* %219, align 8, !dbg !693
%220 = icmp eq i32 %218, 64, !dbg !694
br i1 %220, label %if.then38, label %if.else39, !dbg !694
if.then38: ; preds = %if.done37
%221 = getelementptr [2 x i64], [2 x i64]* %5, i64 0, i64 0, !dbg !695
%222 = load i64, i64* %221, align 8, !dbg !695
%223 = load i64, i64* %18, align 8, !dbg !698
br label %if.done40, !dbg !694
if.else39: ; preds = %if.done37
%224 = load i64, i64* %18, align 8, !dbg !699
%225 = zext i32 %218 to i64, !dbg !699
%226 = icmp ult i64 %225, 64, !dbg !699
%227 = lshr i64 %224, %225, !dbg !699
%228 = select i1 %226, i64 %227, i64 0, !dbg !699
%229 = sub i32 64, %218, !dbg !701
%230 = zext i32 %229 to i64, !dbg !701
%231 = icmp ult i64 %230, 64, !dbg !701
%232 = shl i64 %224, %230, !dbg !701
%233 = select i1 %231, i64 %232, i64 0, !dbg !701
%234 = getelementptr [2 x i64], [2 x i64]* %5, i64 0, i64 0, !dbg !701
%235 = load i64, i64* %234, align 8, !dbg !701
%236 = lshr i64 %235, %225, !dbg !701
%237 = select i1 %226, i64 %236, i64 0, !dbg !701
%238 = or i64 %233, %237, !dbg !701
%239 = shl i64 %235, %230, !dbg !702
%240 = select i1 %231, i64 %239, i64 0, !dbg !702
br label %if.done40, !dbg !694
if.done40: ; preds = %if.else39, %if.then38
%.sink47 = phi i64 [ %222, %if.then38 ], [ %240, %if.else39 ], !dbg !703
%.sink46 = phi i64 [ 0, %if.then38 ], [ %228, %if.else39 ], !dbg !703
%.sink = phi i64 [ %223, %if.then38 ], [ %238, %if.else39 ], !dbg !703
%241 = getelementptr [2 x i64], [2 x i64]* %7, i64 0, i64 1, !dbg !695
store i64 %.sink47, i64* %241, align 8, !dbg !695
%242 = getelementptr [2 x i64], [2 x i64]* %8, i64 0, i64 1, !dbg !704
store i64 %.sink46, i64* %242, align 8, !dbg !704
%243 = getelementptr [2 x i64], [2 x i64]* %8, i64 0, i64 0, !dbg !698
store i64 %.sink, i64* %243, align 8, !dbg !698
br label %if.done42, !dbg !648
if.done42: ; preds = %if.done40, %switch.default.body, %switch.case.body32, %switch.case.body, %if.done23
%.1 = phi i32 [ %93, %if.done23 ], [ %218, %if.done40 ], [ %154, %switch.default.body ], [ %154, %switch.case.body32 ], [ %154, %switch.case.body ], !dbg !604
call void @llvm.dbg.value(metadata i32 %.1, metadata !563, metadata !DIExpression()), !dbg !589
call void @llvm.dbg.value(metadata i32 0, metadata !573, metadata !DIExpression()), !dbg !589
call void @llvm.dbg.value(metadata i32 0, metadata !573, metadata !DIExpression()), !dbg !589
store i128 undef, i128* %9, align 16, !dbg !587
br label %for.loop, !dbg !705
for.loop: ; preds = %for.body, %if.done42
%.045 = phi i32 [ 0, %if.done42 ], [ %275, %for.body ], !dbg !589
%.2 = phi i32 [ %.1, %if.done42 ], [ %280, %for.body ], !dbg !589
call void @llvm.dbg.value(metadata i32 %.2, metadata !563, metadata !DIExpression()), !dbg !589
call void @llvm.dbg.value(metadata i32 %.045, metadata !573, metadata !DIExpression()), !dbg !589
%244 = icmp ugt i32 %.2, 0, !dbg !705
br i1 %244, label %for.body, label %for.done, !dbg !705
for.body: ; preds = %for.loop
%245 = getelementptr [2 x i64], [2 x i64]* %8, i64 0, i64 1, !dbg !706
%246 = load i64, i64* %245, align 8, !dbg !706
%247 = shl i64 %246, 1, !dbg !706
%248 = getelementptr [2 x i64], [2 x i64]* %8, i64 0, i64 0, !dbg !706
%249 = load i64, i64* %248, align 8, !dbg !706
%250 = lshr i64 %249, 63, !dbg !706
%251 = or i64 %247, %250, !dbg !706
store i64 %251, i64* %245, align 8, !dbg !706
%252 = load i64, i64* %248, align 8, !dbg !707
%253 = shl i64 %252, 1, !dbg !707
%254 = getelementptr [2 x i64], [2 x i64]* %7, i64 0, i64 1, !dbg !707
%255 = load i64, i64* %254, align 8, !dbg !707
%256 = lshr i64 %255, 63, !dbg !707
%257 = or i64 %253, %256, !dbg !707
store i64 %257, i64* %248, align 8, !dbg !707
%258 = load i64, i64* %254, align 8, !dbg !708
%259 = shl i64 %258, 1, !dbg !708
%260 = getelementptr [2 x i64], [2 x i64]* %7, i64 0, i64 0, !dbg !708
%261 = load i64, i64* %260, align 8, !dbg !708
%262 = lshr i64 %261, 63, !dbg !708
%263 = or i64 %259, %262, !dbg !708
store i64 %263, i64* %254, align 8, !dbg !708
%264 = load i64, i64* %260, align 8, !dbg !709
%265 = shl i64 %264, 1, !dbg !709
%266 = zext i32 %.045 to i64, !dbg !709
%267 = or i64 %265, %266, !dbg !709
store i64 %267, i64* %260, align 8, !dbg !709
%268 = bitcast [2 x i64]* %8 to i128*, !dbg !710
%269 = load i128, i128* %268, align 16, !dbg !710
store i128 %269, i128* %9, align 16, !dbg !710
call void @llvm.dbg.value(metadata i128 0, metadata !575, metadata !DIExpression()), !dbg !711
%270 = load i128, i128* %4, align 16, !dbg !712
%271 = sub i128 %270, %269, !dbg !712
%272 = sub i128 %271, 1, !dbg !712
%273 = ashr i128 %272, 127, !dbg !712
call void @llvm.dbg.value(metadata i128 %273, metadata !575, metadata !DIExpression()), !dbg !711
%274 = and i128 %273, 1, !dbg !713
%275 = trunc i128 %274 to i32, !dbg !713
call void @llvm.dbg.value(metadata i32 %275, metadata !573, metadata !DIExpression()), !dbg !589
%276 = and i128 %270, %273, !dbg !714
%277 = sub i128 %269, %276, !dbg !714
store i128 %277, i128* %9, align 16, !dbg !714
%278 = bitcast i128* %9 to [2 x i64]*, !dbg !715
%279 = bitcast [2 x i64]* %278 to i8*, !dbg !715
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %17, i8* align 8 %279, i64 16, i1 false), !dbg !715
%280 = sub i32 %.2, 1, !dbg !716
call void @llvm.dbg.value(metadata i32 %280, metadata !563, metadata !DIExpression()), !dbg !589
br label %for.loop, !dbg !705
for.done: ; preds = %for.loop
call void @llvm.dbg.value(metadata i128 0, metadata !580, metadata !DIExpression()), !dbg !589
%281 = bitcast [2 x i64]* %7 to i128*, !dbg !717
%282 = load i128, i128* %281, align 16, !dbg !717
%283 = shl i128 %282, 1, !dbg !717
%284 = zext i32 %.045 to i128, !dbg !717
%285 = or i128 %283, %284, !dbg !717
call void @llvm.dbg.value(metadata i128 %285, metadata !580, metadata !DIExpression()), !dbg !589
%286 = icmp ne i128* %2, null, !dbg !718
br i1 %286, label %if.then43, label %if.done5, !dbg !718
if.then43: ; preds = %for.done
%287 = load i128, i128* %9, align 16, !dbg !719
store i128 %287, i128* %2, align 16, !dbg !719
br label %if.done5, !dbg !718
}
define internal void @test.main(i8* noalias nocapture nonnull %__.context_ptr) !dbg !722 {
decls:
call void @llvm.dbg.declare(metadata { i64*, i64, i64, %runtime.Allocator }* %0, metadata !763, metadata !DIExpression()), !dbg !769
%0 = alloca { i64*, i64, i64, %runtime.Allocator }, align 8, !dbg !769
%1 = alloca { i64*, i64, i64, %runtime.Allocator }, align 8, !dbg !769
%2 = alloca %runtime.Source_Code_Location, align 8, !dbg !769
%3 = alloca [3 x i64], align 8, !dbg !769
%4 = alloca %runtime.Source_Code_Location, align 8, !dbg !769
call void @llvm.dbg.declare(metadata i64* %5, metadata !767, metadata !DIExpression()), !dbg !770
%5 = alloca i64, align 8, !dbg !771
%6 = alloca %..any, align 8, !dbg !772
%7 = alloca { %..any*, i64 }, align 8, !dbg !772
%8 = alloca [1 x %..any], align 8, !dbg !772
%9 = alloca [2 x i64], align 8, !dbg !772
%10 = alloca %runtime.Source_Code_Location, align 8, !dbg !774
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !726, metadata !DIExpression()), !dbg !775
%11 = bitcast { i64*, i64, i64, %runtime.Allocator }* %0 to i8*, !dbg !769
call void @llvm.memset.p0i8.i64(i8* %11, i8 0, i64 40, i1 false), !dbg !769
%12 = bitcast { i64*, i64, i64, %runtime.Allocator }* %1 to i8*, !dbg !769
call void @llvm.memset.p0i8.i64(i8* %12, i8 0, i64 40, i1 false), !dbg !769
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([43 x i8], [43 x i8]* @"csbs$78", i64 0, i64 0), i64 42 }, i32 5, i32 24, %..string { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"csbs$79", i64 0, i64 0), i64 4 } }, %runtime.Source_Code_Location* %2, align 8, !dbg !769
%13 = call i8 @runtime.__dynamic_array_reserve(i8* %12, i64 8, i64 8, i64 6, %runtime.Source_Code_Location* %2, i8* %__.context_ptr), !dbg !769
%14 = bitcast [3 x i64]* %3 to i8*, !dbg !769
call void @llvm.memset.p0i8.i64(i8* %14, i8 0, i64 24, i1 false), !dbg !769
%15 = getelementptr [3 x i64], [3 x i64]* %3, i64 0, i64 0, !dbg !769
store i64 1, i64* %15, align 8, !dbg !769
%16 = getelementptr [3 x i64], [3 x i64]* %3, i64 0, i64 1, !dbg !769
store i64 2, i64* %16, align 8, !dbg !769
%17 = getelementptr [3 x i64], [3 x i64]* %3, i64 0, i64 2, !dbg !769
store i64 3, i64* %17, align 8, !dbg !769
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([43 x i8], [43 x i8]* @"csbs$78", i64 0, i64 0), i64 42 }, i32 5, i32 24, %..string { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"csbs$79", i64 0, i64 0), i64 4 } }, %runtime.Source_Code_Location* %4, align 8, !dbg !769
%18 = call i64 @runtime.__dynamic_array_append(i8* %12, i64 8, i64 8, i8* %14, i64 3, %runtime.Source_Code_Location* %4, i8* %__.context_ptr), !dbg !769
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %11, i8* align 8 %12, i64 40, i1 false), !dbg !769
call void @llvm.dbg.value(metadata i64 0, metadata !767, metadata !DIExpression()), !dbg !776
%19 = getelementptr inbounds { i64*, i64, i64, %runtime.Allocator }, { i64*, i64, i64, %runtime.Allocator }* %0, i32 0, i32 1, !dbg !771
br label %for.index.loop, !dbg !771
for.index.loop: ; preds = %for.index.body, %decls
%.0 = phi i64 [ -1, %decls ], [ %20, %for.index.body ], !dbg !771
%20 = add i64 %.0, 1, !dbg !771
%21 = load i64, i64* %19, align 8, !dbg !771
%22 = icmp slt i64 %20, %21, !dbg !771
br i1 %22, label %for.index.body, label %defer, !dbg !771
for.index.body: ; preds = %for.index.loop
%23 = getelementptr inbounds { i64*, i64, i64, %runtime.Allocator }, { i64*, i64, i64, %runtime.Allocator }* %0, i32 0, i32 0, !dbg !771
%24 = load i64*, i64** %23, align 8, !dbg !771
%25 = getelementptr i64, i64* %24, i64 %20, !dbg !771
%26 = load i64, i64* %25, align 8, !dbg !771
store i64 %26, i64* %5, align 8, !dbg !771
%27 = bitcast %..any* %6 to i8*, !dbg !772
call void @llvm.memset.p0i8.i64(i8* %27, i8 0, i64 16, i1 false), !dbg !772
%28 = bitcast i64* %5 to i8*, !dbg !772
%29 = getelementptr inbounds %..any, %..any* %6, i32 0, i32 0, !dbg !772
%30 = getelementptr inbounds %..any, %..any* %6, i32 0, i32 1, !dbg !772
store i8* %28, i8** %29, align 8, !dbg !772
store i64 4683743612465315841, i64* %30, align 8, !dbg !772
%31 = bitcast { %..any*, i64 }* %7 to i8*, !dbg !772
call void @llvm.memset.p0i8.i64(i8* %31, i8 0, i64 16, i1 false), !dbg !772
%32 = getelementptr [1 x %..any], [1 x %..any]* %8, i64 0, i64 0, !dbg !772
%33 = bitcast %..any* %32 to i8*, !dbg !772
%34 = getelementptr i8, i8* %33, i64 16, !dbg !772
call void @llvm.memset.p0i8.i64(i8* align 8 %34, i8 0, i64 0, i1 false), !dbg !772
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %33, i8* align 8 %27, i64 16, i1 false), !dbg !772
%35 = getelementptr inbounds { %..any*, i64 }, { %..any*, i64 }* %7, i32 0, i32 0, !dbg !772
store %..any* %32, %..any** %35, align 8, !dbg !772
%36 = getelementptr inbounds { %..any*, i64 }, { %..any*, i64 }* %7, i32 0, i32 1, !dbg !772
store i64 1, i64* %36, align 8, !dbg !772
%37 = bitcast { %..any*, i64 }* %7 to [2 x i64]*, !dbg !772
%38 = load [2 x i64], [2 x i64]* %37, align 8, !dbg !772
%39 = bitcast [2 x i64]* %9 to %..string*, !dbg !772
store %..string { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"csbs$7a", i64 0, i64 0), i64 1 }, %..string* %39, align 8, !dbg !772
%40 = load [2 x i64], [2 x i64]* %9, align 8, !dbg !772
%41 = call i64 @fmt.println([2 x i64] %38, [2 x i64] %40, i8* %__.context_ptr), !dbg !772
br label %for.index.loop, !dbg !771
defer: ; preds = %for.index.loop
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([43 x i8], [43 x i8]* @"csbs$78", i64 0, i64 0), i64 42 }, i32 6, i32 15, %..string { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"csbs$79", i64 0, i64 0), i64 4 } }, %runtime.Source_Code_Location* %10, align 8, !dbg !774
%42 = call i8 @runtime.delete_dynamic_array-6324({ i64*, i64, i64, %runtime.Allocator }* %0, %runtime.Source_Code_Location* %10, i8* %__.context_ptr), !dbg !774
ret void, !dbg !775
}
define internal void @os.heap_allocator_proc({ { i8*, i64 }, i8 }* noalias sret align 8 %agg.result, i8* %0, i8 %1, i64 %2, i64 %3, i8* %4, i64 %5, %runtime.Source_Code_Location* %6, i8* noalias nocapture nonnull %__.context_ptr) !dbg !777 {
decls:
%7 = alloca { { i8*, i64 }, i8 }, align 8, !dbg !799
%8 = alloca { { i8*, i64 }, i8 }, align 8, !dbg !800
%9 = alloca { { i8*, i64 }, i8 }, align 8, !dbg !803
call void @llvm.dbg.value(metadata i8* %0, metadata !780, metadata !DIExpression()), !dbg !804
call void @llvm.dbg.value(metadata i8 %1, metadata !781, metadata !DIExpression()), !dbg !804
call void @llvm.dbg.value(metadata i64 %2, metadata !782, metadata !DIExpression()), !dbg !804
call void @llvm.dbg.value(metadata i64 %3, metadata !783, metadata !DIExpression()), !dbg !804
call void @llvm.dbg.value(metadata i8* %4, metadata !784, metadata !DIExpression()), !dbg !804
call void @llvm.dbg.value(metadata i64 %5, metadata !785, metadata !DIExpression()), !dbg !804
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !786, metadata !DIExpression()), !dbg !805
switch i8 %1, label %switch.done [
i8 0, label %switch.case.body
i8 1, label %switch.case.body1
i8 2, label %switch.case.body2
i8 3, label %switch.case.body3
i8 4, label %switch.case.body4
i8 5, label %switch.case.body7
], !dbg !806
switch.case.body: ; preds = %decls
%10 = bitcast { { i8*, i64 }, i8 }* %7 to i8*, !dbg !799
call void @llvm.memset.p0i8.i64(i8* %10, i8 0, i64 24, i1 false), !dbg !799
call void @os.heap_allocator_proc.aligned_alloc-0({ { i8*, i64 }, i8 }* sret %7, i64 %2, i64 %3, i8* null, i8* %__.context_ptr), !dbg !799
%11 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %7, i32 0, i32 0, !dbg !799
%12 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %7, i32 0, i32 1, !dbg !799
%13 = load i8, i8* %12, align 1, !dbg !799
%14 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 0, !dbg !799
%15 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 1, !dbg !799
%16 = bitcast { i8*, i64 }* %14 to i8*, !dbg !799
%17 = bitcast { i8*, i64 }* %11 to i8*, !dbg !799
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %16, i8* align 8 %17, i64 16, i1 false), !dbg !799
store i8 %13, i8* %15, align 1, !dbg !799
ret void, !dbg !799
switch.case.body1: ; preds = %decls
call void @os.heap_allocator_proc.aligned_free-1(i8* %4, i8* %__.context_ptr), !dbg !807
br label %switch.done, !dbg !806
switch.case.body2: ; preds = %decls
%18 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 0, !dbg !808
%19 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 1, !dbg !808
%20 = bitcast { i8*, i64 }* %18 to i8*, !dbg !808
call void @llvm.memset.p0i8.i64(i8* align 8 %20, i8 0, i64 16, i1 false), !dbg !808
store i8 4, i8* %19, align 1, !dbg !808
ret void, !dbg !808
switch.case.body3: ; preds = %decls
%21 = icmp eq i8* %4, null, !dbg !809
br i1 %21, label %if.then, label %if.done, !dbg !809
if.then: ; preds = %switch.case.body3
%22 = bitcast { { i8*, i64 }, i8 }* %8 to i8*, !dbg !800
call void @llvm.memset.p0i8.i64(i8* %22, i8 0, i64 24, i1 false), !dbg !800
call void @os.heap_allocator_proc.aligned_alloc-0({ { i8*, i64 }, i8 }* sret %8, i64 %2, i64 %3, i8* null, i8* %__.context_ptr), !dbg !800
%23 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %8, i32 0, i32 0, !dbg !800
%24 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %8, i32 0, i32 1, !dbg !800
%25 = load i8, i8* %24, align 1, !dbg !800
%26 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 0, !dbg !800
%27 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 1, !dbg !800
%28 = bitcast { i8*, i64 }* %26 to i8*, !dbg !800
%29 = bitcast { i8*, i64 }* %23 to i8*, !dbg !800
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %28, i8* align 8 %29, i64 16, i1 false), !dbg !800
store i8 %25, i8* %27, align 1, !dbg !800
ret void, !dbg !800
if.done: ; preds = %switch.case.body3
%30 = bitcast { { i8*, i64 }, i8 }* %9 to i8*, !dbg !803
call void @llvm.memset.p0i8.i64(i8* %30, i8 0, i64 24, i1 false), !dbg !803
call void @os.heap_allocator_proc.aligned_resize-2({ { i8*, i64 }, i8 }* %9, i8* %4, i64 %5, i64 %2, i64 %3, i8* %__.context_ptr), !dbg !803
%31 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %9, i32 0, i32 0, !dbg !803
%32 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %9, i32 0, i32 1, !dbg !803
%33 = load i8, i8* %32, align 1, !dbg !803
%34 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 0, !dbg !803
%35 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 1, !dbg !803
%36 = bitcast { i8*, i64 }* %34 to i8*, !dbg !803
%37 = bitcast { i8*, i64 }* %31 to i8*, !dbg !803
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %36, i8* align 8 %37, i64 16, i1 false), !dbg !803
store i8 %33, i8* %35, align 1, !dbg !803
ret void, !dbg !803
switch.case.body4: ; preds = %decls
call void @llvm.dbg.value(metadata i8* null, metadata !787, metadata !DIExpression()), !dbg !810
call void @llvm.dbg.value(metadata i8* %4, metadata !787, metadata !DIExpression()), !dbg !810
%38 = icmp ne i8* %4, null, !dbg !811
br i1 %38, label %if.then5, label %if.done6, !dbg !811
if.then5: ; preds = %switch.case.body4
store i8 27, i8* %4, align 1, !dbg !812
br label %if.done6, !dbg !811
if.done6: ; preds = %if.then5, %switch.case.body4
%39 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 0, !dbg !815
%40 = bitcast { i8*, i64 }* %39 to i8*, !dbg !815
call void @llvm.memset.p0i8.i64(i8* align 8 %40, i8 0, i64 17, i1 false), !dbg !815
ret void, !dbg !815
switch.case.body7: ; preds = %decls
%41 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 0, !dbg !816
%42 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 1, !dbg !816
%43 = bitcast { i8*, i64 }* %41 to i8*, !dbg !816
call void @llvm.memset.p0i8.i64(i8* align 8 %43, i8 0, i64 16, i1 false), !dbg !816
store i8 4, i8* %42, align 1, !dbg !816
ret void, !dbg !816
switch.done: ; preds = %switch.case.body1, %decls
%44 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 0, !dbg !817
%45 = bitcast { i8*, i64 }* %44 to i8*, !dbg !817
call void @llvm.memset.p0i8.i64(i8* align 8 %45, i8 0, i64 17, i1 false), !dbg !817
ret void, !dbg !817
}
; Function Attrs: nounwind
define internal [2 x i64] @os.heap_allocator(i8* noalias nocapture nonnull %__.context_ptr) #0 !dbg !818 {
decls:
%0 = alloca [2 x i64], align 8, !dbg !823
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !822, metadata !DIExpression()), !dbg !825
%1 = bitcast [2 x i64]* %0 to %runtime.Allocator*, !dbg !823
store %runtime.Allocator { i8* bitcast (void ({ { i8*, i64 }, i8 }*, i8*, i8, i64, i64, i8*, i64, %runtime.Source_Code_Location*, i8*)* @os.heap_allocator_proc to i8*), i8* null }, %runtime.Allocator* %1, align 8, !dbg !823
%2 = load [2 x i64], [2 x i64]* %0, align 8, !dbg !823
ret [2 x i64] %2, !dbg !823
}
; Function Attrs: nounwind
define internal [2 x i64] @strings.string_from_ptr(i8* %0, i64 %1, i8* noalias nocapture nonnull %__.context_ptr) #0 !dbg !826 {
decls:
%2 = alloca %mem.Raw_String, align 8, !dbg !834
call void @llvm.dbg.value(metadata i8* %0, metadata !831, metadata !DIExpression()), !dbg !836
call void @llvm.dbg.value(metadata i64 %1, metadata !832, metadata !DIExpression()), !dbg !836
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !833, metadata !DIExpression()), !dbg !837
%3 = bitcast %mem.Raw_String* %2 to i8*, !dbg !834
call void @llvm.memset.p0i8.i64(i8* align 8 %3, i8 0, i64 16, i1 false), !dbg !834
%4 = getelementptr inbounds %mem.Raw_String, %mem.Raw_String* %2, i32 0, i32 0, !dbg !834
store i8* %0, i8** %4, align 8, !dbg !834
%5 = getelementptr inbounds %mem.Raw_String, %mem.Raw_String* %2, i32 0, i32 1, !dbg !834
store i64 %1, i64* %5, align 8, !dbg !834
%6 = bitcast %mem.Raw_String* %2 to %..string*, !dbg !834
%7 = bitcast %..string* %6 to [2 x i64]*, !dbg !834
%8 = load [2 x i64], [2 x i64]* %7, align 8, !dbg !834
ret [2 x i64] %8, !dbg !834
}
define internal void @time.date({ i64, i64, i64 }* noalias sret %agg.result, i64 %0, i8* noalias nocapture nonnull %__.context_ptr) !dbg !838 {
decls:
%1 = alloca %time.Time, align 8
call void @llvm.dbg.declare(metadata %time.Time* %2, metadata !850, metadata !DIExpression()), !dbg !852
%2 = alloca %time.Time, align 8
%3 = alloca { i64, i64, i64, i64 }, align 8, !dbg !853
%4 = bitcast %time.Time* %1 to i64*
store i64 %0, i64* %4, align 8
%5 = bitcast %time.Time* %2 to i8*
%6 = bitcast %time.Time* %1 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %5, i8* align 8 %6, i64 8, i1 false)
%7 = getelementptr inbounds { i64, i64, i64 }, { i64, i64, i64 }* %agg.result, i32 0, i32 0
%8 = getelementptr inbounds { i64, i64, i64 }, { i64, i64, i64 }* %agg.result, i32 0, i32 1
%9 = getelementptr inbounds { i64, i64, i64 }, { i64, i64, i64 }* %agg.result, i32 0, i32 2
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !851, metadata !DIExpression()), !dbg !855
%10 = bitcast %time.Time* %2 to i64*, !dbg !853
%11 = load i64, i64* %10, align 8, !dbg !853
%12 = call i64 @time._time_abs(i64 %11, i8* %__.context_ptr), !dbg !853
%13 = bitcast { i64, i64, i64, i64 }* %3 to i8*, !dbg !853
call void @llvm.memset.p0i8.i64(i8* %13, i8 0, i64 32, i1 false), !dbg !853
call void @time._abs_date({ i64, i64, i64, i64 }* %3, i64 %12, i1 true, i8* %__.context_ptr), !dbg !853
%14 = getelementptr inbounds { i64, i64, i64, i64 }, { i64, i64, i64, i64 }* %3, i32 0, i32 0, !dbg !853
%15 = load i64, i64* %14, align 8, !dbg !853
%16 = getelementptr inbounds { i64, i64, i64, i64 }, { i64, i64, i64, i64 }* %3, i32 0, i32 1, !dbg !853
%17 = load i64, i64* %16, align 8, !dbg !853
%18 = getelementptr inbounds { i64, i64, i64, i64 }, { i64, i64, i64, i64 }* %3, i32 0, i32 2, !dbg !853
%19 = load i64, i64* %18, align 8, !dbg !853
store i64 %15, i64* %7, align 8, !dbg !853
store i64 %17, i64* %8, align 8, !dbg !853
store i64 %19, i64* %9, align 8, !dbg !853
%20 = load i64, i64* %7, align 8, !dbg !856
%21 = load i64, i64* %8, align 8, !dbg !856
store i64 %19, i64* %9, align 8, !dbg !856
store i64 %20, i64* %7, align 8, !dbg !856
store i64 %21, i64* %8, align 8, !dbg !856
store i64 %19, i64* %9, align 8, !dbg !856
ret void, !dbg !856
}
; Function Attrs: nounwind
define internal void @time.clock({ i64, i64, i64 }* noalias sret %agg.result, i64 %0, i8* noalias nocapture nonnull %__.context_ptr) #0 !dbg !857 {
decls:
%1 = alloca %time.Time, align 8
call void @llvm.dbg.declare(metadata %time.Time* %2, metadata !866, metadata !DIExpression()), !dbg !868
%2 = alloca %time.Time, align 8
%3 = bitcast %time.Time* %1 to i64*
store i64 %0, i64* %3, align 8
%4 = bitcast %time.Time* %2 to i8*
%5 = bitcast %time.Time* %1 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %4, i8* align 8 %5, i64 8, i1 false)
%6 = getelementptr inbounds { i64, i64, i64 }, { i64, i64, i64 }* %agg.result, i32 0, i32 0
%7 = getelementptr inbounds { i64, i64, i64 }, { i64, i64, i64 }* %agg.result, i32 0, i32 1
%8 = getelementptr inbounds { i64, i64, i64 }, { i64, i64, i64 }* %agg.result, i32 0, i32 2
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !867, metadata !DIExpression()), !dbg !869
%9 = bitcast %time.Time* %2 to i64*, !dbg !870
%10 = load i64, i64* %9, align 8, !dbg !870
%11 = call i64 @time._time_abs(i64 %10, i8* %__.context_ptr), !dbg !870
%12 = urem i64 %11, 86400, !dbg !870
store i64 %12, i64* %8, align 8, !dbg !870
%13 = sdiv i64 %12, 3600, !dbg !872
store i64 %13, i64* %6, align 8, !dbg !872
%14 = mul i64 %13, 3600, !dbg !873
%15 = load i64, i64* %8, align 8, !dbg !873
%16 = sub i64 %15, %14, !dbg !873
store i64 %16, i64* %8, align 8, !dbg !873
%17 = sdiv i64 %16, 60, !dbg !874
store i64 %17, i64* %7, align 8, !dbg !874
%18 = mul i64 %17, 60, !dbg !875
%19 = load i64, i64* %8, align 8, !dbg !875
%20 = sub i64 %19, %18, !dbg !875
store i64 %20, i64* %8, align 8, !dbg !875
%21 = load i64, i64* %6, align 8, !dbg !876
%22 = load i64, i64* %7, align 8, !dbg !876
store i64 %20, i64* %8, align 8, !dbg !876
store i64 %21, i64* %6, align 8, !dbg !876
store i64 %22, i64* %7, align 8, !dbg !876
store i64 %20, i64* %8, align 8, !dbg !876
ret void, !dbg !876
}
; Function Attrs: nounwind
define internal i8 @time._is_leap_year(i64 %0, i8* noalias nocapture nonnull %__.context_ptr) #0 !dbg !877 {
decls:
call void @llvm.dbg.value(metadata i64 %0, metadata !881, metadata !DIExpression()), !dbg !883
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !882, metadata !DIExpression()), !dbg !884
%1 = srem i64 %0, 4, !dbg !885
%2 = icmp eq i64 %1, 0, !dbg !885
br i1 %2, label %logical.cmp.rhs, label %logical.cmp.done2, !dbg !885
logical.cmp.rhs: ; preds = %decls
%3 = srem i64 %0, 100, !dbg !885
%4 = icmp ne i64 %3, 0, !dbg !885
br i1 %4, label %logical.cmp.done2, label %logical.cmp.rhs1, !dbg !885
logical.cmp.rhs1: ; preds = %logical.cmp.rhs
%5 = srem i64 %0, 400, !dbg !885
%6 = icmp eq i64 %5, 0, !dbg !885
%7 = zext i1 %6 to i8, !dbg !885
br label %logical.cmp.done2, !dbg !885
logical.cmp.done2: ; preds = %logical.cmp.rhs, %logical.cmp.rhs1, %decls
%8 = phi i8 [ 0, %decls ], [ 1, %logical.cmp.rhs ], [ %7, %logical.cmp.rhs1 ], !dbg !885
ret i8 %8, !dbg !885
}
; Function Attrs: nounwind
define internal i64 @time._time_abs(i64 %0, i8* noalias nocapture nonnull %__.context_ptr) #0 !dbg !887 {
decls:
%1 = alloca %time.Time, align 8
call void @llvm.dbg.declare(metadata %time.Time* %2, metadata !891, metadata !DIExpression()), !dbg !893
%2 = alloca %time.Time, align 8
%3 = bitcast %time.Time* %1 to i64*
store i64 %0, i64* %3, align 8
%4 = bitcast %time.Time* %2 to i8*
%5 = bitcast %time.Time* %1 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %4, i8* align 8 %5, i64 8, i1 false)
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !892, metadata !DIExpression()), !dbg !894
%6 = getelementptr inbounds %time.Time, %time.Time* %2, i32 0, i32 0, !dbg !895
%7 = load i64, i64* %6, align 8, !dbg !895
%8 = sdiv i64 %7, 1000000000, !dbg !895
%9 = add i64 %8, 9223372028715321600, !dbg !895
ret i64 %9, !dbg !895
}
define internal void @time._abs_date({ i64, i64, i64, i64 }* noalias sret %agg.result, i64 %0, i1 zeroext %1, i8* noalias nocapture nonnull %__.context_ptr) !dbg !897 {
decls:
%2 = alloca [2 x i64], align 8, !dbg !913
%3 = alloca [2 x i64], align 8, !dbg !914
call void @llvm.dbg.value(metadata i64 %0, metadata !904, metadata !DIExpression()), !dbg !917
call void @llvm.dbg.value(metadata i8 undef, metadata !905, metadata !DIExpression()), !dbg !917
%4 = getelementptr inbounds { i64, i64, i64, i64 }, { i64, i64, i64, i64 }* %agg.result, i32 0, i32 0
%5 = getelementptr inbounds { i64, i64, i64, i64 }, { i64, i64, i64, i64 }* %agg.result, i32 0, i32 1
%6 = getelementptr inbounds { i64, i64, i64, i64 }, { i64, i64, i64, i64 }* %agg.result, i32 0, i32 2
%7 = getelementptr inbounds { i64, i64, i64, i64 }, { i64, i64, i64, i64 }* %agg.result, i32 0, i32 3
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !906, metadata !DIExpression()), !dbg !918
call void @llvm.dbg.value(metadata i64 0, metadata !907, metadata !DIExpression()), !dbg !919
%8 = udiv i64 %0, 86400, !dbg !920
call void @llvm.dbg.value(metadata i64 %8, metadata !907, metadata !DIExpression()), !dbg !919
call void @llvm.dbg.value(metadata i64 0, metadata !909, metadata !DIExpression()), !dbg !919
%9 = udiv i64 %8, 146097, !dbg !921
call void @llvm.dbg.value(metadata i64 %9, metadata !909, metadata !DIExpression()), !dbg !919
call void @llvm.dbg.value(metadata i64 0, metadata !910, metadata !DIExpression()), !dbg !919
%10 = mul i64 400, %9, !dbg !922
call void @llvm.dbg.value(metadata i64 %10, metadata !910, metadata !DIExpression()), !dbg !919
%11 = mul i64 146097, %9, !dbg !923
%12 = sub i64 %8, %11, !dbg !923
call void @llvm.dbg.value(metadata i64 %12, metadata !907, metadata !DIExpression()), !dbg !919
%13 = udiv i64 %12, 36524, !dbg !924
call void @llvm.dbg.value(metadata i64 %13, metadata !909, metadata !DIExpression()), !dbg !919
%14 = lshr i64 %13, 2, !dbg !925
%15 = sub i64 %13, %14, !dbg !925
call void @llvm.dbg.value(metadata i64 %15, metadata !909, metadata !DIExpression()), !dbg !919
%16 = mul i64 100, %15, !dbg !926
%17 = add i64 %10, %16, !dbg !926
call void @llvm.dbg.value(metadata i64 %17, metadata !910, metadata !DIExpression()), !dbg !919
%18 = mul i64 36524, %15, !dbg !927
%19 = sub i64 %12, %18, !dbg !927
call void @llvm.dbg.value(metadata i64 %19, metadata !907, metadata !DIExpression()), !dbg !919
%20 = udiv i64 %19, 1461, !dbg !928
call void @llvm.dbg.value(metadata i64 %20, metadata !909, metadata !DIExpression()), !dbg !919
%21 = mul i64 4, %20, !dbg !929
%22 = add i64 %17, %21, !dbg !929
call void @llvm.dbg.value(metadata i64 %22, metadata !910, metadata !DIExpression()), !dbg !919
%23 = mul i64 1461, %20, !dbg !930
%24 = sub i64 %19, %23, !dbg !930
call void @llvm.dbg.value(metadata i64 %24, metadata !907, metadata !DIExpression()), !dbg !919
%25 = udiv i64 %24, 365, !dbg !931
call void @llvm.dbg.value(metadata i64 %25, metadata !909, metadata !DIExpression()), !dbg !919
%26 = lshr i64 %25, 2, !dbg !932
%27 = sub i64 %25, %26, !dbg !932
call void @llvm.dbg.value(metadata i64 %27, metadata !909, metadata !DIExpression()), !dbg !919
%28 = add i64 %22, %27, !dbg !933
call void @llvm.dbg.value(metadata i64 %28, metadata !910, metadata !DIExpression()), !dbg !919
%29 = mul i64 365, %27, !dbg !934
%30 = sub i64 %24, %29, !dbg !934
call void @llvm.dbg.value(metadata i64 %30, metadata !907, metadata !DIExpression()), !dbg !919
%31 = add i64 %28, -292277022399, !dbg !935
store i64 %31, i64* %4, align 8, !dbg !935
store i64 %30, i64* %7, align 8, !dbg !936
br i1 %1, label %if.done, label %if.then, !dbg !937
if.then: ; preds = %decls
%32 = load i64, i64* %4, align 8, !dbg !938
%33 = load i64, i64* %5, align 8, !dbg !938
%34 = load i64, i64* %6, align 8, !dbg !938
store i64 %30, i64* %7, align 8, !dbg !938
store i64 %32, i64* %4, align 8, !dbg !938
store i64 %33, i64* %5, align 8, !dbg !938
store i64 %34, i64* %6, align 8, !dbg !938
store i64 %30, i64* %7, align 8, !dbg !938
ret void, !dbg !938
if.done: ; preds = %decls
store i64 %30, i64* %6, align 8, !dbg !941
%35 = load i64, i64* %4, align 8, !dbg !942
%36 = call i8 @time._is_leap_year(i64 %35, i8* %__.context_ptr), !dbg !942
%37 = trunc i8 %36 to i1, !dbg !942
br i1 %37, label %if.then1, label %if.done4, !dbg !942
if.then1: ; preds = %if.done
%38 = load i64, i64* %6, align 8, !dbg !943
%39 = icmp sgt i64 %38, 59, !dbg !943
br i1 %39, label %switch.case.body, label %switch.case.next, !dbg !943
switch.case.next: ; preds = %if.then1
%40 = icmp eq i64 %38, 59, !dbg !943
br i1 %40, label %switch.case.body3, label %if.done4, !dbg !943
switch.case.body: ; preds = %if.then1
%41 = sub i64 %38, 1, !dbg !946
store i64 %41, i64* %6, align 8, !dbg !946
br label %if.done4, !dbg !943
switch.case.body3: ; preds = %switch.case.next
store i64 2, i64* %5, align 8, !dbg !948
store i64 29, i64* %6, align 8, !dbg !949
%42 = load i64, i64* %4, align 8, !dbg !950
%43 = load i64, i64* %5, align 8, !dbg !950
%44 = load i64, i64* %7, align 8, !dbg !950
store i64 29, i64* %6, align 8, !dbg !950
store i64 %44, i64* %7, align 8, !dbg !950
store i64 %42, i64* %4, align 8, !dbg !950
store i64 %43, i64* %5, align 8, !dbg !950
store i64 29, i64* %6, align 8, !dbg !950
store i64 %44, i64* %7, align 8, !dbg !950
ret void, !dbg !950
if.done4: ; preds = %switch.case.body, %switch.case.next, %if.done
%45 = load i64, i64* %6, align 8, !dbg !951
%46 = sdiv i64 %45, 31, !dbg !951
store i64 %46, i64* %5, align 8, !dbg !951
call void @llvm.dbg.value(metadata i64 0, metadata !911, metadata !DIExpression()), !dbg !919
%47 = add i64 %46, 1, !dbg !913
%48 = getelementptr [13 x i32], [13 x i32]* @time.days_before, i64 0, i64 %47, !dbg !913
%49 = bitcast [2 x i64]* %2 to %..string*, !dbg !913
store %..string { i8* getelementptr inbounds ([48 x i8], [48 x i8]* @"csbs$74", i64 0, i64 0), i64 47 }, %..string* %49, align 8, !dbg !913
%50 = load [2 x i64], [2 x i64]* %2, align 8, !dbg !913
call void @runtime.bounds_check_error([2 x i64] %50, i32 244, i32 25, i64 %47, i64 13), !dbg !913
%51 = load i32, i32* %48, align 4, !dbg !913
%52 = sext i32 %51 to i64, !dbg !913
call void @llvm.dbg.value(metadata i64 %52, metadata !911, metadata !DIExpression()), !dbg !919
call void @llvm.dbg.value(metadata i64 0, metadata !912, metadata !DIExpression()), !dbg !919
%53 = load i64, i64* %6, align 8, !dbg !952
%54 = icmp sge i64 %53, %52, !dbg !952
%55 = load i64, i64* %5, align 8, !dbg !953
br i1 %54, label %if.then5, label %if.else, !dbg !952
if.then5: ; preds = %if.done4
%56 = add i64 %55, 1, !dbg !954
store i64 %56, i64* %5, align 8, !dbg !954
call void @llvm.dbg.value(metadata i64 %52, metadata !912, metadata !DIExpression()), !dbg !919
br label %if.done6, !dbg !952
if.else: ; preds = %if.done4
%57 = getelementptr [13 x i32], [13 x i32]* @time.days_before, i64 0, i64 %55, !dbg !914
%58 = bitcast [2 x i64]* %3 to %..string*, !dbg !914
store %..string { i8* getelementptr inbounds ([48 x i8], [48 x i8]* @"csbs$74", i64 0, i64 0), i64 47 }, %..string* %58, align 8, !dbg !914
%59 = load [2 x i64], [2 x i64]* %3, align 8, !dbg !914
call void @runtime.bounds_check_error([2 x i64] %59, i32 250, i32 27, i64 %55, i64 13), !dbg !914
%60 = load i32, i32* %57, align 4, !dbg !914
%61 = sext i32 %60 to i64, !dbg !914
call void @llvm.dbg.value(metadata i64 %61, metadata !912, metadata !DIExpression()), !dbg !919
br label %if.done6, !dbg !952
if.done6: ; preds = %if.else, %if.then5
%.0 = phi i64 [ %52, %if.then5 ], [ %61, %if.else ], !dbg !953
call void @llvm.dbg.value(metadata i64 %.0, metadata !912, metadata !DIExpression()), !dbg !919
%62 = load i64, i64* %5, align 8, !dbg !956
%63 = add i64 %62, 1, !dbg !956
store i64 %63, i64* %5, align 8, !dbg !956
%64 = load i64, i64* %6, align 8, !dbg !957
%65 = sub i64 %64, %.0, !dbg !957
%66 = add i64 %65, 1, !dbg !957
store i64 %66, i64* %6, align 8, !dbg !957
%67 = load i64, i64* %4, align 8, !dbg !958
%68 = load i64, i64* %5, align 8, !dbg !958
%69 = load i64, i64* %7, align 8, !dbg !958
store i64 %66, i64* %6, align 8, !dbg !958
store i64 %69, i64* %7, align 8, !dbg !958
store i64 %67, i64* %4, align 8, !dbg !958
store i64 %68, i64* %5, align 8, !dbg !958
store i64 %66, i64* %6, align 8, !dbg !958
store i64 %69, i64* %7, align 8, !dbg !958
ret void, !dbg !958
}
; Function Attrs: nounwind
define dso_local %runtime.Type_Info* @runtime.type_info_base(%runtime.Type_Info* %0) #0 !dbg !959 {
decls:
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Named* %1, metadata !966, metadata !DIExpression()), !dbg !970
%1 = alloca %runtime.Type_Info_Named, align 8, !dbg !971
call void @llvm.dbg.value(metadata %runtime.Type_Info* %0, metadata !963, metadata !DIExpression()), !dbg !972
%2 = icmp eq %runtime.Type_Info* %0, null, !dbg !973
br i1 %2, label %if.then, label %for.body, !dbg !973
if.then: ; preds = %for.body, %decls
%merge = phi %runtime.Type_Info* [ null, %decls ], [ %.0, %for.body ]
ret %runtime.Type_Info* %merge, !dbg !974
for.body: ; preds = %decls, %typeswitch.body
%.0 = phi %runtime.Type_Info* [ %9, %typeswitch.body ], [ %0, %decls ], !dbg !977
call void @llvm.dbg.value(metadata %runtime.Type_Info* %.0, metadata !964, metadata !DIExpression()), !dbg !977
%3 = getelementptr inbounds %runtime.Type_Info, %runtime.Type_Info* %.0, i32 0, i32 4, !dbg !971
%4 = bitcast { [0 x i64], [120 x i8], i64 }* %3 to i8*, !dbg !971
%5 = getelementptr inbounds { [0 x i64], [120 x i8], i64 }, { [0 x i64], [120 x i8], i64 }* %3, i32 0, i32 2, !dbg !971
%6 = load i64, i64* %5, align 8, !dbg !971
%cond = icmp eq i64 %6, 1, !dbg !971
br i1 %cond, label %typeswitch.body, label %if.then, !dbg !971
typeswitch.body: ; preds = %for.body
%7 = bitcast %runtime.Type_Info_Named* %1 to i8*, !dbg !971
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %7, i8* align 8 %4, i64 80, i1 false), !dbg !971
%8 = getelementptr inbounds %runtime.Type_Info_Named, %runtime.Type_Info_Named* %1, i32 0, i32 1, !dbg !978
%9 = load %runtime.Type_Info*, %runtime.Type_Info** %8, align 8, !dbg !978
call void @llvm.dbg.value(metadata %runtime.Type_Info* %9, metadata !964, metadata !DIExpression()), !dbg !977
br label %for.body, !dbg !979
}
; Function Attrs: nounwind
define dso_local %runtime.Type_Info* @runtime.type_info_core(%runtime.Type_Info* %0) #0 !dbg !980 {
decls:
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Named* %1, metadata !985, metadata !DIExpression()), !dbg !990
%1 = alloca %runtime.Type_Info_Named, align 8, !dbg !991
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Enum* %2, metadata !988, metadata !DIExpression()), !dbg !990
%2 = alloca %runtime.Type_Info_Enum, align 8, !dbg !991
call void @llvm.dbg.value(metadata %runtime.Type_Info* %0, metadata !982, metadata !DIExpression()), !dbg !992
%3 = icmp eq %runtime.Type_Info* %0, null, !dbg !993
br i1 %3, label %if.then, label %for.body, !dbg !993
if.then: ; preds = %for.body, %decls
%merge = phi %runtime.Type_Info* [ null, %decls ], [ %.0, %for.body ]
ret %runtime.Type_Info* %merge, !dbg !994
for.body: ; preds = %decls, %typeswitch.done
%.0 = phi %runtime.Type_Info* [ %.1, %typeswitch.done ], [ %0, %decls ], !dbg !997
call void @llvm.dbg.value(metadata %runtime.Type_Info* %.0, metadata !983, metadata !DIExpression()), !dbg !997
%4 = getelementptr inbounds %runtime.Type_Info, %runtime.Type_Info* %.0, i32 0, i32 4, !dbg !991
%5 = bitcast { [0 x i64], [120 x i8], i64 }* %4 to i8*, !dbg !991
%6 = getelementptr inbounds { [0 x i64], [120 x i8], i64 }, { [0 x i64], [120 x i8], i64 }* %4, i32 0, i32 2, !dbg !991
%7 = load i64, i64* %6, align 8, !dbg !991
switch i64 %7, label %if.then [
i64 1, label %typeswitch.body
i64 21, label %typeswitch.body1
], !dbg !991
typeswitch.body: ; preds = %for.body
%8 = bitcast %runtime.Type_Info_Named* %1 to i8*, !dbg !991
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %8, i8* align 8 %5, i64 80, i1 false), !dbg !991
%9 = getelementptr inbounds %runtime.Type_Info_Named, %runtime.Type_Info_Named* %1, i32 0, i32 1, !dbg !998
%10 = load %runtime.Type_Info*, %runtime.Type_Info** %9, align 8, !dbg !998
call void @llvm.dbg.value(metadata %runtime.Type_Info* %10, metadata !983, metadata !DIExpression()), !dbg !997
br label %typeswitch.done, !dbg !991
typeswitch.body1: ; preds = %for.body
%11 = bitcast %runtime.Type_Info_Enum* %2 to i8*, !dbg !991
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %11, i8* align 8 %5, i64 40, i1 false), !dbg !991
%12 = getelementptr inbounds %runtime.Type_Info_Enum, %runtime.Type_Info_Enum* %2, i32 0, i32 0, !dbg !999
%13 = load %runtime.Type_Info*, %runtime.Type_Info** %12, align 8, !dbg !999
call void @llvm.dbg.value(metadata %runtime.Type_Info* %13, metadata !983, metadata !DIExpression()), !dbg !997
br label %typeswitch.done, !dbg !991
typeswitch.done: ; preds = %typeswitch.body1, %typeswitch.body
%.1 = phi %runtime.Type_Info* [ %13, %typeswitch.body1 ], [ %10, %typeswitch.body ], !dbg !1000
call void @llvm.dbg.value(metadata %runtime.Type_Info* %.1, metadata !983, metadata !DIExpression()), !dbg !997
br label %for.body, !dbg !1001
}
; Function Attrs: nounwind
define dso_local %runtime.Type_Info* @runtime.__type_info_of(i64 %0) #0 !dbg !1002 {
decls:
call void @llvm.dbg.value(metadata i64 %0, metadata !1006, metadata !DIExpression()), !dbg !1010
call void @llvm.dbg.value(metadata i64 %0, metadata !1007, metadata !DIExpression()), !dbg !1011
call void @llvm.dbg.value(metadata i64 0, metadata !1009, metadata !DIExpression()), !dbg !1011
%1 = and i64 %0, 72057594037927935, !dbg !1012
call void @llvm.dbg.value(metadata i64 %1, metadata !1009, metadata !DIExpression()), !dbg !1011
%2 = load i64, i64* getelementptr inbounds ({ %runtime.Type_Info*, i64 }, { %runtime.Type_Info*, i64 }* @runtime.type_table, i64 0, i32 1), align 8, !dbg !1013
%3 = icmp sge i64 %1, %2, !dbg !1013
%.0 = select i1 %3, i64 0, i64 %1, !dbg !1013
call void @llvm.dbg.value(metadata i64 %.0, metadata !1009, metadata !DIExpression()), !dbg !1011
%4 = load %runtime.Type_Info*, %runtime.Type_Info** getelementptr inbounds ({ %runtime.Type_Info*, i64 }, { %runtime.Type_Info*, i64 }* @runtime.type_table, i64 0, i32 0), align 8, !dbg !1014
%5 = getelementptr %runtime.Type_Info, %runtime.Type_Info* %4, i64 %.0, !dbg !1014
ret %runtime.Type_Info* %5, !dbg !1014
}
; Function Attrs: nounwind
define dso_local i64 @runtime.typeid_base(i64 %0) #0 !dbg !1015 {
decls:
call void @llvm.dbg.value(metadata i64 %0, metadata !1019, metadata !DIExpression()), !dbg !1022
call void @llvm.dbg.value(metadata %runtime.Type_Info* null, metadata !1020, metadata !DIExpression()), !dbg !1023
%1 = call %runtime.Type_Info* @runtime.__type_info_of(i64 %0), !dbg !1024
call void @llvm.dbg.value(metadata %runtime.Type_Info* %1, metadata !1020, metadata !DIExpression()), !dbg !1023
%2 = call %runtime.Type_Info* @runtime.type_info_base(%runtime.Type_Info* %1), !dbg !1025
call void @llvm.dbg.value(metadata %runtime.Type_Info* %2, metadata !1020, metadata !DIExpression()), !dbg !1023
%3 = getelementptr inbounds %runtime.Type_Info, %runtime.Type_Info* %2, i32 0, i32 3, !dbg !1026
%4 = load i64, i64* %3, align 8, !dbg !1026
ret i64 %4, !dbg !1026
}
; Function Attrs: nounwind
define dso_local void @runtime.default_logger_proc(i8* %0, i64 %1, [2 x i64] %2, i16 %3, %runtime.Source_Code_Location* %4, i8* noalias nocapture nonnull %__.context_ptr) #0 !dbg !1027 {
decls:
%5 = alloca %..string, align 8
call void @llvm.dbg.declare(metadata %..string* %6, metadata !1031, metadata !DIExpression()), !dbg !1034
%6 = alloca %..string, align 8
call void @llvm.dbg.value(metadata i8* %0, metadata !1029, metadata !DIExpression()), !dbg !1035
call void @llvm.dbg.value(metadata i64 %1, metadata !1030, metadata !DIExpression()), !dbg !1035
%7 = bitcast %..string* %5 to [2 x i64]*
store [2 x i64] %2, [2 x i64]* %7, align 8
%8 = bitcast %..string* %6 to i8*
%9 = bitcast %..string* %5 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %8, i8* align 8 %9, i64 16, i1 false)
call void @llvm.dbg.value(metadata i16 %3, metadata !1032, metadata !DIExpression()), !dbg !1035
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !1033, metadata !DIExpression()), !dbg !1036
ret void, !dbg !1036
}
; Function Attrs: nounwind
define dso_local void @runtime.default_context(%runtime.Context* noalias sret %agg.result) #0 !dbg !1037 {
decls:
call void @llvm.dbg.declare(metadata %runtime.Context* %0, metadata !1041, metadata !DIExpression()), !dbg !1043
%0 = alloca %runtime.Context, align 8, !dbg !1043
%1 = bitcast %runtime.Context* %0 to i8*, !dbg !1043
call void @llvm.memset.p0i8.i64(i8* %1, i8 0, i64 112, i1 false), !dbg !1043
call void @runtime.__init_context-547(%runtime.Context* %0), !dbg !1044
%2 = bitcast %runtime.Context* %agg.result to i8*, !dbg !1045
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %2, i8* align 8 %1, i64 112, i1 false), !dbg !1045
ret void, !dbg !1045
}
; Function Attrs: nounwind
define dso_local void @runtime.__init_context-547(%runtime.Context* %0) #0 !dbg !1046 {
decls:
call void @llvm.dbg.value(metadata %runtime.Context* %0, metadata !1051, metadata !DIExpression()), !dbg !1052
%1 = icmp eq %runtime.Context* %0, null, !dbg !1053
br i1 %1, label %if.then, label %if.done, !dbg !1053
if.then: ; preds = %decls
ret void, !dbg !1055
if.done: ; preds = %decls
%2 = getelementptr inbounds %runtime.Context, %runtime.Context* %0, i32 0, i32 0, !dbg !1058
%3 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %2, i32 0, i32 0, !dbg !1058
store i8* bitcast (void ({ { i8*, i64 }, i8 }*, i8*, i8, i64, i64, i8*, i64, %runtime.Source_Code_Location*, i8*)* @os.heap_allocator_proc to i8*), i8** %3, align 8, !dbg !1058
%4 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %2, i32 0, i32 1, !dbg !1059
store i8* null, i8** %4, align 8, !dbg !1059
%5 = getelementptr inbounds %runtime.Context, %runtime.Context* %0, i32 0, i32 1, !dbg !1060
%6 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %5, i32 0, i32 0, !dbg !1060
store i8* bitcast (void ({ { i8*, i64 }, i8 }*, i8*, i8, i64, i64, i8*, i64, %runtime.Source_Code_Location*, i8*)* @runtime.default_temp_allocator_proc to i8*), i8** %6, align 8, !dbg !1060
%7 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %5, i32 0, i32 1, !dbg !1061
store i8* bitcast (%runtime.Default_Temp_Allocator* @runtime.global_default_temp_allocator_data to i8*), i8** %7, align 8, !dbg !1061
%8 = getelementptr inbounds %runtime.Context, %runtime.Context* %0, i32 0, i32 2, !dbg !1062
store void ([2 x i64], [2 x i64], %runtime.Source_Code_Location*, i8*)* @runtime.default_assertion_failure_proc, void ([2 x i64], [2 x i64], %runtime.Source_Code_Location*, i8*)** %8, align 8, !dbg !1062
%9 = getelementptr inbounds %runtime.Context, %runtime.Context* %0, i32 0, i32 3, !dbg !1063
%10 = getelementptr inbounds %runtime.Logger, %runtime.Logger* %9, i32 0, i32 0, !dbg !1063
store void (i8*, i64, [2 x i64], i16, %runtime.Source_Code_Location*, i8*)* @runtime.default_logger_proc, void (i8*, i64, [2 x i64], i16, %runtime.Source_Code_Location*, i8*)** %10, align 8, !dbg !1063
%11 = getelementptr inbounds %runtime.Logger, %runtime.Logger* %9, i32 0, i32 1, !dbg !1064
store i8* null, i8** %11, align 8, !dbg !1064
ret void, !dbg !1065
}
; Function Attrs: noreturn
define dso_local void @runtime.default_assertion_failure_proc([2 x i64] %0, [2 x i64] %1, %runtime.Source_Code_Location* %2, i8* noalias nocapture nonnull %__.context_ptr) #1 !dbg !1066 {
decls:
%3 = alloca %..string, align 8
call void @llvm.dbg.declare(metadata %..string* %4, metadata !1068, metadata !DIExpression()), !dbg !1071
%4 = alloca %..string, align 8
%5 = alloca %..string, align 8
call void @llvm.dbg.declare(metadata %..string* %6, metadata !1069, metadata !DIExpression()), !dbg !1072
%6 = alloca %..string, align 8
%7 = alloca [2 x i64], align 8, !dbg !1073
%8 = alloca { i64, i64 }, align 8, !dbg !1073
%9 = alloca { i64, i64 }, align 8, !dbg !1075
%10 = alloca [2 x i64], align 8, !dbg !1076
%11 = alloca { i64, i64 }, align 8, !dbg !1076
%12 = alloca { i64, i64 }, align 8, !dbg !1079
%13 = alloca { i64, i64 }, align 8, !dbg !1080
%14 = bitcast %..string* %3 to [2 x i64]*
store [2 x i64] %0, [2 x i64]* %14, align 8
%15 = bitcast %..string* %4 to i8*
%16 = bitcast %..string* %3 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %15, i8* align 8 %16, i64 16, i1 false)
%17 = bitcast %..string* %5 to [2 x i64]*
store [2 x i64] %1, [2 x i64]* %17, align 8
%18 = bitcast %..string* %6 to i8*
%19 = bitcast %..string* %5 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %18, i8* align 8 %19, i64 16, i1 false)
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !1070, metadata !DIExpression()), !dbg !1081
call void @runtime.print_caller_location(%runtime.Source_Code_Location* %2), !dbg !1082
%20 = bitcast [2 x i64]* %7 to %..string*, !dbg !1073
store %..string { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"csbs$7a", i64 0, i64 0), i64 1 }, %..string* %20, align 8, !dbg !1073
%21 = load [2 x i64], [2 x i64]* %7, align 8, !dbg !1073
%22 = call [2 x i64] @runtime.print_string([2 x i64] %21), !dbg !1073
%23 = bitcast { i64, i64 }* %8 to [2 x i64]*, !dbg !1073
store [2 x i64] %22, [2 x i64]* %23, align 8, !dbg !1073
%24 = bitcast %..string* %4 to [2 x i64]*, !dbg !1075
%25 = load [2 x i64], [2 x i64]* %24, align 8, !dbg !1075
%26 = call [2 x i64] @runtime.print_string([2 x i64] %25), !dbg !1075
%27 = bitcast { i64, i64 }* %9 to [2 x i64]*, !dbg !1075
store [2 x i64] %26, [2 x i64]* %27, align 8, !dbg !1075
%28 = getelementptr inbounds %..string, %..string* %6, i32 0, i32 1, !dbg !1083
%29 = load i64, i64* %28, align 8, !dbg !1083
%30 = icmp sgt i64 %29, 0, !dbg !1083
br i1 %30, label %if.then, label %if.done, !dbg !1083
if.then: ; preds = %decls
%31 = bitcast [2 x i64]* %10 to %..string*, !dbg !1076
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$7b", i64 0, i64 0), i64 2 }, %..string* %31, align 8, !dbg !1076
%32 = load [2 x i64], [2 x i64]* %10, align 8, !dbg !1076
%33 = call [2 x i64] @runtime.print_string([2 x i64] %32), !dbg !1076
%34 = bitcast { i64, i64 }* %11 to [2 x i64]*, !dbg !1076
store [2 x i64] %33, [2 x i64]* %34, align 8, !dbg !1076
%35 = bitcast %..string* %6 to [2 x i64]*, !dbg !1079
%36 = load [2 x i64], [2 x i64]* %35, align 8, !dbg !1079
%37 = call [2 x i64] @runtime.print_string([2 x i64] %36), !dbg !1079
%38 = bitcast { i64, i64 }* %12 to [2 x i64]*, !dbg !1079
store [2 x i64] %37, [2 x i64]* %38, align 8, !dbg !1079
br label %if.done, !dbg !1083
if.done: ; preds = %if.then, %decls
%39 = call [2 x i64] @runtime.print_byte(i8 10), !dbg !1080
%40 = bitcast { i64, i64 }* %13 to [2 x i64]*, !dbg !1080
store [2 x i64] %39, [2 x i64]* %40, align 8, !dbg !1080
call void @llvm.trap(), !dbg !1084
unreachable, !dbg !1081
}
; Function Attrs: nounwind
define internal [2 x i64] @utf8.encode_rune(i32 %0, i8* noalias nocapture nonnull %__.context_ptr) #0 !dbg !1085 {
decls:
call void @llvm.dbg.declare(metadata [4 x i8]* %1, metadata !1100, metadata !DIExpression()), !dbg !1102
%1 = alloca [4 x i8], align 1, !dbg !1102
%2 = alloca { [4 x i8], i64 }, align 8, !dbg !1103
%3 = alloca { [4 x i8], i64 }, align 8, !dbg !1106
%4 = alloca { [4 x i8], i64 }, align 8, !dbg !1109
%5 = alloca { [4 x i8], i64 }, align 8, !dbg !1112
call void @llvm.dbg.value(metadata i32 %0, metadata !1096, metadata !DIExpression()), !dbg !1113
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !1097, metadata !DIExpression()), !dbg !1114
call void @llvm.dbg.value(metadata i32 %0, metadata !1098, metadata !DIExpression()), !dbg !1115
%6 = bitcast [4 x i8]* %1 to i8*, !dbg !1102
call void @llvm.memset.p0i8.i64(i8* %6, i8 0, i64 4, i1 false), !dbg !1102
call void @llvm.dbg.value(metadata i32 %0, metadata !1101, metadata !DIExpression()), !dbg !1115
%7 = icmp ule i32 %0, 127, !dbg !1116
br i1 %7, label %if.then, label %if.done, !dbg !1116
if.then: ; preds = %decls
%8 = getelementptr [4 x i8], [4 x i8]* %1, i64 0, i64 0, !dbg !1117
%9 = trunc i32 %0 to i8, !dbg !1117
store i8 %9, i8* %8, align 1, !dbg !1117
%10 = getelementptr inbounds { [4 x i8], i64 }, { [4 x i8], i64 }* %2, i32 0, i32 0, !dbg !1103
%11 = getelementptr inbounds { [4 x i8], i64 }, { [4 x i8], i64 }* %2, i32 0, i32 1, !dbg !1103
%12 = bitcast [4 x i8]* %10 to i8*, !dbg !1103
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %12, i8* align 1 %6, i64 4, i1 false), !dbg !1103
store i64 1, i64* %11, align 8, !dbg !1103
%13 = bitcast { [4 x i8], i64 }* %2 to [2 x i64]*, !dbg !1103
%14 = load [2 x i64], [2 x i64]* %13, align 8, !dbg !1103
ret [2 x i64] %14, !dbg !1103
if.done: ; preds = %decls
%15 = icmp ule i32 %0, 2047, !dbg !1118
br i1 %15, label %if.then1, label %if.done2, !dbg !1118
if.then1: ; preds = %if.done
%16 = getelementptr [4 x i8], [4 x i8]* %1, i64 0, i64 0, !dbg !1119
%17 = ashr i32 %0, 6, !dbg !1119
%18 = trunc i32 %17 to i8, !dbg !1119
%19 = or i8 -64, %18, !dbg !1119
store i8 %19, i8* %16, align 1, !dbg !1119
%20 = getelementptr [4 x i8], [4 x i8]* %1, i64 0, i64 1, !dbg !1120
%21 = trunc i32 %0 to i8, !dbg !1120
%22 = and i8 %21, 63, !dbg !1120
%23 = or i8 -128, %22, !dbg !1120
store i8 %23, i8* %20, align 1, !dbg !1120
%24 = getelementptr inbounds { [4 x i8], i64 }, { [4 x i8], i64 }* %3, i32 0, i32 0, !dbg !1106
%25 = getelementptr inbounds { [4 x i8], i64 }, { [4 x i8], i64 }* %3, i32 0, i32 1, !dbg !1106
%26 = bitcast [4 x i8]* %24 to i8*, !dbg !1106
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %26, i8* align 1 %6, i64 4, i1 false), !dbg !1106
store i64 2, i64* %25, align 8, !dbg !1106
%27 = bitcast { [4 x i8], i64 }* %3 to [2 x i64]*, !dbg !1106
%28 = load [2 x i64], [2 x i64]* %27, align 8, !dbg !1106
ret [2 x i64] %28, !dbg !1106
if.done2: ; preds = %if.done
%29 = icmp ugt i32 %0, 1114111, !dbg !1121
br i1 %29, label %if.then3, label %cmp.or, !dbg !1121
cmp.or: ; preds = %if.done2
%30 = icmp ule i32 55296, %0, !dbg !1121
br i1 %30, label %cmp.and, label %if.done4, !dbg !1121
cmp.and: ; preds = %cmp.or
%31 = icmp ule i32 %0, 57343, !dbg !1121
br i1 %31, label %if.then3, label %if.done4, !dbg !1121
if.then3: ; preds = %cmp.and, %if.done2
call void @llvm.dbg.value(metadata i32 65533, metadata !1098, metadata !DIExpression()), !dbg !1115
br label %if.done4, !dbg !1121
if.done4: ; preds = %if.then3, %cmp.and, %cmp.or
%.0 = phi i32 [ 65533, %if.then3 ], [ %0, %cmp.and ], [ %0, %cmp.or ], !dbg !1115
call void @llvm.dbg.value(metadata i32 %.0, metadata !1098, metadata !DIExpression()), !dbg !1115
%32 = icmp ule i32 %0, 65535, !dbg !1122
%33 = getelementptr [4 x i8], [4 x i8]* %1, i64 0, i64 0, !dbg !1115
br i1 %32, label %if.then5, label %if.done6, !dbg !1122
if.then5: ; preds = %if.done4
%34 = ashr i32 %.0, 12, !dbg !1123
%35 = trunc i32 %34 to i8, !dbg !1123
%36 = or i8 -32, %35, !dbg !1123
store i8 %36, i8* %33, align 1, !dbg !1123
%37 = getelementptr [4 x i8], [4 x i8]* %1, i64 0, i64 1, !dbg !1124
%38 = ashr i32 %.0, 6, !dbg !1124
%39 = trunc i32 %38 to i8, !dbg !1124
%40 = and i8 %39, 63, !dbg !1124
%41 = or i8 -128, %40, !dbg !1124
store i8 %41, i8* %37, align 1, !dbg !1124
%42 = getelementptr [4 x i8], [4 x i8]* %1, i64 0, i64 2, !dbg !1125
%43 = trunc i32 %.0 to i8, !dbg !1125
%44 = and i8 %43, 63, !dbg !1125
%45 = or i8 -128, %44, !dbg !1125
store i8 %45, i8* %42, align 1, !dbg !1125
%46 = getelementptr inbounds { [4 x i8], i64 }, { [4 x i8], i64 }* %4, i32 0, i32 0, !dbg !1109
%47 = getelementptr inbounds { [4 x i8], i64 }, { [4 x i8], i64 }* %4, i32 0, i32 1, !dbg !1109
%48 = bitcast [4 x i8]* %46 to i8*, !dbg !1109
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %48, i8* align 1 %6, i64 4, i1 false), !dbg !1109
store i64 3, i64* %47, align 8, !dbg !1109
%49 = bitcast { [4 x i8], i64 }* %4 to [2 x i64]*, !dbg !1109
%50 = load [2 x i64], [2 x i64]* %49, align 8, !dbg !1109
ret [2 x i64] %50, !dbg !1109
if.done6: ; preds = %if.done4
%51 = ashr i32 %.0, 18, !dbg !1126
%52 = trunc i32 %51 to i8, !dbg !1126
%53 = or i8 -16, %52, !dbg !1126
store i8 %53, i8* %33, align 1, !dbg !1126
%54 = getelementptr [4 x i8], [4 x i8]* %1, i64 0, i64 1, !dbg !1127
%55 = ashr i32 %.0, 12, !dbg !1127
%56 = trunc i32 %55 to i8, !dbg !1127
%57 = and i8 %56, 63, !dbg !1127
%58 = or i8 -128, %57, !dbg !1127
store i8 %58, i8* %54, align 1, !dbg !1127
%59 = getelementptr [4 x i8], [4 x i8]* %1, i64 0, i64 2, !dbg !1128
%60 = ashr i32 %.0, 6, !dbg !1128
%61 = trunc i32 %60 to i8, !dbg !1128
%62 = and i8 %61, 63, !dbg !1128
%63 = or i8 -128, %62, !dbg !1128
store i8 %63, i8* %59, align 1, !dbg !1128
%64 = getelementptr [4 x i8], [4 x i8]* %1, i64 0, i64 3, !dbg !1129
%65 = trunc i32 %.0 to i8, !dbg !1129
%66 = and i8 %65, 63, !dbg !1129
%67 = or i8 -128, %66, !dbg !1129
store i8 %67, i8* %64, align 1, !dbg !1129
%68 = getelementptr inbounds { [4 x i8], i64 }, { [4 x i8], i64 }* %5, i32 0, i32 0, !dbg !1112
%69 = getelementptr inbounds { [4 x i8], i64 }, { [4 x i8], i64 }* %5, i32 0, i32 1, !dbg !1112
%70 = bitcast [4 x i8]* %68 to i8*, !dbg !1112
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %70, i8* align 1 %6, i64 4, i1 false), !dbg !1112
store i64 4, i64* %69, align 8, !dbg !1112
%71 = bitcast { [4 x i8], i64 }* %5 to [2 x i64]*, !dbg !1112
%72 = load [2 x i64], [2 x i64]* %71, align 8, !dbg !1112
ret [2 x i64] %72, !dbg !1112
}
define dso_local void @runtime.assert(i1 zeroext %0, [2 x i64] %1, %runtime.Source_Code_Location* %2, i8* noalias nocapture nonnull %__.context_ptr) !dbg !1130 {
decls:
%3 = alloca %..string, align 8
call void @llvm.dbg.declare(metadata %..string* %4, metadata !1135, metadata !DIExpression()), !dbg !1137
%4 = alloca %..string, align 8
call void @llvm.dbg.value(metadata i8 undef, metadata !1134, metadata !DIExpression()), !dbg !1138
%5 = bitcast %..string* %3 to [2 x i64]*
store [2 x i64] %1, [2 x i64]* %5, align 8
%6 = bitcast %..string* %4 to i8*
%7 = bitcast %..string* %3 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %6, i8* align 8 %7, i64 16, i1 false)
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1136, metadata !DIExpression()), !dbg !1139
br i1 %0, label %if.done, label %if.then, !dbg !1140
if.then: ; preds = %decls
%8 = bitcast %..string* %4 to [2 x i64]*, !dbg !1142
%9 = load [2 x i64], [2 x i64]* %8, align 8, !dbg !1142
call void @"runtime.assert$anon-8"([2 x i64] %9, %runtime.Source_Code_Location* %2, i8* %__.context_ptr), !dbg !1142
unreachable
if.done: ; preds = %decls
ret void, !dbg !1139
}
; Function Attrs: noreturn
define dso_local void @runtime.panic([2 x i64] %0, %runtime.Source_Code_Location* %1, i8* noalias nocapture nonnull %__.context_ptr) #1 !dbg !1145 {
decls:
%2 = alloca %..string, align 8
call void @llvm.dbg.declare(metadata %..string* %3, metadata !1149, metadata !DIExpression()), !dbg !1153
%3 = alloca %..string, align 8
%4 = alloca [2 x i64], align 8, !dbg !1154
%5 = bitcast %..string* %2 to [2 x i64]*
store [2 x i64] %0, [2 x i64]* %5, align 8
%6 = bitcast %..string* %3 to i8*
%7 = bitcast %..string* %2 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %6, i8* align 8 %7, i64 16, i1 false)
call void @llvm.dbg.declare(metadata %runtime.Context* %8, metadata !1150, metadata !DIExpression()), !dbg !1155
%8 = bitcast i8* %__.context_ptr to %runtime.Context*
call void @llvm.dbg.value(metadata void ([2 x i64], [2 x i64], %runtime.Source_Code_Location*, i8*)* null, metadata !1151, metadata !DIExpression()), !dbg !1156
%9 = getelementptr inbounds %runtime.Context, %runtime.Context* %8, i32 0, i32 2, !dbg !1157
%10 = load void ([2 x i64], [2 x i64], %runtime.Source_Code_Location*, i8*)*, void ([2 x i64], [2 x i64], %runtime.Source_Code_Location*, i8*)** %9, align 8, !dbg !1157
call void @llvm.dbg.value(metadata void ([2 x i64], [2 x i64], %runtime.Source_Code_Location*, i8*)* %10, metadata !1151, metadata !DIExpression()), !dbg !1156
%11 = icmp eq void ([2 x i64], [2 x i64], %runtime.Source_Code_Location*, i8*)* %10, null, !dbg !1158
%.0 = select i1 %11, void ([2 x i64], [2 x i64], %runtime.Source_Code_Location*, i8*)* @runtime.default_assertion_failure_proc, void ([2 x i64], [2 x i64], %runtime.Source_Code_Location*, i8*)* %10, !dbg !1158
call void @llvm.dbg.value(metadata void ([2 x i64], [2 x i64], %runtime.Source_Code_Location*, i8*)* %.0, metadata !1151, metadata !DIExpression()), !dbg !1156
%12 = bitcast [2 x i64]* %4 to %..string*, !dbg !1154
store %..string { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"csbs$7d", i64 0, i64 0), i64 5 }, %..string* %12, align 8, !dbg !1154
%13 = load [2 x i64], [2 x i64]* %4, align 8, !dbg !1154
%14 = bitcast %..string* %3 to [2 x i64]*, !dbg !1154
%15 = load [2 x i64], [2 x i64]* %14, align 8, !dbg !1154
call void %.0([2 x i64] %13, [2 x i64] %15, %runtime.Source_Code_Location* %1, i8* %__.context_ptr), !dbg !1154
unreachable, !dbg !1154
}
; Function Attrs: alwaysinline nounwind
define dso_local [2 x i64] @runtime.byte_slice-1037(i8* %0, i64 %1) #2 !dbg !1159 {
decls:
%2 = alloca %runtime.Raw_Slice, align 8, !dbg !1165
call void @llvm.dbg.value(metadata i8* %0, metadata !1163, metadata !DIExpression()), !dbg !1167
call void @llvm.dbg.value(metadata i64 %1, metadata !1164, metadata !DIExpression()), !dbg !1167
%3 = bitcast %runtime.Raw_Slice* %2 to i8*, !dbg !1165
call void @llvm.memset.p0i8.i64(i8* align 8 %3, i8 0, i64 16, i1 false), !dbg !1165
%4 = getelementptr inbounds %runtime.Raw_Slice, %runtime.Raw_Slice* %2, i32 0, i32 0, !dbg !1165
store i8* %0, i8** %4, align 8, !dbg !1165
%5 = icmp sgt i64 %1, 0, !dbg !1165
%6 = select i1 %5, i64 %1, i64 0, !dbg !1165
%7 = getelementptr inbounds %runtime.Raw_Slice, %runtime.Raw_Slice* %2, i32 0, i32 1, !dbg !1165
store i64 %6, i64* %7, align 8, !dbg !1165
%8 = bitcast %runtime.Raw_Slice* %2 to { i8*, i64 }*, !dbg !1165
%9 = bitcast { i8*, i64 }* %8 to [2 x i64]*, !dbg !1165
%10 = load [2 x i64], [2 x i64]* %9, align 8, !dbg !1165
ret [2 x i64] %10, !dbg !1165
}
define dso_local void @runtime.default_temp_allocator_init(%runtime.Default_Temp_Allocator* %0, i64 %1, [2 x i64] %2, i8* noalias nocapture nonnull %__.context_ptr) !dbg !1168 {
decls:
%3 = alloca %runtime.Allocator, align 8
call void @llvm.dbg.declare(metadata %runtime.Allocator* %4, metadata !1175, metadata !DIExpression()), !dbg !1177
%4 = alloca %runtime.Allocator, align 8
%5 = alloca %runtime.Source_Code_Location, align 8, !dbg !1178
%6 = alloca { { i8*, i64 }, i8 }, align 8, !dbg !1178
call void @llvm.dbg.value(metadata %runtime.Default_Temp_Allocator* %0, metadata !1173, metadata !DIExpression()), !dbg !1180
call void @llvm.dbg.value(metadata i64 %1, metadata !1174, metadata !DIExpression()), !dbg !1180
%7 = bitcast %runtime.Allocator* %3 to [2 x i64]*
store [2 x i64] %2, [2 x i64]* %7, align 8
%8 = bitcast %runtime.Allocator* %4 to i8*
%9 = bitcast %runtime.Allocator* %3 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %8, i8* align 8 %9, i64 16, i1 false)
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1176, metadata !DIExpression()), !dbg !1181
%10 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 0, !dbg !1178
%11 = bitcast %runtime.Allocator* %4 to [2 x i64]*, !dbg !1178
%12 = load [2 x i64], [2 x i64]* %11, align 8, !dbg !1178
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([74 x i8], [74 x i8]* @"csbs$7f", i64 0, i64 0), i64 73 }, i32 21, i32 11, %..string { i8* getelementptr inbounds ([28 x i8], [28 x i8]* @"csbs$80", i64 0, i64 0), i64 27 } }, %runtime.Source_Code_Location* %5, align 8, !dbg !1178
%13 = bitcast { { i8*, i64 }, i8 }* %6 to i8*, !dbg !1178
call void @llvm.memset.p0i8.i64(i8* %13, i8 0, i64 24, i1 false), !dbg !1178
call void @runtime.make_aligned-9698({ { i8*, i64 }, i8 }* %6, i64 %1, i64 16, [2 x i64] %12, %runtime.Source_Code_Location* %5, i8* %__.context_ptr), !dbg !1178
%14 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %6, i32 0, i32 0, !dbg !1178
%15 = bitcast { i8*, i64 }* %10 to i8*, !dbg !1178
%16 = bitcast { i8*, i64 }* %14 to i8*, !dbg !1178
call void @llvm.memmove.p0i8.p0i8.i64(i8* align 8 %15, i8* align 8 %16, i64 16, i1 false), !dbg !1178
%17 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 1, !dbg !1182
store i64 0, i64* %17, align 8, !dbg !1182
%18 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 2, !dbg !1183
store i8* null, i8** %18, align 8, !dbg !1183
%19 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 3, !dbg !1184
%20 = bitcast %runtime.Allocator* %19 to i8*, !dbg !1184
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %20, i8* align 8 %8, i64 16, i1 false), !dbg !1184
%21 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 4, !dbg !1185
%22 = getelementptr inbounds { { i8*, i64 }*, i64, i64, %runtime.Allocator }, { { i8*, i64 }*, i64, i64, %runtime.Allocator }* %21, i32 0, i32 3, !dbg !1185
%23 = bitcast %runtime.Allocator* %22 to i8*, !dbg !1185
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %23, i8* align 8 %8, i64 16, i1 false), !dbg !1185
ret void, !dbg !1181
}
define dso_local void @runtime.default_temp_allocator_alloc-1071({ { i8*, i64 }, i8 }* noalias sret %agg.result, %runtime.Default_Temp_Allocator* %0, i64 %1, i64 %2, %runtime.Source_Code_Location* %3, i8* noalias nocapture nonnull %__.context_ptr) !dbg !1186 {
decls:
%4 = alloca %runtime.Allocator, align 8
%5 = alloca %runtime.Allocator, align 8
%6 = alloca { { i8*, i64 }, i8 }, align 8, !dbg !1208
%7 = alloca %runtime.Raw_Slice, align 8, !dbg !1220
%8 = alloca %..string, align 8
%9 = alloca %..string, align 8
%10 = alloca %runtime.Source_Code_Location, align 8, !dbg !1222
%11 = alloca %runtime.Raw_Slice, align 8, !dbg !1234
%12 = alloca %..string, align 8
%13 = alloca %..string, align 8
%14 = alloca %runtime.Source_Code_Location, align 8, !dbg !1236
%15 = alloca %..string, align 8
%16 = alloca %..string, align 8
%17 = alloca [2 x i64], align 8, !dbg !1238
%18 = alloca %runtime.Source_Code_Location, align 8, !dbg !1238
%19 = alloca { i8*, i64 }, align 8, !dbg !1250
%20 = alloca { i8*, i64 }, align 8, !dbg !1251
call void @llvm.dbg.declare(metadata %runtime.Allocator* %21, metadata !1203, metadata !DIExpression()), !dbg !1252
%21 = alloca %runtime.Allocator, align 8, !dbg !1252
call void @llvm.dbg.declare(metadata { i8*, i64 }* %22, metadata !1204, metadata !DIExpression()), !dbg !1253
%22 = alloca { i8*, i64 }, align 8, !dbg !1253
%23 = alloca { { i8*, i64 }, i8 }, align 8, !dbg !1253
%24 = alloca %runtime.Source_Code_Location, align 8, !dbg !1254
%25 = alloca { { { i8*, i64 }*, i64, i64, %runtime.Allocator }, i8 }, align 8, !dbg !1254
%26 = alloca %runtime.Source_Code_Location, align 8, !dbg !1257
call void @llvm.dbg.declare(metadata %runtime.Logger* %27, metadata !1206, metadata !DIExpression()), !dbg !1258
%27 = alloca %runtime.Logger, align 8, !dbg !1258
%28 = alloca [2 x i64], align 8, !dbg !1259
call void @llvm.dbg.value(metadata %runtime.Default_Temp_Allocator* %0, metadata !1190, metadata !DIExpression()), !dbg !1263
call void @llvm.dbg.value(metadata i64 %1, metadata !1191, metadata !DIExpression()), !dbg !1263
call void @llvm.dbg.value(metadata i64 %2, metadata !1192, metadata !DIExpression()), !dbg !1263
call void @llvm.dbg.declare(metadata %runtime.Context* %29, metadata !1193, metadata !DIExpression()), !dbg !1264
%29 = bitcast i8* %__.context_ptr to %runtime.Context*
call void @llvm.dbg.value(metadata i64 %1, metadata !1194, metadata !DIExpression()), !dbg !1265
%30 = bitcast [2 x i64]* %17 to i8*, !dbg !1266
call void @llvm.lifetime.start.p0i8(i64 16, i8* %30), !dbg !1266
%31 = bitcast %runtime.Source_Code_Location* %18 to i8*, !dbg !1266
call void @llvm.lifetime.start.p0i8(i64 40, i8* %31), !dbg !1266
call void @llvm.dbg.value(metadata i64 %1, metadata !1244, metadata !DIExpression()), !dbg !1266
call void @llvm.dbg.value(metadata i64 %2, metadata !1245, metadata !DIExpression()), !dbg !1266
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1246, metadata !DIExpression()), !dbg !1267
call void @llvm.dbg.value(metadata i64 %2, metadata !1268, metadata !DIExpression()), !dbg !1272
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !1271, metadata !DIExpression()), !dbg !1274
%32 = icmp sle i64 %2, 0, !dbg !1275
br i1 %32, label %if.then.i.i, label %if.done.i.i, !dbg !1275
if.then.i.i: ; preds = %decls
br label %runtime.is_power_of_two_int.exit.i, !dbg !1277
if.done.i.i: ; preds = %decls
%33 = sub i64 %2, 1, !dbg !1280
%34 = and i64 %2, %33, !dbg !1280
%35 = icmp eq i64 %34, 0, !dbg !1280
%36 = zext i1 %35 to i8, !dbg !1280
br label %runtime.is_power_of_two_int.exit.i, !dbg !1280
runtime.is_power_of_two_int.exit.i: ; preds = %if.done.i.i, %if.then.i.i
%37 = phi i8 [ 0, %if.then.i.i ], [ %36, %if.done.i.i ]
%38 = icmp ne i8 %37, 0, !dbg !1238
%39 = bitcast [2 x i64]* %17 to %..string*, !dbg !1238
%40 = bitcast %..string* %39 to i8*, !dbg !1238
call void @llvm.memset.p0i8.i64(i8* align 8 %40, i8 0, i64 16, i1 false), !dbg !1238, !noalias !1281
%41 = load [2 x i64], [2 x i64]* %17, align 8, !dbg !1238, !noalias !1281
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$9e", i64 0, i64 0), i64 54 }, i32 65, i32 2, %..string { i8* getelementptr inbounds ([18 x i8], [18 x i8]* @"csbs$9f", i64 0, i64 0), i64 17 } }, %runtime.Source_Code_Location* %18, align 8, !dbg !1238, !noalias !1281
%42 = bitcast %..string* %15 to i8*, !dbg !1284
call void @llvm.lifetime.start.p0i8(i64 16, i8* %42), !dbg !1284, !noalias !1281
%43 = bitcast %..string* %16 to i8*, !dbg !1284
call void @llvm.lifetime.start.p0i8(i64 16, i8* %43), !dbg !1284, !noalias !1281
call void @llvm.dbg.declare(metadata !112, metadata !1135, metadata !DIExpression()), !dbg !1284
call void @llvm.dbg.value(metadata i8 undef, metadata !1134, metadata !DIExpression()), !dbg !1286
%44 = bitcast %..string* %15 to [2 x i64]*
store [2 x i64] %41, [2 x i64]* %44, align 8, !noalias !1287
%45 = bitcast %..string* %16 to i8*
%46 = bitcast %..string* %15 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %45, i8* align 8 %46, i64 16, i1 false), !noalias !1287
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1136, metadata !DIExpression()), !dbg !1290
br i1 %38, label %runtime.align_forward_int.exit, label %if.then.i1.i, !dbg !1291
if.then.i1.i: ; preds = %runtime.is_power_of_two_int.exit.i
%47 = bitcast %..string* %16 to [2 x i64]*, !dbg !1292
%48 = load [2 x i64], [2 x i64]* %47, align 8, !dbg !1292, !noalias !1287
call void @"runtime.assert$anon-8"([2 x i64] %48, %runtime.Source_Code_Location* %18, i8* %__.context_ptr), !dbg !1292
unreachable
runtime.align_forward_int.exit: ; preds = %runtime.is_power_of_two_int.exit.i
%49 = bitcast %..string* %15 to i8*, !dbg !1290
call void @llvm.lifetime.end.p0i8(i64 16, i8* %49), !dbg !1290, !noalias !1281
%50 = bitcast %..string* %16 to i8*, !dbg !1290
call void @llvm.lifetime.end.p0i8(i64 16, i8* %50), !dbg !1290, !noalias !1281
call void @llvm.dbg.value(metadata i64 %1, metadata !1247, metadata !DIExpression()), !dbg !1293
call void @llvm.dbg.value(metadata i64 0, metadata !1248, metadata !DIExpression()), !dbg !1293
%51 = sub i64 %2, 1, !dbg !1294
%52 = and i64 %1, %51, !dbg !1294
call void @llvm.dbg.value(metadata i64 %52, metadata !1248, metadata !DIExpression()), !dbg !1293
%53 = icmp ne i64 %52, 0, !dbg !1295
%54 = sub i64 %2, %52, !dbg !1295
%55 = add i64 %1, %54, !dbg !1295
%.0.i = select i1 %53, i64 %55, i64 %1, !dbg !1295
call void @llvm.dbg.value(metadata i64 %.0.i, metadata !1247, metadata !DIExpression()), !dbg !1293
%56 = bitcast [2 x i64]* %17 to i8*, !dbg !1296
call void @llvm.lifetime.end.p0i8(i64 16, i8* %56), !dbg !1296
%57 = bitcast %runtime.Source_Code_Location* %18 to i8*, !dbg !1296
call void @llvm.lifetime.end.p0i8(i64 40, i8* %57), !dbg !1296
call void @llvm.dbg.value(metadata i64 %.0.i, metadata !1194, metadata !DIExpression()), !dbg !1265
%58 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 1, !dbg !1297
%59 = load i64, i64* %58, align 8, !dbg !1297
%60 = add i64 %59, %.0.i, !dbg !1297
%61 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 0, !dbg !1297
%62 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %61, i32 0, i32 1, !dbg !1297
%63 = load i64, i64* %62, align 8, !dbg !1297
%64 = icmp sle i64 %60, %63, !dbg !1297
br i1 %64, label %switch.case.body, label %switch.case.next, !dbg !1297
switch.case.next: ; preds = %runtime.align_forward_int.exit
%65 = icmp sle i64 %.0.i, %63, !dbg !1297
br i1 %65, label %switch.case.body2, label %switch.done, !dbg !1297
switch.case.body: ; preds = %runtime.align_forward_int.exit
call void @llvm.dbg.value(metadata i64 0, metadata !1196, metadata !DIExpression()), !dbg !1298
%66 = bitcast { i8*, i64 }* %61 to [2 x i64]*, !dbg !1299
%67 = load [2 x i64], [2 x i64]* %66, align 8, !dbg !1299
%68 = call i8* @runtime.raw_slice_data-9714([2 x i64] %67), !dbg !1299
%69 = ptrtoint i8* %68 to i64, !dbg !1299
call void @llvm.dbg.value(metadata i64 %69, metadata !1196, metadata !DIExpression()), !dbg !1298
call void @llvm.dbg.value(metadata i64 0, metadata !1198, metadata !DIExpression()), !dbg !1298
%70 = load i64, i64* %58, align 8, !dbg !1300
%71 = add i64 %69, %70, !dbg !1300
call void @llvm.dbg.value(metadata i64 %71, metadata !1198, metadata !DIExpression()), !dbg !1298
%72 = bitcast [2 x i64]* %17 to i8*, !dbg !1301
call void @llvm.lifetime.start.p0i8(i64 16, i8* %72), !dbg !1301
%73 = bitcast %runtime.Source_Code_Location* %14 to i8*, !dbg !1301
call void @llvm.lifetime.start.p0i8(i64 40, i8* %73), !dbg !1301
call void @llvm.dbg.value(metadata i64 %71, metadata !1228, metadata !DIExpression()), !dbg !1301
call void @llvm.dbg.value(metadata i64 %2, metadata !1229, metadata !DIExpression()), !dbg !1301
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1230, metadata !DIExpression()), !dbg !1302
call void @llvm.dbg.value(metadata i64 %2, metadata !1303, metadata !DIExpression()), !dbg !1309
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !1308, metadata !DIExpression()), !dbg !1311
%74 = icmp ule i64 %2, 0, !dbg !1312
br i1 %74, label %if.then.i.i11, label %if.done.i.i12, !dbg !1312
if.then.i.i11: ; preds = %switch.case.body
br label %runtime.is_power_of_two_uintptr.exit.i, !dbg !1314
if.done.i.i12: ; preds = %switch.case.body
%75 = sub i64 %2, 1, !dbg !1317
%76 = and i64 %2, %75, !dbg !1317
%77 = icmp eq i64 %76, 0, !dbg !1317
%78 = zext i1 %77 to i8, !dbg !1317
br label %runtime.is_power_of_two_uintptr.exit.i, !dbg !1317
runtime.is_power_of_two_uintptr.exit.i: ; preds = %if.done.i.i12, %if.then.i.i11
%79 = phi i8 [ 0, %if.then.i.i11 ], [ %78, %if.done.i.i12 ]
%80 = icmp ne i8 %79, 0, !dbg !1236
%81 = bitcast [2 x i64]* %17 to %..string*, !dbg !1236
%82 = bitcast %..string* %81 to i8*, !dbg !1236
call void @llvm.memset.p0i8.i64(i8* align 8 %82, i8 0, i64 16, i1 false), !dbg !1236, !noalias !1318
%83 = load [2 x i64], [2 x i64]* %17, align 8, !dbg !1236, !noalias !1318
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$9e", i64 0, i64 0), i64 54 }, i32 83, i32 2, %..string { i8* getelementptr inbounds ([22 x i8], [22 x i8]* @"csbs$a0", i64 0, i64 0), i64 21 } }, %runtime.Source_Code_Location* %14, align 8, !dbg !1236, !noalias !1318
%84 = bitcast %..string* %12 to i8*, !dbg !1321
call void @llvm.lifetime.start.p0i8(i64 16, i8* %84), !dbg !1321, !noalias !1318
%85 = bitcast %..string* %13 to i8*, !dbg !1321
call void @llvm.lifetime.start.p0i8(i64 16, i8* %85), !dbg !1321, !noalias !1318
call void @llvm.dbg.declare(metadata !112, metadata !1135, metadata !DIExpression()), !dbg !1321
call void @llvm.dbg.value(metadata i8 undef, metadata !1134, metadata !DIExpression()), !dbg !1323
%86 = bitcast %..string* %12 to [2 x i64]*
store [2 x i64] %83, [2 x i64]* %86, align 8, !noalias !1324
%87 = bitcast %..string* %13 to i8*
%88 = bitcast %..string* %12 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %87, i8* align 8 %88, i64 16, i1 false), !noalias !1324
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1136, metadata !DIExpression()), !dbg !1327
br i1 %80, label %runtime.align_forward_uintptr.exit, label %if.then.i1.i13, !dbg !1328
if.then.i1.i13: ; preds = %runtime.is_power_of_two_uintptr.exit.i
%89 = bitcast %..string* %13 to [2 x i64]*, !dbg !1329
%90 = load [2 x i64], [2 x i64]* %89, align 8, !dbg !1329, !noalias !1324
call void @"runtime.assert$anon-8"([2 x i64] %90, %runtime.Source_Code_Location* %14, i8* %__.context_ptr), !dbg !1329
unreachable
runtime.align_forward_uintptr.exit: ; preds = %runtime.is_power_of_two_uintptr.exit.i
%91 = bitcast %..string* %12 to i8*, !dbg !1327
call void @llvm.lifetime.end.p0i8(i64 16, i8* %91), !dbg !1327, !noalias !1318
%92 = bitcast %..string* %13 to i8*, !dbg !1327
call void @llvm.lifetime.end.p0i8(i64 16, i8* %92), !dbg !1327, !noalias !1318
call void @llvm.dbg.value(metadata i64 %71, metadata !1231, metadata !DIExpression()), !dbg !1330
call void @llvm.dbg.value(metadata i64 0, metadata !1232, metadata !DIExpression()), !dbg !1330
%93 = sub i64 %2, 1, !dbg !1331
%94 = and i64 %71, %93, !dbg !1331
call void @llvm.dbg.value(metadata i64 %94, metadata !1232, metadata !DIExpression()), !dbg !1330
%95 = icmp ne i64 %94, 0, !dbg !1332
%96 = sub i64 %2, %94, !dbg !1332
%97 = add i64 %71, %96, !dbg !1332
%.0.i14 = select i1 %95, i64 %97, i64 %71, !dbg !1332
call void @llvm.dbg.value(metadata i64 %.0.i14, metadata !1231, metadata !DIExpression()), !dbg !1330
%98 = bitcast [2 x i64]* %17 to i8*, !dbg !1333
call void @llvm.lifetime.end.p0i8(i64 16, i8* %98), !dbg !1333
%99 = bitcast %runtime.Source_Code_Location* %14 to i8*, !dbg !1333
call void @llvm.lifetime.end.p0i8(i64 40, i8* %99), !dbg !1333
call void @llvm.dbg.value(metadata i64 %.0.i14, metadata !1198, metadata !DIExpression()), !dbg !1298
%100 = inttoptr i64 %.0.i14 to i8*, !dbg !1334
%101 = call i8* @runtime.mem_zero(i8* %100, i64 %.0.i), !dbg !1334
%102 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 2, !dbg !1335
store i8* %100, i8** %102, align 8, !dbg !1335
call void @llvm.dbg.value(metadata i64 0, metadata !1199, metadata !DIExpression()), !dbg !1298
%103 = sub i64 %.0.i14, %69, !dbg !1336
call void @llvm.dbg.value(metadata i64 %103, metadata !1199, metadata !DIExpression()), !dbg !1298
%104 = add i64 %103, %.0.i, !dbg !1337
store i64 %104, i64* %58, align 8, !dbg !1337
%105 = bitcast %runtime.Raw_Slice* %11 to i8*, !dbg !1338
call void @llvm.lifetime.start.p0i8(i64 16, i8* %105), !dbg !1338
call void @llvm.dbg.value(metadata i8* %100, metadata !1163, metadata !DIExpression()), !dbg !1338
call void @llvm.dbg.value(metadata i64 %.0.i, metadata !1164, metadata !DIExpression()), !dbg !1338
%106 = bitcast %runtime.Raw_Slice* %11 to i8*, !dbg !1234
call void @llvm.memset.p0i8.i64(i8* align 8 %106, i8 0, i64 16, i1 false), !dbg !1234
%107 = getelementptr inbounds %runtime.Raw_Slice, %runtime.Raw_Slice* %11, i32 0, i32 0, !dbg !1234
store i8* %100, i8** %107, align 8, !dbg !1234
%108 = icmp sgt i64 %.0.i, 0, !dbg !1234
%109 = select i1 %108, i64 %.0.i, i64 0, !dbg !1234
%110 = getelementptr inbounds %runtime.Raw_Slice, %runtime.Raw_Slice* %11, i32 0, i32 1, !dbg !1234
store i64 %109, i64* %110, align 8, !dbg !1234
%111 = bitcast %runtime.Raw_Slice* %11 to { i8*, i64 }*, !dbg !1234
%112 = bitcast { i8*, i64 }* %111 to [2 x i64]*, !dbg !1234
%113 = load [2 x i64], [2 x i64]* %112, align 8, !dbg !1234
%114 = bitcast %runtime.Raw_Slice* %11 to i8*, !dbg !1234
call void @llvm.lifetime.end.p0i8(i64 16, i8* %114), !dbg !1234
%115 = bitcast { i8*, i64 }* %19 to [2 x i64]*, !dbg !1250
store [2 x i64] %113, [2 x i64]* %115, align 8, !dbg !1250
%116 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 0, !dbg !1250
%117 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 1, !dbg !1250
%118 = bitcast { i8*, i64 }* %116 to i8*, !dbg !1250
%119 = bitcast { i8*, i64 }* %19 to i8*, !dbg !1250
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %118, i8* align 8 %119, i64 16, i1 false), !dbg !1250
store i8 0, i8* %117, align 1, !dbg !1250
ret void, !dbg !1250
switch.case.body2: ; preds = %switch.case.next
call void @llvm.dbg.value(metadata i64 0, metadata !1200, metadata !DIExpression()), !dbg !1298
%120 = bitcast { i8*, i64 }* %61 to [2 x i64]*, !dbg !1339
%121 = load [2 x i64], [2 x i64]* %120, align 8, !dbg !1339
%122 = call i8* @runtime.raw_slice_data-9714([2 x i64] %121), !dbg !1339
%123 = ptrtoint i8* %122 to i64, !dbg !1339
call void @llvm.dbg.value(metadata i64 %123, metadata !1200, metadata !DIExpression()), !dbg !1298
call void @llvm.dbg.value(metadata i64 0, metadata !1201, metadata !DIExpression()), !dbg !1298
%124 = bitcast [2 x i64]* %17 to i8*, !dbg !1340
call void @llvm.lifetime.start.p0i8(i64 16, i8* %124), !dbg !1340
%125 = bitcast %runtime.Source_Code_Location* %10 to i8*, !dbg !1340
call void @llvm.lifetime.start.p0i8(i64 40, i8* %125), !dbg !1340
call void @llvm.dbg.value(metadata i64 %123, metadata !1228, metadata !DIExpression()), !dbg !1340
call void @llvm.dbg.value(metadata i64 %2, metadata !1229, metadata !DIExpression()), !dbg !1340
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1230, metadata !DIExpression()), !dbg !1341
call void @llvm.dbg.value(metadata i64 %2, metadata !1303, metadata !DIExpression()), !dbg !1342
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !1308, metadata !DIExpression()), !dbg !1344
%126 = icmp ule i64 %2, 0, !dbg !1345
br i1 %126, label %if.then.i.i15, label %if.done.i.i16, !dbg !1345
if.then.i.i15: ; preds = %switch.case.body2
br label %runtime.is_power_of_two_uintptr.exit.i17, !dbg !1346
if.done.i.i16: ; preds = %switch.case.body2
%127 = sub i64 %2, 1, !dbg !1347
%128 = and i64 %2, %127, !dbg !1347
%129 = icmp eq i64 %128, 0, !dbg !1347
%130 = zext i1 %129 to i8, !dbg !1347
br label %runtime.is_power_of_two_uintptr.exit.i17, !dbg !1347
runtime.is_power_of_two_uintptr.exit.i17: ; preds = %if.done.i.i16, %if.then.i.i15
%131 = phi i8 [ 0, %if.then.i.i15 ], [ %130, %if.done.i.i16 ]
%132 = icmp ne i8 %131, 0, !dbg !1222
%133 = bitcast [2 x i64]* %17 to %..string*, !dbg !1222
%134 = bitcast %..string* %133 to i8*, !dbg !1222
call void @llvm.memset.p0i8.i64(i8* align 8 %134, i8 0, i64 16, i1 false), !dbg !1222, !noalias !1348
%135 = load [2 x i64], [2 x i64]* %17, align 8, !dbg !1222, !noalias !1348
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$9e", i64 0, i64 0), i64 54 }, i32 83, i32 2, %..string { i8* getelementptr inbounds ([22 x i8], [22 x i8]* @"csbs$a0", i64 0, i64 0), i64 21 } }, %runtime.Source_Code_Location* %10, align 8, !dbg !1222, !noalias !1348
%136 = bitcast %..string* %8 to i8*, !dbg !1351
call void @llvm.lifetime.start.p0i8(i64 16, i8* %136), !dbg !1351, !noalias !1348
%137 = bitcast %..string* %9 to i8*, !dbg !1351
call void @llvm.lifetime.start.p0i8(i64 16, i8* %137), !dbg !1351, !noalias !1348
call void @llvm.dbg.declare(metadata !112, metadata !1135, metadata !DIExpression()), !dbg !1351
call void @llvm.dbg.value(metadata i8 undef, metadata !1134, metadata !DIExpression()), !dbg !1353
%138 = bitcast %..string* %8 to [2 x i64]*
store [2 x i64] %135, [2 x i64]* %138, align 8, !noalias !1354
%139 = bitcast %..string* %9 to i8*
%140 = bitcast %..string* %8 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %139, i8* align 8 %140, i64 16, i1 false), !noalias !1354
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1136, metadata !DIExpression()), !dbg !1357
br i1 %132, label %runtime.align_forward_uintptr.exit20, label %if.then.i1.i18, !dbg !1358
if.then.i1.i18: ; preds = %runtime.is_power_of_two_uintptr.exit.i17
%141 = bitcast %..string* %9 to [2 x i64]*, !dbg !1359
%142 = load [2 x i64], [2 x i64]* %141, align 8, !dbg !1359, !noalias !1354
call void @"runtime.assert$anon-8"([2 x i64] %142, %runtime.Source_Code_Location* %10, i8* %__.context_ptr), !dbg !1359
unreachable
runtime.align_forward_uintptr.exit20: ; preds = %runtime.is_power_of_two_uintptr.exit.i17
%143 = bitcast %..string* %8 to i8*, !dbg !1357
call void @llvm.lifetime.end.p0i8(i64 16, i8* %143), !dbg !1357, !noalias !1348
%144 = bitcast %..string* %9 to i8*, !dbg !1357
call void @llvm.lifetime.end.p0i8(i64 16, i8* %144), !dbg !1357, !noalias !1348
call void @llvm.dbg.value(metadata i64 %123, metadata !1231, metadata !DIExpression()), !dbg !1360
call void @llvm.dbg.value(metadata i64 0, metadata !1232, metadata !DIExpression()), !dbg !1360
%145 = sub i64 %2, 1, !dbg !1361
%146 = and i64 %123, %145, !dbg !1361
call void @llvm.dbg.value(metadata i64 %146, metadata !1232, metadata !DIExpression()), !dbg !1360
%147 = icmp ne i64 %146, 0, !dbg !1362
%148 = sub i64 %2, %146, !dbg !1362
%149 = add i64 %123, %148, !dbg !1362
%.0.i19 = select i1 %147, i64 %149, i64 %123, !dbg !1362
call void @llvm.dbg.value(metadata i64 %.0.i19, metadata !1231, metadata !DIExpression()), !dbg !1360
%150 = bitcast [2 x i64]* %17 to i8*, !dbg !1363
call void @llvm.lifetime.end.p0i8(i64 16, i8* %150), !dbg !1363
%151 = bitcast %runtime.Source_Code_Location* %10 to i8*, !dbg !1363
call void @llvm.lifetime.end.p0i8(i64 40, i8* %151), !dbg !1363
call void @llvm.dbg.value(metadata i64 %.0.i19, metadata !1201, metadata !DIExpression()), !dbg !1298
%152 = inttoptr i64 %.0.i19 to i8*, !dbg !1364
%153 = call i8* @runtime.mem_zero(i8* %152, i64 %.0.i), !dbg !1364
%154 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 2, !dbg !1365
store i8* %152, i8** %154, align 8, !dbg !1365
call void @llvm.dbg.value(metadata i64 0, metadata !1202, metadata !DIExpression()), !dbg !1298
%155 = sub i64 %.0.i19, %123, !dbg !1366
call void @llvm.dbg.value(metadata i64 %155, metadata !1202, metadata !DIExpression()), !dbg !1298
%156 = add i64 %155, %.0.i, !dbg !1367
store i64 %156, i64* %58, align 8, !dbg !1367
%157 = bitcast %runtime.Raw_Slice* %7 to i8*, !dbg !1368
call void @llvm.lifetime.start.p0i8(i64 16, i8* %157), !dbg !1368
call void @llvm.dbg.value(metadata i8* %152, metadata !1163, metadata !DIExpression()), !dbg !1368
call void @llvm.dbg.value(metadata i64 %.0.i, metadata !1164, metadata !DIExpression()), !dbg !1368
%158 = bitcast %runtime.Raw_Slice* %7 to i8*, !dbg !1220
call void @llvm.memset.p0i8.i64(i8* align 8 %158, i8 0, i64 16, i1 false), !dbg !1220
%159 = getelementptr inbounds %runtime.Raw_Slice, %runtime.Raw_Slice* %7, i32 0, i32 0, !dbg !1220
store i8* %152, i8** %159, align 8, !dbg !1220
%160 = icmp sgt i64 %.0.i, 0, !dbg !1220
%161 = select i1 %160, i64 %.0.i, i64 0, !dbg !1220
%162 = getelementptr inbounds %runtime.Raw_Slice, %runtime.Raw_Slice* %7, i32 0, i32 1, !dbg !1220
store i64 %161, i64* %162, align 8, !dbg !1220
%163 = bitcast %runtime.Raw_Slice* %7 to { i8*, i64 }*, !dbg !1220
%164 = bitcast { i8*, i64 }* %163 to [2 x i64]*, !dbg !1220
%165 = load [2 x i64], [2 x i64]* %164, align 8, !dbg !1220
%166 = bitcast %runtime.Raw_Slice* %7 to i8*, !dbg !1220
call void @llvm.lifetime.end.p0i8(i64 16, i8* %166), !dbg !1220
%167 = bitcast { i8*, i64 }* %20 to [2 x i64]*, !dbg !1251
store [2 x i64] %165, [2 x i64]* %167, align 8, !dbg !1251
%168 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 0, !dbg !1251
%169 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 1, !dbg !1251
%170 = bitcast { i8*, i64 }* %168 to i8*, !dbg !1251
%171 = bitcast { i8*, i64 }* %20 to i8*, !dbg !1251
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %170, i8* align 8 %171, i64 16, i1 false), !dbg !1251
store i8 0, i8* %169, align 1, !dbg !1251
ret void, !dbg !1251
switch.done: ; preds = %switch.case.next
%172 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 3, !dbg !1252
%173 = bitcast %runtime.Allocator* %21 to i8*, !dbg !1252
%174 = bitcast %runtime.Allocator* %172 to i8*, !dbg !1252
%175 = getelementptr i8, i8* %173, i64 16, !dbg !1252
call void @llvm.memset.p0i8.i64(i8* align 8 %175, i8 0, i64 0, i1 false), !dbg !1252
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %173, i8* align 8 %174, i64 16, i1 false), !dbg !1252
%176 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %21, i32 0, i32 0, !dbg !1369
%177 = load i8*, i8** %176, align 8, !dbg !1369
%178 = icmp eq i8* %177, null, !dbg !1369
br i1 %178, label %if.then, label %if.done, !dbg !1369
if.then: ; preds = %switch.done
%179 = getelementptr inbounds %runtime.Context, %runtime.Context* %29, i32 0, i32 0, !dbg !1370
%180 = bitcast %runtime.Allocator* %179 to i8*, !dbg !1370
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %173, i8* align 8 %180, i64 16, i1 false), !dbg !1370
call void @llvm.memmove.p0i8.p0i8.i64(i8* align 8 %174, i8* align 8 %180, i64 16, i1 false), !dbg !1373
br label %if.done, !dbg !1369
if.done: ; preds = %if.then, %switch.done
%181 = bitcast { i8*, i64 }* %22 to i8*, !dbg !1253
call void @llvm.memset.p0i8.i64(i8* %181, i8 0, i64 16, i1 false), !dbg !1253
call void @llvm.dbg.value(metadata i8 0, metadata !1205, metadata !DIExpression()), !dbg !1265
%182 = bitcast %runtime.Allocator* %21 to [2 x i64]*, !dbg !1253
%183 = load [2 x i64], [2 x i64]* %182, align 8, !dbg !1253
%184 = bitcast { { i8*, i64 }, i8 }* %23 to i8*, !dbg !1253
call void @llvm.memset.p0i8.i64(i8* %184, i8 0, i64 24, i1 false), !dbg !1253
%185 = bitcast %runtime.Allocator* %4 to i8*, !dbg !1374
call void @llvm.lifetime.start.p0i8(i64 16, i8* %185), !dbg !1374
%186 = bitcast %runtime.Allocator* %5 to i8*, !dbg !1374
call void @llvm.lifetime.start.p0i8(i64 16, i8* %186), !dbg !1374
%187 = bitcast { { i8*, i64 }, i8 }* %6 to i8*, !dbg !1374
call void @llvm.lifetime.start.p0i8(i64 24, i8* %187), !dbg !1374
call void @llvm.dbg.declare(metadata !112, metadata !1217, metadata !DIExpression()), !dbg !1374
call void @llvm.dbg.value(metadata i64 %.0.i, metadata !1215, metadata !DIExpression()), !dbg !1375
call void @llvm.dbg.value(metadata i64 %2, metadata !1216, metadata !DIExpression()), !dbg !1375
%188 = bitcast %runtime.Allocator* %4 to [2 x i64]*
store [2 x i64] %183, [2 x i64]* %188, align 8, !noalias !1376
%189 = bitcast %runtime.Allocator* %5 to i8*
%190 = bitcast %runtime.Allocator* %4 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %189, i8* align 8 %190, i64 16, i1 false), !noalias !1376
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1218, metadata !DIExpression()), !dbg !1380
%191 = icmp eq i64 %.0.i, 0, !dbg !1381
br i1 %191, label %if.then.i, label %if.done.i, !dbg !1381
if.then.i: ; preds = %if.done
%192 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %23, i32 0, i32 0, !dbg !1382
%193 = bitcast { i8*, i64 }* %192 to i8*, !dbg !1382
call void @llvm.memset.p0i8.i64(i8* align 8 %193, i8 0, i64 17, i1 false), !dbg !1382, !alias.scope !1385, !noalias !1386
%194 = bitcast %runtime.Allocator* %4 to i8*, !dbg !1382
call void @llvm.lifetime.end.p0i8(i64 16, i8* %194), !dbg !1382
%195 = bitcast %runtime.Allocator* %5 to i8*, !dbg !1382
call void @llvm.lifetime.end.p0i8(i64 16, i8* %195), !dbg !1382
%196 = bitcast { { i8*, i64 }, i8 }* %6 to i8*, !dbg !1382
call void @llvm.lifetime.end.p0i8(i64 24, i8* %196), !dbg !1382
br label %runtime.mem_alloc_bytes.exit, !dbg !1382
if.done.i: ; preds = %if.done
%197 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %5, i32 0, i32 0, !dbg !1387
%198 = load i8*, i8** %197, align 8, !dbg !1387, !noalias !1376
%199 = icmp eq i8* %198, null, !dbg !1387
br i1 %199, label %if.then1.i, label %if.done2.i, !dbg !1387
if.then1.i: ; preds = %if.done.i
%200 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %23, i32 0, i32 0, !dbg !1388
%201 = bitcast { i8*, i64 }* %200 to i8*, !dbg !1388
call void @llvm.memset.p0i8.i64(i8* align 8 %201, i8 0, i64 17, i1 false), !dbg !1388, !alias.scope !1385, !noalias !1386
%202 = bitcast %runtime.Allocator* %4 to i8*, !dbg !1388
call void @llvm.lifetime.end.p0i8(i64 16, i8* %202), !dbg !1388
%203 = bitcast %runtime.Allocator* %5 to i8*, !dbg !1388
call void @llvm.lifetime.end.p0i8(i64 16, i8* %203), !dbg !1388
%204 = bitcast { { i8*, i64 }, i8 }* %6 to i8*, !dbg !1388
call void @llvm.lifetime.end.p0i8(i64 24, i8* %204), !dbg !1388
br label %runtime.mem_alloc_bytes.exit, !dbg !1388
if.done2.i: ; preds = %if.done.i
%205 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %5, i32 0, i32 1, !dbg !1208
%206 = load i8*, i8** %205, align 8, !dbg !1208, !noalias !1376
%207 = bitcast { { i8*, i64 }, i8 }* %6 to i8*, !dbg !1208
call void @llvm.memset.p0i8.i64(i8* %207, i8 0, i64 24, i1 false), !dbg !1208, !noalias !1376
%208 = bitcast i8* %198 to void ({ { i8*, i64 }, i8 }*, i8*, i8, i64, i64, i8*, i64, %runtime.Source_Code_Location*, i8*)*, !dbg !1208
call void %208({ { i8*, i64 }, i8 }* %6, i8* %206, i8 0, i64 %.0.i, i64 %2, i8* null, i64 0, %runtime.Source_Code_Location* %3, i8* %__.context_ptr) #4, !dbg !1208, !noalias !1385
%209 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %6, i32 0, i32 0, !dbg !1208
%210 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %6, i32 0, i32 1, !dbg !1208
%211 = load i8, i8* %210, align 1, !dbg !1208, !noalias !1376
%212 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %23, i32 0, i32 0, !dbg !1208
%213 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %23, i32 0, i32 1, !dbg !1208
%214 = bitcast { i8*, i64 }* %212 to i8*, !dbg !1208
%215 = bitcast { i8*, i64 }* %209 to i8*, !dbg !1208
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %214, i8* align 8 %215, i64 16, i1 false), !dbg !1208, !noalias !1386
store i8 %211, i8* %213, align 1, !dbg !1208, !alias.scope !1385, !noalias !1386
%216 = bitcast %runtime.Allocator* %4 to i8*, !dbg !1208
call void @llvm.lifetime.end.p0i8(i64 16, i8* %216), !dbg !1208
%217 = bitcast %runtime.Allocator* %5 to i8*, !dbg !1208
call void @llvm.lifetime.end.p0i8(i64 16, i8* %217), !dbg !1208
%218 = bitcast { { i8*, i64 }, i8 }* %6 to i8*, !dbg !1208
call void @llvm.lifetime.end.p0i8(i64 24, i8* %218), !dbg !1208
br label %runtime.mem_alloc_bytes.exit, !dbg !1208
runtime.mem_alloc_bytes.exit: ; preds = %if.done2.i, %if.then1.i, %if.then.i
%219 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %23, i32 0, i32 0, !dbg !1253
%220 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %23, i32 0, i32 1, !dbg !1253
%221 = load i8, i8* %220, align 1, !dbg !1253
%222 = bitcast { i8*, i64 }* %219 to i8*, !dbg !1253
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %181, i8* align 8 %222, i64 16, i1 false), !dbg !1253
call void @llvm.dbg.value(metadata i8 %221, metadata !1205, metadata !DIExpression()), !dbg !1265
%223 = icmp ne i8 %221, 0, !dbg !1391
br i1 %223, label %if.then3, label %if.done4, !dbg !1391
if.then3: ; preds = %runtime.mem_alloc_bytes.exit
%224 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 0, !dbg !1392
%225 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 1, !dbg !1392
%226 = bitcast { i8*, i64 }* %224 to i8*, !dbg !1392
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %226, i8* align 8 %181, i64 16, i1 false), !dbg !1392
store i8 %221, i8* %225, align 1, !dbg !1392
ret void, !dbg !1392
if.done4: ; preds = %runtime.mem_alloc_bytes.exit
%227 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 4, !dbg !1395
%228 = getelementptr inbounds { { i8*, i64 }*, i64, i64, %runtime.Allocator }, { { i8*, i64 }*, i64, i64, %runtime.Allocator }* %227, i32 0, i32 0, !dbg !1395
%229 = load { i8*, i64 }*, { i8*, i64 }** %228, align 8, !dbg !1395
%230 = icmp eq { i8*, i64 }* %229, null, !dbg !1395
br i1 %230, label %if.then5, label %if.done6, !dbg !1395
if.then5: ; preds = %if.done4
%231 = load [2 x i64], [2 x i64]* %182, align 8, !dbg !1254
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([74 x i8], [74 x i8]* @"csbs$7f", i64 0, i64 0), i64 73 }, i32 78, i32 26, %..string { i8* getelementptr inbounds ([29 x i8], [29 x i8]* @"csbs$81", i64 0, i64 0), i64 28 } }, %runtime.Source_Code_Location* %24, align 8, !dbg !1254
%232 = bitcast { { { i8*, i64 }*, i64, i64, %runtime.Allocator }, i8 }* %25 to i8*, !dbg !1254
call void @llvm.memset.p0i8.i64(i8* %232, i8 0, i64 48, i1 false), !dbg !1254
call void @runtime.make_dynamic_array-9855({ { { i8*, i64 }*, i64, i64, %runtime.Allocator }, i8 }* %25, [2 x i64] %231, %runtime.Source_Code_Location* %24, i8* %__.context_ptr), !dbg !1254
%233 = getelementptr inbounds { { { i8*, i64 }*, i64, i64, %runtime.Allocator }, i8 }, { { { i8*, i64 }*, i64, i64, %runtime.Allocator }, i8 }* %25, i32 0, i32 0, !dbg !1254
%234 = bitcast { { i8*, i64 }*, i64, i64, %runtime.Allocator }* %227 to i8*, !dbg !1254
%235 = bitcast { { i8*, i64 }*, i64, i64, %runtime.Allocator }* %233 to i8*, !dbg !1254
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %234, i8* align 8 %235, i64 40, i1 false), !dbg !1254
br label %if.done6, !dbg !1395
if.done6: ; preds = %if.then5, %if.done4
%236 = bitcast { i8*, i64 }* %22 to [2 x i64]*, !dbg !1257
%237 = load [2 x i64], [2 x i64]* %236, align 8, !dbg !1257
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([74 x i8], [74 x i8]* @"csbs$7f", i64 0, i64 0), i64 73 }, i32 80, i32 2, %..string { i8* getelementptr inbounds ([29 x i8], [29 x i8]* @"csbs$81", i64 0, i64 0), i64 28 } }, %runtime.Source_Code_Location* %26, align 8, !dbg !1257
call void @runtime.append_elem-8457({ { i8*, i64 }*, i64, i64, %runtime.Allocator }* %227, [2 x i64] %237, %runtime.Source_Code_Location* %26, i8* %__.context_ptr), !dbg !1257
%238 = getelementptr inbounds %runtime.Context, %runtime.Context* %29, i32 0, i32 3, !dbg !1258
%239 = bitcast %runtime.Logger* %27 to i8*, !dbg !1258
%240 = bitcast %runtime.Logger* %238 to i8*, !dbg !1258
%241 = getelementptr i8, i8* %239, i64 32, !dbg !1258
call void @llvm.memset.p0i8.i64(i8* align 8 %241, i8 0, i64 0, i1 false), !dbg !1258
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %239, i8* align 8 %240, i64 32, i1 false), !dbg !1258
%242 = getelementptr inbounds %runtime.Logger, %runtime.Logger* %27, i32 0, i32 2, !dbg !1396
%243 = load i64, i64* %242, align 8, !dbg !1396
%244 = icmp sle i64 %243, 20, !dbg !1396
br i1 %244, label %if.then7, label %if.done10, !dbg !1396
if.then7: ; preds = %if.done6
%245 = getelementptr inbounds %runtime.Logger, %runtime.Logger* %27, i32 0, i32 0, !dbg !1397
%246 = load void (i8*, i64, [2 x i64], i16, %runtime.Source_Code_Location*, i8*)*, void (i8*, i64, [2 x i64], i16, %runtime.Source_Code_Location*, i8*)** %245, align 8, !dbg !1397
%247 = icmp ne void (i8*, i64, [2 x i64], i16, %runtime.Source_Code_Location*, i8*)* %246, null, !dbg !1397
br i1 %247, label %if.then8, label %if.done10, !dbg !1397
if.then8: ; preds = %if.then7
%248 = getelementptr inbounds %runtime.Logger, %runtime.Logger* %27, i32 0, i32 1, !dbg !1259
%249 = load i8*, i8** %248, align 8, !dbg !1259
%250 = getelementptr inbounds %runtime.Logger, %runtime.Logger* %27, i32 0, i32 3, !dbg !1259
%251 = load i16, i16* %250, align 2, !dbg !1259
%252 = bitcast [2 x i64]* %28 to %..string*, !dbg !1259
store %..string { i8* getelementptr inbounds ([52 x i8], [52 x i8]* @"csbs$82", i64 0, i64 0), i64 51 }, %..string* %252, align 8, !dbg !1259
%253 = load [2 x i64], [2 x i64]* %28, align 8, !dbg !1259
call void %246(i8* %249, i64 20, [2 x i64] %253, i16 %251, %runtime.Source_Code_Location* %3, i8* %__.context_ptr), !dbg !1259
br label %if.done10, !dbg !1397
if.done10: ; preds = %if.then7, %if.then8, %if.done6
%254 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 0, !dbg !1398
%255 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 1, !dbg !1398
%256 = bitcast { i8*, i64 }* %254 to i8*, !dbg !1398
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %256, i8* align 8 %181, i64 16, i1 false), !dbg !1398
store i8 0, i8* %255, align 1, !dbg !1398
ret void, !dbg !1398
}
define dso_local i8 @runtime.default_temp_allocator_free-1077(%runtime.Default_Temp_Allocator* %0, i8* %1, %runtime.Source_Code_Location* %2, i8* noalias nocapture nonnull %__.context_ptr) !dbg !1399 {
decls:
%3 = alloca %runtime.Allocator, align 8
%4 = alloca %runtime.Allocator, align 8
%5 = alloca { { i8*, i64 }, i8 }, align 8, !dbg !1417
call void @llvm.dbg.declare(metadata { i8*, i64 }* %6, metadata !1410, metadata !DIExpression()), !dbg !1430
%6 = alloca { i8*, i64 }, align 8, !dbg !1431
call void @llvm.dbg.declare(metadata { i8*, i64 }* %7, metadata !1410, metadata !DIExpression()), !dbg !1430
%7 = alloca { i8*, i64 }, align 8, !dbg !1431
%8 = alloca %runtime.Source_Code_Location, align 8, !dbg !1432
%9 = alloca %runtime.Source_Code_Location, align 8, !dbg !1433
call void @llvm.dbg.value(metadata %runtime.Default_Temp_Allocator* %0, metadata !1403, metadata !DIExpression()), !dbg !1434
call void @llvm.dbg.value(metadata i8* %1, metadata !1404, metadata !DIExpression()), !dbg !1434
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1405, metadata !DIExpression()), !dbg !1435
%10 = icmp eq i8* %1, null, !dbg !1436
br i1 %10, label %if.then, label %if.done, !dbg !1436
if.then: ; preds = %if.done4, %for.index.loop, %cmp.and, %decls
%merge = phi i8 [ 0, %cmp.and ], [ 0, %decls ], [ 2, %for.index.loop ], [ 2, %if.done4 ]
ret i8 %merge, !dbg !1437
if.done: ; preds = %decls
call void @llvm.dbg.value(metadata i64 0, metadata !1406, metadata !DIExpression()), !dbg !1440
%11 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 0, !dbg !1441
%12 = bitcast { i8*, i64 }* %11 to [2 x i64]*, !dbg !1441
%13 = load [2 x i64], [2 x i64]* %12, align 8, !dbg !1441
%14 = call i8* @runtime.raw_slice_data-9714([2 x i64] %13), !dbg !1441
%15 = ptrtoint i8* %14 to i64, !dbg !1441
call void @llvm.dbg.value(metadata i64 %15, metadata !1406, metadata !DIExpression()), !dbg !1440
call void @llvm.dbg.value(metadata i64 0, metadata !1408, metadata !DIExpression()), !dbg !1440
%16 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %11, i32 0, i32 1, !dbg !1442
%17 = load i64, i64* %16, align 8, !dbg !1442
%18 = add i64 %15, %17, !dbg !1442
call void @llvm.dbg.value(metadata i64 %18, metadata !1408, metadata !DIExpression()), !dbg !1440
call void @llvm.dbg.value(metadata i64 0, metadata !1409, metadata !DIExpression()), !dbg !1440
%19 = ptrtoint i8* %1 to i64, !dbg !1443
call void @llvm.dbg.value(metadata i64 %19, metadata !1409, metadata !DIExpression()), !dbg !1440
%20 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 2, !dbg !1444
%21 = load i8*, i8** %20, align 8, !dbg !1444
%22 = icmp eq i8* %21, %1, !dbg !1444
br i1 %22, label %if.then1, label %if.done2, !dbg !1444
if.then1: ; preds = %if.done
%23 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 1, !dbg !1445
%24 = ptrtoint i8* %21 to i64, !dbg !1445
%25 = sub i64 %24, %15, !dbg !1445
store i64 %25, i64* %23, align 8, !dbg !1445
store i8* null, i8** %20, align 8, !dbg !1448
ret i8 0, !dbg !1449
if.done2: ; preds = %if.done
%26 = icmp ule i64 %15, %19, !dbg !1450
br i1 %26, label %cmp.and, label %if.done4, !dbg !1450
cmp.and: ; preds = %if.done2
%27 = icmp ult i64 %19, %18, !dbg !1450
br i1 %27, label %if.then, label %if.done4, !dbg !1450
if.done4: ; preds = %cmp.and, %if.done2
%28 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 4, !dbg !1451
%29 = getelementptr inbounds { { i8*, i64 }*, i64, i64, %runtime.Allocator }, { { i8*, i64 }*, i64, i64, %runtime.Allocator }* %28, i32 0, i32 1, !dbg !1451
%30 = load i64, i64* %29, align 8, !dbg !1451
%31 = icmp ne i64 %30, 0, !dbg !1451
br i1 %31, label %if.then5, label %if.then, !dbg !1451
if.then5: ; preds = %if.done4
%32 = bitcast { i8*, i64 }* %6 to i8*, !dbg !1431
call void @llvm.memset.p0i8.i64(i8* %32, i8 0, i64 16, i1 false), !dbg !1431
call void @llvm.dbg.value(metadata i64 0, metadata !1414, metadata !DIExpression()), !dbg !1452
br label %for.index.loop, !dbg !1431
for.index.loop: ; preds = %for.index.body, %if.then5
%.0 = phi i64 [ -1, %if.then5 ], [ %33, %for.index.body ], !dbg !1431
%33 = add i64 %.0, 1, !dbg !1431
%34 = load i64, i64* %29, align 8, !dbg !1431
%35 = icmp slt i64 %33, %34, !dbg !1431
br i1 %35, label %for.index.body, label %if.then, !dbg !1431
for.index.body: ; preds = %for.index.loop
%36 = getelementptr inbounds { { i8*, i64 }*, i64, i64, %runtime.Allocator }, { { i8*, i64 }*, i64, i64, %runtime.Allocator }* %28, i32 0, i32 0, !dbg !1431
%37 = load { i8*, i64 }*, { i8*, i64 }** %36, align 8, !dbg !1431
%38 = getelementptr { i8*, i64 }, { i8*, i64 }* %37, i64 %33, !dbg !1431
%39 = bitcast { i8*, i64 }* %7 to i8*, !dbg !1431
%40 = bitcast { i8*, i64 }* %38 to i8*, !dbg !1431
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %39, i8* align 8 %40, i64 16, i1 false), !dbg !1431
call void @llvm.dbg.value(metadata i64 %33, metadata !1414, metadata !DIExpression()), !dbg !1452
call void @llvm.dbg.value(metadata i8* null, metadata !1415, metadata !DIExpression()), !dbg !1453
%41 = bitcast { i8*, i64 }* %7 to [2 x i64]*, !dbg !1454
%42 = load [2 x i64], [2 x i64]* %41, align 8, !dbg !1454
%43 = call i8* @runtime.raw_slice_data-9714([2 x i64] %42), !dbg !1454
call void @llvm.dbg.value(metadata i8* %43, metadata !1415, metadata !DIExpression()), !dbg !1453
%44 = icmp eq i8* %43, %1, !dbg !1455
br i1 %44, label %if.then6, label %for.index.loop, !dbg !1455
if.then6: ; preds = %for.index.body
%45 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 3, !dbg !1432
%46 = bitcast %runtime.Allocator* %45 to [2 x i64]*, !dbg !1432
%47 = load [2 x i64], [2 x i64]* %46, align 8, !dbg !1432
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([74 x i8], [74 x i8]* @"csbs$7f", i64 0, i64 0), i64 73 }, i32 117, i32 5, %..string { i8* getelementptr inbounds ([28 x i8], [28 x i8]* @"csbs$83", i64 0, i64 0), i64 27 } }, %runtime.Source_Code_Location* %8, align 8, !dbg !1432
%48 = bitcast %runtime.Allocator* %3 to i8*, !dbg !1456
call void @llvm.lifetime.start.p0i8(i64 16, i8* %48), !dbg !1456
%49 = bitcast %runtime.Allocator* %4 to i8*, !dbg !1456
call void @llvm.lifetime.start.p0i8(i64 16, i8* %49), !dbg !1456
%50 = bitcast { { i8*, i64 }, i8 }* %5 to i8*, !dbg !1456
call void @llvm.lifetime.start.p0i8(i64 24, i8* %50), !dbg !1456
call void @llvm.dbg.declare(metadata !112, metadata !1424, metadata !DIExpression()), !dbg !1456
call void @llvm.dbg.value(metadata i8* %43, metadata !1423, metadata !DIExpression()), !dbg !1457
%51 = bitcast %runtime.Allocator* %3 to [2 x i64]*
store [2 x i64] %47, [2 x i64]* %51, align 8, !noalias !1458
%52 = bitcast %runtime.Allocator* %4 to i8*
%53 = bitcast %runtime.Allocator* %3 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %52, i8* align 8 %53, i64 16, i1 false), !noalias !1458
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1425, metadata !DIExpression()), !dbg !1461
%54 = icmp eq i8* %43, null, !dbg !1462
br i1 %54, label %if.then.i, label %if.done.i, !dbg !1462
if.then.i: ; preds = %if.done.i, %if.then6
%55 = bitcast %runtime.Allocator* %3 to i8*, !dbg !1463
call void @llvm.lifetime.end.p0i8(i64 16, i8* %55), !dbg !1463
%56 = bitcast %runtime.Allocator* %4 to i8*, !dbg !1463
call void @llvm.lifetime.end.p0i8(i64 16, i8* %56), !dbg !1463
%57 = bitcast { { i8*, i64 }, i8 }* %5 to i8*, !dbg !1463
call void @llvm.lifetime.end.p0i8(i64 24, i8* %57), !dbg !1463
br label %runtime.mem_free.exit, !dbg !1463
if.done.i: ; preds = %if.then6
%58 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %4, i32 0, i32 0, !dbg !1466
%59 = load i8*, i8** %58, align 8, !dbg !1466, !noalias !1458
%60 = icmp eq i8* %59, null, !dbg !1466
br i1 %60, label %if.then.i, label %if.done2.i, !dbg !1466
if.done2.i: ; preds = %if.done.i
call void @llvm.dbg.value(metadata i8 0, metadata !1426, metadata !DIExpression()), !dbg !1467
%61 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %4, i32 0, i32 1, !dbg !1417
%62 = load i8*, i8** %61, align 8, !dbg !1417, !noalias !1458
%63 = bitcast { { i8*, i64 }, i8 }* %5 to i8*, !dbg !1417
call void @llvm.memset.p0i8.i64(i8* %63, i8 0, i64 24, i1 false), !dbg !1417, !noalias !1458
%64 = bitcast i8* %59 to void ({ { i8*, i64 }, i8 }*, i8*, i8, i64, i64, i8*, i64, %runtime.Source_Code_Location*, i8*)*, !dbg !1417
call void %64({ { i8*, i64 }, i8 }* %5, i8* %62, i8 1, i64 0, i64 0, i8* %43, i64 0, %runtime.Source_Code_Location* %8, i8* %__.context_ptr) #4, !dbg !1417
%65 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %5, i32 0, i32 1, !dbg !1417
%66 = load i8, i8* %65, align 1, !dbg !1417, !noalias !1458
call void @llvm.dbg.value(metadata i8 %66, metadata !1426, metadata !DIExpression()), !dbg !1467
%67 = bitcast %runtime.Allocator* %3 to i8*, !dbg !1468
call void @llvm.lifetime.end.p0i8(i64 16, i8* %67), !dbg !1468
%68 = bitcast %runtime.Allocator* %4 to i8*, !dbg !1468
call void @llvm.lifetime.end.p0i8(i64 16, i8* %68), !dbg !1468
%69 = bitcast { { i8*, i64 }, i8 }* %5 to i8*, !dbg !1468
call void @llvm.lifetime.end.p0i8(i64 24, i8* %69), !dbg !1468
br label %runtime.mem_free.exit, !dbg !1468
runtime.mem_free.exit: ; preds = %if.done2.i, %if.then.i
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([74 x i8], [74 x i8]* @"csbs$7f", i64 0, i64 0), i64 73 }, i32 118, i32 5, %..string { i8* getelementptr inbounds ([28 x i8], [28 x i8]* @"csbs$83", i64 0, i64 0), i64 27 } }, %runtime.Source_Code_Location* %9, align 8, !dbg !1433
call void @runtime.ordered_remove-8534({ { i8*, i64 }*, i64, i64, %runtime.Allocator }* %28, i64 %33, %runtime.Source_Code_Location* %9, i8* %__.context_ptr), !dbg !1433
ret i8 0, !dbg !1469
}
define dso_local void @runtime.default_temp_allocator_free_all-1091(%runtime.Default_Temp_Allocator* %0, %runtime.Source_Code_Location* %1, i8* noalias nocapture nonnull %__.context_ptr) !dbg !1470 {
decls:
%2 = alloca %runtime.Allocator, align 8
%3 = alloca %runtime.Allocator, align 8
%4 = alloca { { i8*, i64 }, i8 }, align 8, !dbg !1479
call void @llvm.dbg.declare(metadata { i8*, i64 }* %5, metadata !1476, metadata !DIExpression()), !dbg !1482
%5 = alloca { i8*, i64 }, align 8, !dbg !1483
call void @llvm.dbg.declare(metadata { i8*, i64 }* %6, metadata !1476, metadata !DIExpression()), !dbg !1482
%6 = alloca { i8*, i64 }, align 8, !dbg !1483
%7 = alloca %runtime.Source_Code_Location, align 8, !dbg !1484
call void @llvm.dbg.value(metadata %runtime.Default_Temp_Allocator* %0, metadata !1474, metadata !DIExpression()), !dbg !1485
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1475, metadata !DIExpression()), !dbg !1486
%8 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 1, !dbg !1487
store i64 0, i64* %8, align 8, !dbg !1487
%9 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 2, !dbg !1488
store i8* null, i8** %9, align 8, !dbg !1488
%10 = bitcast { i8*, i64 }* %5 to i8*, !dbg !1483
call void @llvm.memset.p0i8.i64(i8* %10, i8 0, i64 16, i1 false), !dbg !1483
%11 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 4, !dbg !1483
%12 = getelementptr inbounds { { i8*, i64 }*, i64, i64, %runtime.Allocator }, { { i8*, i64 }*, i64, i64, %runtime.Allocator }* %11, i32 0, i32 1, !dbg !1483
br label %for.index.loop, !dbg !1483
for.index.loop: ; preds = %runtime.mem_free.exit, %decls
%.0 = phi i64 [ -1, %decls ], [ %13, %runtime.mem_free.exit ], !dbg !1483
%13 = add i64 %.0, 1, !dbg !1483
%14 = load i64, i64* %12, align 8, !dbg !1483
%15 = icmp slt i64 %13, %14, !dbg !1483
br i1 %15, label %for.index.body, label %for.index.done, !dbg !1483
for.index.body: ; preds = %for.index.loop
%16 = getelementptr inbounds { { i8*, i64 }*, i64, i64, %runtime.Allocator }, { { i8*, i64 }*, i64, i64, %runtime.Allocator }* %11, i32 0, i32 0, !dbg !1483
%17 = load { i8*, i64 }*, { i8*, i64 }** %16, align 8, !dbg !1483
%18 = getelementptr { i8*, i64 }, { i8*, i64 }* %17, i64 %13, !dbg !1483
%19 = bitcast { i8*, i64 }* %6 to i8*, !dbg !1483
%20 = bitcast { i8*, i64 }* %18 to i8*, !dbg !1483
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %19, i8* align 8 %20, i64 16, i1 false), !dbg !1483
%21 = bitcast { i8*, i64 }* %6 to [2 x i64]*, !dbg !1484
%22 = load [2 x i64], [2 x i64]* %21, align 8, !dbg !1484
%23 = call i8* @runtime.raw_slice_data-9714([2 x i64] %22), !dbg !1484
%24 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 3, !dbg !1484
%25 = bitcast %runtime.Allocator* %24 to [2 x i64]*, !dbg !1484
%26 = load [2 x i64], [2 x i64]* %25, align 8, !dbg !1484
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([74 x i8], [74 x i8]* @"csbs$7f", i64 0, i64 0), i64 73 }, i32 132, i32 3, %..string { i8* getelementptr inbounds ([32 x i8], [32 x i8]* @"csbs$84", i64 0, i64 0), i64 31 } }, %runtime.Source_Code_Location* %7, align 8, !dbg !1484
%27 = bitcast %runtime.Allocator* %2 to i8*, !dbg !1489
call void @llvm.lifetime.start.p0i8(i64 16, i8* %27), !dbg !1489
%28 = bitcast %runtime.Allocator* %3 to i8*, !dbg !1489
call void @llvm.lifetime.start.p0i8(i64 16, i8* %28), !dbg !1489
%29 = bitcast { { i8*, i64 }, i8 }* %4 to i8*, !dbg !1489
call void @llvm.lifetime.start.p0i8(i64 24, i8* %29), !dbg !1489
call void @llvm.dbg.declare(metadata !112, metadata !1424, metadata !DIExpression()), !dbg !1489
call void @llvm.dbg.value(metadata i8* %23, metadata !1423, metadata !DIExpression()), !dbg !1490
%30 = bitcast %runtime.Allocator* %2 to [2 x i64]*
store [2 x i64] %26, [2 x i64]* %30, align 8, !noalias !1491
%31 = bitcast %runtime.Allocator* %3 to i8*
%32 = bitcast %runtime.Allocator* %2 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %31, i8* align 8 %32, i64 16, i1 false), !noalias !1491
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1425, metadata !DIExpression()), !dbg !1494
%33 = icmp eq i8* %23, null, !dbg !1495
br i1 %33, label %if.then.i, label %if.done.i, !dbg !1495
if.then.i: ; preds = %if.done.i, %for.index.body
%34 = bitcast %runtime.Allocator* %2 to i8*, !dbg !1496
call void @llvm.lifetime.end.p0i8(i64 16, i8* %34), !dbg !1496
%35 = bitcast %runtime.Allocator* %3 to i8*, !dbg !1496
call void @llvm.lifetime.end.p0i8(i64 16, i8* %35), !dbg !1496
%36 = bitcast { { i8*, i64 }, i8 }* %4 to i8*, !dbg !1496
call void @llvm.lifetime.end.p0i8(i64 24, i8* %36), !dbg !1496
br label %runtime.mem_free.exit, !dbg !1496
if.done.i: ; preds = %for.index.body
%37 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %3, i32 0, i32 0, !dbg !1497
%38 = load i8*, i8** %37, align 8, !dbg !1497, !noalias !1491
%39 = icmp eq i8* %38, null, !dbg !1497
br i1 %39, label %if.then.i, label %if.done2.i, !dbg !1497
if.done2.i: ; preds = %if.done.i
call void @llvm.dbg.value(metadata i8 0, metadata !1426, metadata !DIExpression()), !dbg !1498
%40 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %3, i32 0, i32 1, !dbg !1479
%41 = load i8*, i8** %40, align 8, !dbg !1479, !noalias !1491
%42 = bitcast { { i8*, i64 }, i8 }* %4 to i8*, !dbg !1479
call void @llvm.memset.p0i8.i64(i8* %42, i8 0, i64 24, i1 false), !dbg !1479, !noalias !1491
%43 = bitcast i8* %38 to void ({ { i8*, i64 }, i8 }*, i8*, i8, i64, i64, i8*, i64, %runtime.Source_Code_Location*, i8*)*, !dbg !1479
call void %43({ { i8*, i64 }, i8 }* %4, i8* %41, i8 1, i64 0, i64 0, i8* %23, i64 0, %runtime.Source_Code_Location* %7, i8* %__.context_ptr) #4, !dbg !1479
%44 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %4, i32 0, i32 1, !dbg !1479
%45 = load i8, i8* %44, align 1, !dbg !1479, !noalias !1491
call void @llvm.dbg.value(metadata i8 %45, metadata !1426, metadata !DIExpression()), !dbg !1498
%46 = bitcast %runtime.Allocator* %2 to i8*, !dbg !1499
call void @llvm.lifetime.end.p0i8(i64 16, i8* %46), !dbg !1499
%47 = bitcast %runtime.Allocator* %3 to i8*, !dbg !1499
call void @llvm.lifetime.end.p0i8(i64 16, i8* %47), !dbg !1499
%48 = bitcast { { i8*, i64 }, i8 }* %4 to i8*, !dbg !1499
call void @llvm.lifetime.end.p0i8(i64 24, i8* %48), !dbg !1499
br label %runtime.mem_free.exit, !dbg !1499
runtime.mem_free.exit: ; preds = %if.done2.i, %if.then.i
br label %for.index.loop, !dbg !1483
for.index.done: ; preds = %for.index.loop
call void @runtime.clear_dynamic_array-8542({ { i8*, i64 }*, i64, i64, %runtime.Allocator }* %11), !dbg !1500
ret void, !dbg !1486
}
define dso_local void @runtime.default_temp_allocator_resize-1096({ { i8*, i64 }, i8 }* noalias sret %agg.result, %runtime.Default_Temp_Allocator* %0, i8* %1, i64 %2, i64 %3, i64 %4, %runtime.Source_Code_Location* %5, i8* noalias nocapture nonnull %__.context_ptr) !dbg !1501 {
decls:
%6 = alloca %runtime.Raw_Slice, align 8, !dbg !1517
%7 = alloca %runtime.Raw_Slice, align 8, !dbg !1521
%8 = alloca { i8*, i64 }, align 8, !dbg !1527
call void @llvm.dbg.declare(metadata { i8*, i64 }* %9, metadata !1515, metadata !DIExpression()), !dbg !1528
%9 = alloca { i8*, i64 }, align 8, !dbg !1528
%10 = alloca { { i8*, i64 }, i8 }, align 8, !dbg !1528
%11 = alloca { i8*, i64 }, align 8, !dbg !1529
call void @llvm.dbg.value(metadata %runtime.Default_Temp_Allocator* %0, metadata !1505, metadata !DIExpression()), !dbg !1530
call void @llvm.dbg.value(metadata i8* %1, metadata !1506, metadata !DIExpression()), !dbg !1530
call void @llvm.dbg.value(metadata i64 %2, metadata !1507, metadata !DIExpression()), !dbg !1530
call void @llvm.dbg.value(metadata i64 %3, metadata !1508, metadata !DIExpression()), !dbg !1530
call void @llvm.dbg.value(metadata i64 %4, metadata !1509, metadata !DIExpression()), !dbg !1530
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1510, metadata !DIExpression()), !dbg !1531
call void @llvm.dbg.value(metadata i64 0, metadata !1511, metadata !DIExpression()), !dbg !1532
%12 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 0, !dbg !1533
%13 = bitcast { i8*, i64 }* %12 to [2 x i64]*, !dbg !1533
%14 = load [2 x i64], [2 x i64]* %13, align 8, !dbg !1533
%15 = call i8* @runtime.raw_slice_data-9714([2 x i64] %14), !dbg !1533
%16 = ptrtoint i8* %15 to i64, !dbg !1533
call void @llvm.dbg.value(metadata i64 %16, metadata !1511, metadata !DIExpression()), !dbg !1532
call void @llvm.dbg.value(metadata i64 0, metadata !1513, metadata !DIExpression()), !dbg !1532
%17 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %12, i32 0, i32 1, !dbg !1534
%18 = load i64, i64* %17, align 8, !dbg !1534
%19 = add i64 %16, %18, !dbg !1534
call void @llvm.dbg.value(metadata i64 %19, metadata !1513, metadata !DIExpression()), !dbg !1532
call void @llvm.dbg.value(metadata i64 0, metadata !1514, metadata !DIExpression()), !dbg !1532
%20 = ptrtoint i8* %1 to i64, !dbg !1535
call void @llvm.dbg.value(metadata i64 %20, metadata !1514, metadata !DIExpression()), !dbg !1532
%21 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 2, !dbg !1536
%22 = load i8*, i8** %21, align 8, !dbg !1536
%23 = icmp eq i8* %1, %22, !dbg !1536
br i1 %23, label %cmp.and, label %if.done2, !dbg !1536
cmp.and: ; preds = %decls
%24 = and i64 %20, %4, !dbg !1536
%25 = sub i64 %24, 1, !dbg !1536
%26 = icmp eq i64 %25, 0, !dbg !1536
br i1 %26, label %if.then, label %if.done2, !dbg !1536
if.then: ; preds = %cmp.and
%27 = add i64 %20, %3, !dbg !1537
%28 = icmp ult i64 %27, %19, !dbg !1537
br i1 %28, label %if.then1, label %if.done2, !dbg !1537
if.then1: ; preds = %if.then
%29 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 1, !dbg !1538
%30 = sub i64 %20, %16, !dbg !1538
%31 = add i64 %30, %3, !dbg !1538
store i64 %31, i64* %29, align 8, !dbg !1538
%32 = bitcast %runtime.Raw_Slice* %7 to i8*, !dbg !1539
call void @llvm.lifetime.start.p0i8(i64 16, i8* %32), !dbg !1539
call void @llvm.dbg.value(metadata i8* %1, metadata !1163, metadata !DIExpression()), !dbg !1539
call void @llvm.dbg.value(metadata i64 %3, metadata !1164, metadata !DIExpression()), !dbg !1539
%33 = bitcast %runtime.Raw_Slice* %7 to i8*, !dbg !1521
call void @llvm.memset.p0i8.i64(i8* align 8 %33, i8 0, i64 16, i1 false), !dbg !1521
%34 = getelementptr inbounds %runtime.Raw_Slice, %runtime.Raw_Slice* %7, i32 0, i32 0, !dbg !1521
store i8* %1, i8** %34, align 8, !dbg !1521
%35 = icmp sgt i64 %3, 0, !dbg !1521
%36 = select i1 %35, i64 %3, i64 0, !dbg !1521
%37 = getelementptr inbounds %runtime.Raw_Slice, %runtime.Raw_Slice* %7, i32 0, i32 1, !dbg !1521
store i64 %36, i64* %37, align 8, !dbg !1521
%38 = bitcast %runtime.Raw_Slice* %7 to { i8*, i64 }*, !dbg !1521
%39 = bitcast { i8*, i64 }* %38 to [2 x i64]*, !dbg !1521
%40 = load [2 x i64], [2 x i64]* %39, align 8, !dbg !1521
%41 = bitcast %runtime.Raw_Slice* %7 to i8*, !dbg !1521
call void @llvm.lifetime.end.p0i8(i64 16, i8* %41), !dbg !1521
%42 = bitcast { i8*, i64 }* %8 to [2 x i64]*, !dbg !1527
store [2 x i64] %40, [2 x i64]* %42, align 8, !dbg !1527
%43 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 0, !dbg !1527
%44 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 1, !dbg !1527
%45 = bitcast { i8*, i64 }* %43 to i8*, !dbg !1527
%46 = bitcast { i8*, i64 }* %8 to i8*, !dbg !1527
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %45, i8* align 8 %46, i64 16, i1 false), !dbg !1527
store i8 0, i8* %44, align 1, !dbg !1527
ret void, !dbg !1527
if.done2: ; preds = %if.then, %cmp.and, %decls
%47 = bitcast { i8*, i64 }* %9 to i8*, !dbg !1528
call void @llvm.memset.p0i8.i64(i8* %47, i8 0, i64 16, i1 false), !dbg !1528
call void @llvm.dbg.value(metadata i8 0, metadata !1516, metadata !DIExpression()), !dbg !1532
%48 = bitcast { { i8*, i64 }, i8 }* %10 to i8*, !dbg !1528
call void @llvm.memset.p0i8.i64(i8* %48, i8 0, i64 24, i1 false), !dbg !1528
call void @runtime.default_temp_allocator_alloc-1071({ { i8*, i64 }, i8 }* %10, %runtime.Default_Temp_Allocator* %0, i64 %3, i64 %4, %runtime.Source_Code_Location* %5, i8* %__.context_ptr), !dbg !1528
%49 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %10, i32 0, i32 0, !dbg !1528
%50 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %10, i32 0, i32 1, !dbg !1528
%51 = load i8, i8* %50, align 1, !dbg !1528
%52 = bitcast { i8*, i64 }* %49 to i8*, !dbg !1528
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %47, i8* align 8 %52, i64 16, i1 false), !dbg !1528
call void @llvm.dbg.value(metadata i8 %51, metadata !1516, metadata !DIExpression()), !dbg !1532
%53 = icmp eq i8 %51, 0, !dbg !1540
br i1 %53, label %if.then3, label %if.done4, !dbg !1540
if.then3: ; preds = %if.done2
%54 = bitcast %runtime.Raw_Slice* %6 to i8*, !dbg !1541
call void @llvm.lifetime.start.p0i8(i64 16, i8* %54), !dbg !1541
call void @llvm.dbg.value(metadata i8* %1, metadata !1163, metadata !DIExpression()), !dbg !1541
call void @llvm.dbg.value(metadata i64 %2, metadata !1164, metadata !DIExpression()), !dbg !1541
%55 = bitcast %runtime.Raw_Slice* %6 to i8*, !dbg !1517
call void @llvm.memset.p0i8.i64(i8* align 8 %55, i8 0, i64 16, i1 false), !dbg !1517
%56 = getelementptr inbounds %runtime.Raw_Slice, %runtime.Raw_Slice* %6, i32 0, i32 0, !dbg !1517
store i8* %1, i8** %56, align 8, !dbg !1517
%57 = icmp sgt i64 %2, 0, !dbg !1517
%58 = select i1 %57, i64 %2, i64 0, !dbg !1517
%59 = getelementptr inbounds %runtime.Raw_Slice, %runtime.Raw_Slice* %6, i32 0, i32 1, !dbg !1517
store i64 %58, i64* %59, align 8, !dbg !1517
%60 = bitcast %runtime.Raw_Slice* %6 to { i8*, i64 }*, !dbg !1517
%61 = bitcast { i8*, i64 }* %60 to [2 x i64]*, !dbg !1517
%62 = load [2 x i64], [2 x i64]* %61, align 8, !dbg !1517
%63 = bitcast %runtime.Raw_Slice* %6 to i8*, !dbg !1517
call void @llvm.lifetime.end.p0i8(i64 16, i8* %63), !dbg !1517
%64 = bitcast { i8*, i64 }* %11 to [2 x i64]*, !dbg !1529
store [2 x i64] %62, [2 x i64]* %64, align 8, !dbg !1529
%65 = bitcast { i8*, i64 }* %9 to [2 x i64]*, !dbg !1529
%66 = load [2 x i64], [2 x i64]* %65, align 8, !dbg !1529
%67 = call i64 @runtime.copy_slice-6928([2 x i64] %66, [2 x i64] %62), !dbg !1529
%68 = call i8 @runtime.default_temp_allocator_free-1077(%runtime.Default_Temp_Allocator* %0, i8* %1, %runtime.Source_Code_Location* %5, i8* %__.context_ptr), !dbg !1542
call void @llvm.dbg.value(metadata i8 %68, metadata !1516, metadata !DIExpression()), !dbg !1532
br label %if.done4, !dbg !1540
if.done4: ; preds = %if.then3, %if.done2
%.0 = phi i8 [ %68, %if.then3 ], [ %51, %if.done2 ], !dbg !1532
call void @llvm.dbg.value(metadata i8 %.0, metadata !1516, metadata !DIExpression()), !dbg !1532
%69 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 0, !dbg !1543
%70 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 1, !dbg !1543
%71 = bitcast { i8*, i64 }* %69 to i8*, !dbg !1543
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %71, i8* align 8 %47, i64 16, i1 false), !dbg !1543
store i8 %.0, i8* %70, align 1, !dbg !1543
ret void, !dbg !1543
}
define dso_local void @runtime.default_temp_allocator_proc({ { i8*, i64 }, i8 }* noalias sret %agg.result, i8* %0, i8 %1, i64 %2, i64 %3, i8* %4, i64 %5, %runtime.Source_Code_Location* %6, i8* noalias nocapture nonnull %__.context_ptr) !dbg !1544 {
decls:
%7 = alloca %runtime.Allocator, align 8, !dbg !1563
%8 = alloca { { i8*, i64 }, i8 }, align 8, !dbg !1566
%9 = alloca { { i8*, i64 }, i8 }, align 8, !dbg !1567
call void @llvm.dbg.value(metadata i8* %0, metadata !1552, metadata !DIExpression()), !dbg !1568
call void @llvm.dbg.value(metadata i8 %1, metadata !1553, metadata !DIExpression()), !dbg !1568
call void @llvm.dbg.value(metadata i64 %2, metadata !1554, metadata !DIExpression()), !dbg !1568
call void @llvm.dbg.value(metadata i64 %3, metadata !1555, metadata !DIExpression()), !dbg !1568
call void @llvm.dbg.value(metadata i8* %4, metadata !1556, metadata !DIExpression()), !dbg !1568
call void @llvm.dbg.value(metadata i64 %5, metadata !1557, metadata !DIExpression()), !dbg !1568
%10 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 0
%11 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 1
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1558, metadata !DIExpression()), !dbg !1569
call void @llvm.dbg.value(metadata %runtime.Default_Temp_Allocator* null, metadata !1559, metadata !DIExpression()), !dbg !1570
%12 = bitcast i8* %0 to %runtime.Default_Temp_Allocator*, !dbg !1571
call void @llvm.dbg.value(metadata %runtime.Default_Temp_Allocator* %12, metadata !1559, metadata !DIExpression()), !dbg !1570
%13 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %12, i32 0, i32 0, !dbg !1572
%14 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %13, i32 0, i32 0, !dbg !1572
%15 = load i8*, i8** %14, align 8, !dbg !1572
%16 = icmp eq i8* %15, null, !dbg !1572
br i1 %16, label %if.then, label %if.done, !dbg !1572
if.then: ; preds = %decls
%17 = call [2 x i64] @runtime.default_allocator(i8* %__.context_ptr), !dbg !1563
%18 = bitcast %runtime.Allocator* %7 to [2 x i64]*, !dbg !1563
store [2 x i64] %17, [2 x i64]* %18, align 8, !dbg !1563
call void @runtime.default_temp_allocator_init(%runtime.Default_Temp_Allocator* %12, i64 4194304, [2 x i64] %17, i8* %__.context_ptr), !dbg !1563
br label %if.done, !dbg !1572
if.done: ; preds = %if.then, %decls
switch i8 %1, label %switch.done [
i8 0, label %switch.case.body
i8 1, label %switch.case.body1
i8 2, label %switch.case.body2
i8 3, label %switch.case.body3
i8 4, label %switch.case.body4
], !dbg !1573
switch.case.body: ; preds = %if.done
%19 = bitcast { { i8*, i64 }, i8 }* %8 to i8*, !dbg !1566
call void @llvm.memset.p0i8.i64(i8* %19, i8 0, i64 24, i1 false), !dbg !1566
call void @runtime.default_temp_allocator_alloc-1071({ { i8*, i64 }, i8 }* %8, %runtime.Default_Temp_Allocator* %12, i64 %2, i64 %3, %runtime.Source_Code_Location* %6, i8* %__.context_ptr), !dbg !1566
%20 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %8, i32 0, i32 0, !dbg !1566
%21 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %8, i32 0, i32 1, !dbg !1566
%22 = load i8, i8* %21, align 1, !dbg !1566
%23 = bitcast { i8*, i64 }* %10 to i8*, !dbg !1566
%24 = bitcast { i8*, i64 }* %20 to i8*, !dbg !1566
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %23, i8* align 8 %24, i64 16, i1 false), !dbg !1566
store i8 %22, i8* %11, align 1, !dbg !1566
br label %switch.done, !dbg !1573
switch.case.body1: ; preds = %if.done
%25 = call i8 @runtime.default_temp_allocator_free-1077(%runtime.Default_Temp_Allocator* %12, i8* %4, %runtime.Source_Code_Location* %6, i8* %__.context_ptr), !dbg !1574
store i8 %25, i8* %11, align 1, !dbg !1574
br label %switch.done, !dbg !1573
switch.case.body2: ; preds = %if.done
call void @runtime.default_temp_allocator_free_all-1091(%runtime.Default_Temp_Allocator* %12, %runtime.Source_Code_Location* %6, i8* %__.context_ptr), !dbg !1575
br label %switch.done, !dbg !1573
switch.case.body3: ; preds = %if.done
%26 = bitcast { { i8*, i64 }, i8 }* %9 to i8*, !dbg !1567
call void @llvm.memset.p0i8.i64(i8* %26, i8 0, i64 24, i1 false), !dbg !1567
call void @runtime.default_temp_allocator_resize-1096({ { i8*, i64 }, i8 }* %9, %runtime.Default_Temp_Allocator* %12, i8* %4, i64 %5, i64 %2, i64 %3, %runtime.Source_Code_Location* %6, i8* %__.context_ptr), !dbg !1567
%27 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %9, i32 0, i32 0, !dbg !1567
%28 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %9, i32 0, i32 1, !dbg !1567
%29 = load i8, i8* %28, align 1, !dbg !1567
%30 = bitcast { i8*, i64 }* %10 to i8*, !dbg !1567
%31 = bitcast { i8*, i64 }* %27 to i8*, !dbg !1567
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %30, i8* align 8 %31, i64 16, i1 false), !dbg !1567
store i8 %29, i8* %11, align 1, !dbg !1567
br label %switch.done, !dbg !1573
switch.case.body4: ; preds = %if.done
call void @llvm.dbg.value(metadata i8* null, metadata !1561, metadata !DIExpression()), !dbg !1576
call void @llvm.dbg.value(metadata i8* %4, metadata !1561, metadata !DIExpression()), !dbg !1576
%32 = icmp ne i8* %4, null, !dbg !1577
br i1 %32, label %if.then5, label %switch.done, !dbg !1577
if.then5: ; preds = %switch.case.body4
store i8 31, i8* %4, align 1, !dbg !1578
br label %switch.done, !dbg !1577
switch.done: ; preds = %switch.case.body4, %if.then5, %switch.case.body3, %switch.case.body2, %switch.case.body1, %switch.case.body, %if.done
ret void, !dbg !1581
}
define dso_local i8 @runtime.__dynamic_array_reserve(i8* %0, i64 %1, i64 %2, i64 %3, %runtime.Source_Code_Location* %4, i8* noalias nocapture nonnull %__.context_ptr) !dbg !1582 {
decls:
%5 = alloca [2 x i64], align 8, !dbg !1606
%6 = alloca %runtime.Source_Code_Location, align 8, !dbg !1606
call void @llvm.dbg.declare(metadata %runtime.Allocator* %7, metadata !1603, metadata !DIExpression()), !dbg !1607
%7 = alloca %runtime.Allocator, align 8, !dbg !1607
call void @llvm.dbg.declare(metadata { i8*, i64 }* %8, metadata !1604, metadata !DIExpression()), !dbg !1608
%8 = alloca { i8*, i64 }, align 8, !dbg !1608
%9 = alloca { { i8*, i64 }, i8 }, align 8, !dbg !1608
call void @llvm.dbg.value(metadata i8* %0, metadata !1587, metadata !DIExpression()), !dbg !1609
call void @llvm.dbg.value(metadata i64 %1, metadata !1588, metadata !DIExpression()), !dbg !1609
call void @llvm.dbg.value(metadata i64 %2, metadata !1589, metadata !DIExpression()), !dbg !1609
call void @llvm.dbg.value(metadata i64 %3, metadata !1590, metadata !DIExpression()), !dbg !1609
call void @llvm.dbg.declare(metadata %runtime.Context* %10, metadata !1591, metadata !DIExpression()), !dbg !1610
%10 = bitcast i8* %__.context_ptr to %runtime.Context*
call void @llvm.dbg.value(metadata %runtime.Raw_Dynamic_Array* null, metadata !1592, metadata !DIExpression()), !dbg !1611
%11 = bitcast i8* %0 to %runtime.Raw_Dynamic_Array*, !dbg !1612
call void @llvm.dbg.value(metadata %runtime.Raw_Dynamic_Array* %11, metadata !1592, metadata !DIExpression()), !dbg !1611
%12 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %11, i32 0, i32 3, !dbg !1613
%13 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %12, i32 0, i32 0, !dbg !1613
%14 = load i8*, i8** %13, align 8, !dbg !1613
%15 = icmp eq i8* %14, null, !dbg !1613
br i1 %15, label %if.then, label %if.done, !dbg !1613
if.then: ; preds = %decls
%16 = getelementptr inbounds %runtime.Context, %runtime.Context* %10, i32 0, i32 0, !dbg !1614
%17 = bitcast %runtime.Allocator* %12 to i8*, !dbg !1614
%18 = bitcast %runtime.Allocator* %16 to i8*, !dbg !1614
call void @llvm.memmove.p0i8.p0i8.i64(i8* align 8 %17, i8* align 8 %18, i64 16, i1 false), !dbg !1614
br label %if.done, !dbg !1613
if.done: ; preds = %if.then, %decls
%19 = load i8*, i8** %13, align 8, !dbg !1606
%20 = icmp ne i8* %19, null, !dbg !1606
%21 = bitcast [2 x i64]* %5 to %..string*, !dbg !1606
%22 = bitcast %..string* %21 to i8*, !dbg !1606
call void @llvm.memset.p0i8.i64(i8* align 8 %22, i8 0, i64 16, i1 false), !dbg !1606
%23 = load [2 x i64], [2 x i64]* %5, align 8, !dbg !1606
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([69 x i8], [69 x i8]* @"csbs$86", i64 0, i64 0), i64 68 }, i32 22, i32 2, %..string { i8* getelementptr inbounds ([24 x i8], [24 x i8]* @"csbs$87", i64 0, i64 0), i64 23 } }, %runtime.Source_Code_Location* %6, align 8, !dbg !1606
call void @runtime.assert(i1 %20, [2 x i64] %23, %runtime.Source_Code_Location* %6, i8* %__.context_ptr), !dbg !1606
%24 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %11, i32 0, i32 2, !dbg !1617
%25 = load i64, i64* %24, align 8, !dbg !1617
%26 = icmp sle i64 %3, %25, !dbg !1617
br i1 %26, label %if.then1, label %if.done2, !dbg !1617
if.then1: ; preds = %cmp.or, %if.done2, %if.done
%merge = phi i8 [ 1, %if.done ], [ 0, %if.done2 ], [ 0, %cmp.or ]
ret i8 %merge, !dbg !1618
if.done2: ; preds = %if.done
call void @llvm.dbg.value(metadata i64 0, metadata !1601, metadata !DIExpression()), !dbg !1611
%27 = mul i64 %25, %1, !dbg !1621
call void @llvm.dbg.value(metadata i64 %27, metadata !1601, metadata !DIExpression()), !dbg !1611
call void @llvm.dbg.value(metadata i64 0, metadata !1602, metadata !DIExpression()), !dbg !1611
%28 = mul i64 %3, %1, !dbg !1622
call void @llvm.dbg.value(metadata i64 %28, metadata !1602, metadata !DIExpression()), !dbg !1611
%29 = bitcast %runtime.Allocator* %7 to i8*, !dbg !1607
%30 = bitcast %runtime.Allocator* %12 to i8*, !dbg !1607
%31 = getelementptr i8, i8* %29, i64 16, !dbg !1607
call void @llvm.memset.p0i8.i64(i8* align 8 %31, i8 0, i64 0, i1 false), !dbg !1607
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %29, i8* align 8 %30, i64 16, i1 false), !dbg !1607
%32 = bitcast { i8*, i64 }* %8 to i8*, !dbg !1608
call void @llvm.memset.p0i8.i64(i8* %32, i8 0, i64 16, i1 false), !dbg !1608
call void @llvm.dbg.value(metadata i8 0, metadata !1605, metadata !DIExpression()), !dbg !1611
%33 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %7, i32 0, i32 0, !dbg !1608
%34 = load i8*, i8** %33, align 8, !dbg !1608
%35 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %7, i32 0, i32 1, !dbg !1608
%36 = load i8*, i8** %35, align 8, !dbg !1608
%37 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %11, i32 0, i32 0, !dbg !1608
%38 = load i8*, i8** %37, align 8, !dbg !1608
%39 = bitcast { { i8*, i64 }, i8 }* %9 to i8*, !dbg !1608
call void @llvm.memset.p0i8.i64(i8* %39, i8 0, i64 24, i1 false), !dbg !1608
%40 = bitcast i8* %34 to void ({ { i8*, i64 }, i8 }*, i8*, i8, i64, i64, i8*, i64, %runtime.Source_Code_Location*, i8*)*, !dbg !1608
call void %40({ { i8*, i64 }, i8 }* %9, i8* %36, i8 3, i64 %28, i64 %2, i8* %38, i64 %27, %runtime.Source_Code_Location* %4, i8* %__.context_ptr), !dbg !1608
%41 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %9, i32 0, i32 0, !dbg !1608
%42 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %9, i32 0, i32 1, !dbg !1608
%43 = load i8, i8* %42, align 1, !dbg !1608
%44 = bitcast { i8*, i64 }* %41 to i8*, !dbg !1608
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %32, i8* align 8 %44, i64 16, i1 false), !dbg !1608
call void @llvm.dbg.value(metadata i8 %43, metadata !1605, metadata !DIExpression()), !dbg !1611
%45 = icmp ne i8 %43, 0, !dbg !1623
br i1 %45, label %if.then1, label %if.done4, !dbg !1623
if.done4: ; preds = %if.done2
%46 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %8, i32 0, i32 0, !dbg !1624
%47 = load i8*, i8** %46, align 8, !dbg !1624
%48 = icmp ne i8* %47, null, !dbg !1624
br i1 %48, label %if.then5, label %cmp.or, !dbg !1624
cmp.or: ; preds = %if.done4
%49 = icmp eq i64 %1, 0, !dbg !1624
br i1 %49, label %if.then5, label %if.then1, !dbg !1624
if.then5: ; preds = %cmp.or, %if.done4
%50 = bitcast { i8*, i64 }* %8 to [2 x i64]*, !dbg !1625
%51 = load [2 x i64], [2 x i64]* %50, align 8, !dbg !1625
%52 = call i8* @runtime.raw_slice_data-9714([2 x i64] %51), !dbg !1625
store i8* %52, i8** %37, align 8, !dbg !1625
%53 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %8, i32 0, i32 1, !dbg !1628
%54 = load i64, i64* %53, align 8, !dbg !1628
%55 = sdiv i64 %54, %1, !dbg !1628
%56 = icmp slt i64 %3, %55, !dbg !1628
%57 = select i1 %56, i64 %3, i64 %55, !dbg !1628
store i64 %57, i64* %24, align 8, !dbg !1628
ret i8 1, !dbg !1629
}
define dso_local i64 @runtime.__dynamic_array_append(i8* %0, i64 %1, i64 %2, i8* %3, i64 %4, %runtime.Source_Code_Location* %5, i8* noalias nocapture nonnull %__.context_ptr) !dbg !1630 {
decls:
%6 = alloca [2 x i64], align 8, !dbg !1647
%7 = alloca %runtime.Source_Code_Location, align 8, !dbg !1647
call void @llvm.dbg.value(metadata i8* %0, metadata !1634, metadata !DIExpression()), !dbg !1648
call void @llvm.dbg.value(metadata i64 %1, metadata !1635, metadata !DIExpression()), !dbg !1648
call void @llvm.dbg.value(metadata i64 %2, metadata !1636, metadata !DIExpression()), !dbg !1648
call void @llvm.dbg.value(metadata i8* %3, metadata !1637, metadata !DIExpression()), !dbg !1648
call void @llvm.dbg.value(metadata i64 %4, metadata !1638, metadata !DIExpression()), !dbg !1648
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1639, metadata !DIExpression()), !dbg !1649
call void @llvm.dbg.value(metadata %runtime.Raw_Dynamic_Array* null, metadata !1640, metadata !DIExpression()), !dbg !1650
%8 = bitcast i8* %0 to %runtime.Raw_Dynamic_Array*, !dbg !1651
call void @llvm.dbg.value(metadata %runtime.Raw_Dynamic_Array* %8, metadata !1640, metadata !DIExpression()), !dbg !1650
%9 = icmp eq i8* %3, null, !dbg !1652
br i1 %9, label %if.then, label %if.done, !dbg !1652
if.then: ; preds = %if.done, %decls
ret i64 0, !dbg !1653
if.done: ; preds = %decls
%10 = icmp sle i64 %4, 0, !dbg !1656
br i1 %10, label %if.then, label %if.done2, !dbg !1656
if.done2: ; preds = %if.done
call void @llvm.dbg.value(metadata i8 0, metadata !1642, metadata !DIExpression()), !dbg !1650
call void @llvm.dbg.value(metadata i8 1, metadata !1642, metadata !DIExpression()), !dbg !1650
%11 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %8, i32 0, i32 2, !dbg !1657
%12 = load i64, i64* %11, align 8, !dbg !1657
%13 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %8, i32 0, i32 1, !dbg !1657
%14 = load i64, i64* %13, align 8, !dbg !1657
%15 = add i64 %14, %4, !dbg !1657
%16 = icmp sle i64 %12, %15, !dbg !1657
br i1 %16, label %if.then3, label %if.done4, !dbg !1657
if.then3: ; preds = %if.done2
call void @llvm.dbg.value(metadata i64 0, metadata !1643, metadata !DIExpression()), !dbg !1658
%17 = mul i64 2, %12, !dbg !1659
%18 = icmp sgt i64 8, %4, !dbg !1659
%19 = select i1 %18, i64 8, i64 %4, !dbg !1659
%20 = add i64 %17, %19, !dbg !1659
call void @llvm.dbg.value(metadata i64 %20, metadata !1643, metadata !DIExpression()), !dbg !1658
%21 = call i8 @runtime.__dynamic_array_reserve(i8* %0, i64 %1, i64 %2, i64 %20, %runtime.Source_Code_Location* %5, i8* %__.context_ptr), !dbg !1660
call void @llvm.dbg.value(metadata i8 %21, metadata !1642, metadata !DIExpression()), !dbg !1650
br label %if.done4, !dbg !1657
if.done4: ; preds = %if.then3, %if.done2
%.0 = phi i8 [ %21, %if.then3 ], [ 1, %if.done2 ], !dbg !1650
call void @llvm.dbg.value(metadata i8 %.0, metadata !1642, metadata !DIExpression()), !dbg !1650
%22 = trunc i8 %.0 to i1, !dbg !1661
br i1 %22, label %if.done6, label %if.then5, !dbg !1661
if.then5: ; preds = %if.done4
%23 = load i64, i64* %13, align 8, !dbg !1662
ret i64 %23, !dbg !1662
if.done6: ; preds = %if.done4
%24 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %8, i32 0, i32 0, !dbg !1647
%25 = load i8*, i8** %24, align 8, !dbg !1647
%26 = icmp ne i8* %25, null, !dbg !1647
%27 = bitcast [2 x i64]* %6 to %..string*, !dbg !1647
%28 = bitcast %..string* %27 to i8*, !dbg !1647
call void @llvm.memset.p0i8.i64(i8* align 8 %28, i8 0, i64 16, i1 false), !dbg !1647
%29 = load [2 x i64], [2 x i64]* %6, align 8, !dbg !1647
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([69 x i8], [69 x i8]* @"csbs$86", i64 0, i64 0), i64 68 }, i32 77, i32 2, %..string { i8* getelementptr inbounds ([23 x i8], [23 x i8]* @"csbs$88", i64 0, i64 0), i64 22 } }, %runtime.Source_Code_Location* %7, align 8, !dbg !1647
call void @runtime.assert(i1 %26, [2 x i64] %29, %runtime.Source_Code_Location* %7, i8* %__.context_ptr), !dbg !1647
call void @llvm.dbg.value(metadata i64 0, metadata !1646, metadata !DIExpression()), !dbg !1650
%30 = load i8*, i8** %24, align 8, !dbg !1665
%31 = ptrtoint i8* %30 to i64, !dbg !1665
%32 = load i64, i64* %13, align 8, !dbg !1665
%33 = mul i64 %1, %32, !dbg !1665
%34 = add i64 %31, %33, !dbg !1665
call void @llvm.dbg.value(metadata i64 %34, metadata !1646, metadata !DIExpression()), !dbg !1650
%35 = inttoptr i64 %34 to i8*, !dbg !1666
%36 = mul i64 %1, %4, !dbg !1666
%37 = call i8* @runtime.mem_copy(i8* %35, i8* %3, i64 %36), !dbg !1666
%38 = load i64, i64* %13, align 8, !dbg !1667
%39 = add i64 %38, %4, !dbg !1667
store i64 %39, i64* %13, align 8, !dbg !1667
ret i64 %39, !dbg !1668
}
define dso_local i64 @runtime.__dynamic_array_append_nothing(i8* %0, i64 %1, i64 %2, %runtime.Source_Code_Location* %3, i8* noalias nocapture nonnull %__.context_ptr) !dbg !1669 {
decls:
%4 = alloca [2 x i64], align 8, !dbg !1684
%5 = alloca %runtime.Source_Code_Location, align 8, !dbg !1684
call void @llvm.dbg.value(metadata i8* %0, metadata !1673, metadata !DIExpression()), !dbg !1685
call void @llvm.dbg.value(metadata i64 %1, metadata !1674, metadata !DIExpression()), !dbg !1685
call void @llvm.dbg.value(metadata i64 %2, metadata !1675, metadata !DIExpression()), !dbg !1685
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1676, metadata !DIExpression()), !dbg !1686
call void @llvm.dbg.value(metadata %runtime.Raw_Dynamic_Array* null, metadata !1677, metadata !DIExpression()), !dbg !1687
%6 = bitcast i8* %0 to %runtime.Raw_Dynamic_Array*, !dbg !1688
call void @llvm.dbg.value(metadata %runtime.Raw_Dynamic_Array* %6, metadata !1677, metadata !DIExpression()), !dbg !1687
call void @llvm.dbg.value(metadata i8 1, metadata !1679, metadata !DIExpression()), !dbg !1687
%7 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %6, i32 0, i32 2, !dbg !1689
%8 = load i64, i64* %7, align 8, !dbg !1689
%9 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %6, i32 0, i32 1, !dbg !1689
%10 = load i64, i64* %9, align 8, !dbg !1689
%11 = add i64 %10, 1, !dbg !1689
%12 = icmp sle i64 %8, %11, !dbg !1689
br i1 %12, label %if.then, label %if.done, !dbg !1689
if.then: ; preds = %decls
call void @llvm.dbg.value(metadata i64 0, metadata !1680, metadata !DIExpression()), !dbg !1690
%13 = mul i64 2, %8, !dbg !1691
%14 = add i64 %13, 8, !dbg !1691
call void @llvm.dbg.value(metadata i64 %14, metadata !1680, metadata !DIExpression()), !dbg !1690
%15 = call i8 @runtime.__dynamic_array_reserve(i8* %0, i64 %1, i64 %2, i64 %14, %runtime.Source_Code_Location* %3, i8* %__.context_ptr), !dbg !1692
call void @llvm.dbg.value(metadata i8 %15, metadata !1679, metadata !DIExpression()), !dbg !1687
br label %if.done, !dbg !1689
if.done: ; preds = %if.then, %decls
%.0 = phi i8 [ %15, %if.then ], [ 1, %decls ], !dbg !1687
call void @llvm.dbg.value(metadata i8 %.0, metadata !1679, metadata !DIExpression()), !dbg !1687
%16 = trunc i8 %.0 to i1, !dbg !1693
br i1 %16, label %if.done2, label %if.then1, !dbg !1693
if.then1: ; preds = %if.done
%17 = load i64, i64* %9, align 8, !dbg !1694
ret i64 %17, !dbg !1694
if.done2: ; preds = %if.done
%18 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %6, i32 0, i32 0, !dbg !1684
%19 = load i8*, i8** %18, align 8, !dbg !1684
%20 = icmp ne i8* %19, null, !dbg !1684
%21 = bitcast [2 x i64]* %4 to %..string*, !dbg !1684
%22 = bitcast %..string* %21 to i8*, !dbg !1684
call void @llvm.memset.p0i8.i64(i8* align 8 %22, i8 0, i64 16, i1 false), !dbg !1684
%23 = load [2 x i64], [2 x i64]* %4, align 8, !dbg !1684
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([69 x i8], [69 x i8]* @"csbs$86", i64 0, i64 0), i64 68 }, i32 98, i32 2, %..string { i8* getelementptr inbounds ([31 x i8], [31 x i8]* @"csbs$89", i64 0, i64 0), i64 30 } }, %runtime.Source_Code_Location* %5, align 8, !dbg !1684
call void @runtime.assert(i1 %20, [2 x i64] %23, %runtime.Source_Code_Location* %5, i8* %__.context_ptr), !dbg !1684
call void @llvm.dbg.value(metadata i64 0, metadata !1683, metadata !DIExpression()), !dbg !1687
%24 = load i8*, i8** %18, align 8, !dbg !1697
%25 = ptrtoint i8* %24 to i64, !dbg !1697
%26 = load i64, i64* %9, align 8, !dbg !1697
%27 = mul i64 %1, %26, !dbg !1697
%28 = add i64 %25, %27, !dbg !1697
call void @llvm.dbg.value(metadata i64 %28, metadata !1683, metadata !DIExpression()), !dbg !1687
%29 = inttoptr i64 %28 to i8*, !dbg !1698
%30 = call i8* @runtime.mem_zero(i8* %29, i64 %1), !dbg !1698
%31 = load i64, i64* %9, align 8, !dbg !1699
%32 = add i64 %31, 1, !dbg !1699
store i64 %32, i64* %9, align 8, !dbg !1699
ret i64 %32, !dbg !1700
}
declare i64* @__errno_location()
; Function Attrs: nounwind
define dso_local [2 x i64] @runtime.__get_map_hash_from_entry(%runtime.Map_Header* %0, %runtime.Map_Entry_Header* %1) #0 !dbg !1701 {
decls:
call void @llvm.dbg.declare(metadata %runtime.Map_Hash* %2, metadata !1730, metadata !DIExpression()), !dbg !1731
%2 = alloca %runtime.Map_Hash, align 8
call void @llvm.dbg.value(metadata %runtime.Map_Entry_Header* %1, metadata !1729, metadata !DIExpression()), !dbg !1732
%3 = bitcast %runtime.Map_Hash* %2 to i8*
call void @llvm.memset.p0i8.i64(i8* %3, i8 0, i64 16, i1 false)
%4 = getelementptr inbounds %runtime.Map_Hash, %runtime.Map_Hash* %2, i32 0, i32 0, !dbg !1733
%5 = getelementptr inbounds %runtime.Map_Entry_Header, %runtime.Map_Entry_Header* %1, i32 0, i32 0, !dbg !1733
%6 = load i64, i64* %5, align 8, !dbg !1733
store i64 %6, i64* %4, align 8, !dbg !1733
%7 = getelementptr inbounds %runtime.Map_Hash, %runtime.Map_Hash* %2, i32 0, i32 1, !dbg !1735
%8 = ptrtoint %runtime.Map_Entry_Header* %1 to i64, !dbg !1735
%9 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 4, !dbg !1735
%10 = load i64, i64* %9, align 8, !dbg !1735
%11 = add i64 %8, %10, !dbg !1735
%12 = inttoptr i64 %11 to i8*, !dbg !1735
store i8* %12, i8** %7, align 8, !dbg !1735
call void @llvm.memmove.p0i8.p0i8.i64(i8* align 8 %3, i8* align 8 %3, i64 16, i1 false), !dbg !1736
%13 = bitcast %runtime.Map_Hash* %2 to [2 x i64]*, !dbg !1736
%14 = load [2 x i64], [2 x i64]* %13, align 8, !dbg !1736
ret [2 x i64] %14, !dbg !1736
}
declare i32 @close(i32)
declare i64 @read(i32, i8*, i64)
declare i64 @write(i32, i8*, i64)
declare i64 @lseek64(i32, i64, i32)
declare i32 @fstat(i32, %os.OS_Stat*)
; Function Attrs: nounwind
define dso_local i64 @runtime.default_hasher8(i8* %0, i64 %1) #0 !dbg !1737 {
decls:
call void @llvm.dbg.value(metadata i8* %0, metadata !1739, metadata !DIExpression()), !dbg !1741
call void @llvm.dbg.value(metadata i64 %1, metadata !1740, metadata !DIExpression()), !dbg !1741
call void @llvm.dbg.value(metadata i8* %0, metadata !1742, metadata !DIExpression()), !dbg !1752
call void @llvm.dbg.value(metadata i64 %1, metadata !1745, metadata !DIExpression()), !dbg !1752
call void @llvm.dbg.value(metadata i64 0, metadata !1746, metadata !DIExpression()), !dbg !1755
%2 = add i64 %1, -3750763034362895579, !dbg !1756
call void @llvm.dbg.value(metadata i64 %2, metadata !1746, metadata !DIExpression()), !dbg !1755
call void @llvm.dbg.value(metadata i64 0, metadata !1748, metadata !DIExpression()), !dbg !1755
%3 = ptrtoint i8* %0 to i64, !dbg !1757
call void @llvm.dbg.value(metadata i64 %3, metadata !1748, metadata !DIExpression()), !dbg !1755
call void @llvm.dbg.value(metadata i64 0, metadata !1749, metadata !DIExpression()), !dbg !1758
%4 = load i8, i8* %0, align 1, !dbg !1759
%5 = zext i8 %4 to i64, !dbg !1759
call void @llvm.dbg.value(metadata i64 %5, metadata !1749, metadata !DIExpression()), !dbg !1758
%6 = xor i64 %2, %5, !dbg !1760
%7 = mul i64 %6, 1099511628211, !dbg !1760
call void @llvm.dbg.value(metadata i64 %7, metadata !1746, metadata !DIExpression()), !dbg !1755
%8 = add i64 %3, 1, !dbg !1761
call void @llvm.dbg.value(metadata i64 %8, metadata !1748, metadata !DIExpression()), !dbg !1755
call void @llvm.dbg.value(metadata i64 0, metadata !1749, metadata !DIExpression()), !dbg !1758
%9 = inttoptr i64 %8 to i8*, !dbg !1759
%10 = load i8, i8* %9, align 1, !dbg !1759
%11 = zext i8 %10 to i64, !dbg !1759
call void @llvm.dbg.value(metadata i64 %11, metadata !1749, metadata !DIExpression()), !dbg !1758
%12 = xor i64 %7, %11, !dbg !1760
%13 = mul i64 %12, 1099511628211, !dbg !1760
call void @llvm.dbg.value(metadata i64 %13, metadata !1746, metadata !DIExpression()), !dbg !1755
%14 = add i64 %8, 1, !dbg !1761
call void @llvm.dbg.value(metadata i64 %14, metadata !1748, metadata !DIExpression()), !dbg !1755
call void @llvm.dbg.value(metadata i64 0, metadata !1749, metadata !DIExpression()), !dbg !1758
%15 = inttoptr i64 %14 to i8*, !dbg !1759
%16 = load i8, i8* %15, align 1, !dbg !1759
%17 = zext i8 %16 to i64, !dbg !1759
call void @llvm.dbg.value(metadata i64 %17, metadata !1749, metadata !DIExpression()), !dbg !1758
%18 = xor i64 %13, %17, !dbg !1760
%19 = mul i64 %18, 1099511628211, !dbg !1760
call void @llvm.dbg.value(metadata i64 %19, metadata !1746, metadata !DIExpression()), !dbg !1755
%20 = add i64 %14, 1, !dbg !1761
call void @llvm.dbg.value(metadata i64 %20, metadata !1748, metadata !DIExpression()), !dbg !1755
call void @llvm.dbg.value(metadata i64 0, metadata !1749, metadata !DIExpression()), !dbg !1758
%21 = inttoptr i64 %20 to i8*, !dbg !1759
%22 = load i8, i8* %21, align 1, !dbg !1759
%23 = zext i8 %22 to i64, !dbg !1759
call void @llvm.dbg.value(metadata i64 %23, metadata !1749, metadata !DIExpression()), !dbg !1758
%24 = xor i64 %19, %23, !dbg !1760
%25 = mul i64 %24, 1099511628211, !dbg !1760
call void @llvm.dbg.value(metadata i64 %25, metadata !1746, metadata !DIExpression()), !dbg !1755
%26 = add i64 %20, 1, !dbg !1761
call void @llvm.dbg.value(metadata i64 %26, metadata !1748, metadata !DIExpression()), !dbg !1755
call void @llvm.dbg.value(metadata i64 0, metadata !1749, metadata !DIExpression()), !dbg !1758
%27 = inttoptr i64 %26 to i8*, !dbg !1759
%28 = load i8, i8* %27, align 1, !dbg !1759
%29 = zext i8 %28 to i64, !dbg !1759
call void @llvm.dbg.value(metadata i64 %29, metadata !1749, metadata !DIExpression()), !dbg !1758
%30 = xor i64 %25, %29, !dbg !1760
%31 = mul i64 %30, 1099511628211, !dbg !1760
call void @llvm.dbg.value(metadata i64 %31, metadata !1746, metadata !DIExpression()), !dbg !1755
%32 = add i64 %26, 1, !dbg !1761
call void @llvm.dbg.value(metadata i64 %32, metadata !1748, metadata !DIExpression()), !dbg !1755
call void @llvm.dbg.value(metadata i64 0, metadata !1749, metadata !DIExpression()), !dbg !1758
%33 = inttoptr i64 %32 to i8*, !dbg !1759
%34 = load i8, i8* %33, align 1, !dbg !1759
%35 = zext i8 %34 to i64, !dbg !1759
call void @llvm.dbg.value(metadata i64 %35, metadata !1749, metadata !DIExpression()), !dbg !1758
%36 = xor i64 %31, %35, !dbg !1760
%37 = mul i64 %36, 1099511628211, !dbg !1760
call void @llvm.dbg.value(metadata i64 %37, metadata !1746, metadata !DIExpression()), !dbg !1755
%38 = add i64 %32, 1, !dbg !1761
call void @llvm.dbg.value(metadata i64 %38, metadata !1748, metadata !DIExpression()), !dbg !1755
call void @llvm.dbg.value(metadata i64 0, metadata !1749, metadata !DIExpression()), !dbg !1758
%39 = inttoptr i64 %38 to i8*, !dbg !1759
%40 = load i8, i8* %39, align 1, !dbg !1759
%41 = zext i8 %40 to i64, !dbg !1759
call void @llvm.dbg.value(metadata i64 %41, metadata !1749, metadata !DIExpression()), !dbg !1758
%42 = xor i64 %37, %41, !dbg !1760
%43 = mul i64 %42, 1099511628211, !dbg !1760
call void @llvm.dbg.value(metadata i64 %43, metadata !1746, metadata !DIExpression()), !dbg !1755
%44 = add i64 %38, 1, !dbg !1761
call void @llvm.dbg.value(metadata i64 %44, metadata !1748, metadata !DIExpression()), !dbg !1755
call void @llvm.dbg.value(metadata i64 0, metadata !1749, metadata !DIExpression()), !dbg !1758
%45 = inttoptr i64 %44 to i8*, !dbg !1759
%46 = load i8, i8* %45, align 1, !dbg !1759
%47 = zext i8 %46 to i64, !dbg !1759
call void @llvm.dbg.value(metadata i64 %47, metadata !1749, metadata !DIExpression()), !dbg !1758
%48 = xor i64 %43, %47, !dbg !1760
%49 = mul i64 %48, 1099511628211, !dbg !1760
call void @llvm.dbg.value(metadata i64 %49, metadata !1746, metadata !DIExpression()), !dbg !1755
call void @llvm.dbg.value(metadata i64 %44, metadata !1748, metadata !DIExpression(DW_OP_plus_uconst, 1, DW_OP_stack_value)), !dbg !1755
ret i64 %49, !dbg !1762
}
declare i8* @calloc(i64, i64)
declare void @free(i8*)
declare i8* @realloc(i8*, i64)
define internal [2 x i64] @strconv.generic_ftoa([2 x i64] %0, double %1, i8 %2, i64 %3, i64 %4, i8* noalias nocapture nonnull %__.context_ptr) !dbg !1763 {
decls:
%5 = alloca { i8*, i64 }, align 8
call void @llvm.dbg.declare(metadata { i8*, i64 }* %6, metadata !1769, metadata !DIExpression()), !dbg !1808
%6 = alloca { i8*, i64 }, align 8
%7 = alloca [2 x i64], align 8, !dbg !1809
%8 = alloca %runtime.Source_Code_Location, align 8, !dbg !1809
call void @llvm.dbg.declare(metadata %..string* %9, metadata !1782, metadata !DIExpression()), !dbg !1811
%9 = alloca %..string, align 8, !dbg !1811
%10 = alloca [2 x i64], align 8, !dbg !1812
%11 = alloca { i8*, i64 }, align 8, !dbg !1812
call void @llvm.dbg.declare(metadata %strconv_decimal.Decimal* %12, metadata !1785, metadata !DIExpression()), !dbg !1813
%12 = alloca %strconv_decimal.Decimal, align 8, !dbg !1813
call void @llvm.dbg.declare(metadata %strconv.Decimal_Slice* %13, metadata !1799, metadata !DIExpression()), !dbg !1814
%13 = alloca %strconv.Decimal_Slice, align 8, !dbg !1814
%14 = alloca %strconv.Decimal_Slice, align 8, !dbg !1815
%15 = alloca { i8*, i64 }, align 8, !dbg !1815
%16 = alloca %strconv.Decimal_Slice, align 8, !dbg !1818
%17 = alloca { i8*, i64 }, align 8, !dbg !1818
%18 = alloca { i8*, i64 }, align 8, !dbg !1820
%19 = bitcast { i8*, i64 }* %5 to [2 x i64]*
store [2 x i64] %0, [2 x i64]* %19, align 8
%20 = bitcast { i8*, i64 }* %6 to i8*
%21 = bitcast { i8*, i64 }* %5 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %20, i8* align 8 %21, i64 16, i1 false)
call void @llvm.dbg.value(metadata double %1, metadata !1770, metadata !DIExpression()), !dbg !1821
call void @llvm.dbg.value(metadata i8 %2, metadata !1771, metadata !DIExpression()), !dbg !1821
call void @llvm.dbg.value(metadata i64 %3, metadata !1772, metadata !DIExpression()), !dbg !1821
call void @llvm.dbg.value(metadata i64 %4, metadata !1773, metadata !DIExpression()), !dbg !1821
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1774, metadata !DIExpression()), !dbg !1822
call void @llvm.dbg.value(metadata i64 0, metadata !1775, metadata !DIExpression()), !dbg !1823
call void @llvm.dbg.value(metadata %strconv.Float_Info* null, metadata !1777, metadata !DIExpression()), !dbg !1823
switch i64 %4, label %switch.default.body [
i64 16, label %switch.case.body
i64 32, label %switch.case.body1
i64 64, label %switch.case.body2
], !dbg !1824
switch.case.body: ; preds = %decls
%22 = fptrunc double %1 to half, !dbg !1825
%23 = bitcast half %22 to i16, !dbg !1825
%24 = zext i16 %23 to i64, !dbg !1825
call void @llvm.dbg.value(metadata i64 %24, metadata !1775, metadata !DIExpression()), !dbg !1823
call void @llvm.dbg.value(metadata %strconv.Float_Info* @strconv._f16_info, metadata !1777, metadata !DIExpression()), !dbg !1823
br label %switch.done, !dbg !1824
switch.case.body1: ; preds = %decls
%25 = fptrunc double %1 to float, !dbg !1826
%26 = bitcast float %25 to i32, !dbg !1826
%27 = zext i32 %26 to i64, !dbg !1826
call void @llvm.dbg.value(metadata i64 %27, metadata !1775, metadata !DIExpression()), !dbg !1823
call void @llvm.dbg.value(metadata %strconv.Float_Info* @strconv._f32_info, metadata !1777, metadata !DIExpression()), !dbg !1823
br label %switch.done, !dbg !1824
switch.case.body2: ; preds = %decls
%28 = bitcast double %1 to i64, !dbg !1827
call void @llvm.dbg.value(metadata i64 %28, metadata !1775, metadata !DIExpression()), !dbg !1823
call void @llvm.dbg.value(metadata %strconv.Float_Info* @strconv._f64_info, metadata !1777, metadata !DIExpression()), !dbg !1823
br label %switch.done, !dbg !1824
switch.default.body: ; preds = %decls
%29 = bitcast [2 x i64]* %7 to %..string*, !dbg !1809
store %..string { i8* getelementptr inbounds ([26 x i8], [26 x i8]* @"csbs$8a", i64 0, i64 0), i64 25 }, %..string* %29, align 8, !dbg !1809
%30 = load [2 x i64], [2 x i64]* %7, align 8, !dbg !1809
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([60 x i8], [60 x i8]* @"csbs$8b", i64 0, i64 0), i64 59 }, i32 38, i32 3, %..string { i8* getelementptr inbounds ([13 x i8], [13 x i8]* @"csbs$8c", i64 0, i64 0), i64 12 } }, %runtime.Source_Code_Location* %8, align 8, !dbg !1809
call void @runtime.panic([2 x i64] %30, %runtime.Source_Code_Location* %8, i8* %__.context_ptr), !dbg !1809
unreachable, !dbg !1809
switch.done: ; preds = %switch.case.body2, %switch.case.body1, %switch.case.body
%.026 = phi %strconv.Float_Info* [ @strconv._f64_info, %switch.case.body2 ], [ @strconv._f32_info, %switch.case.body1 ], [ @strconv._f16_info, %switch.case.body ], !dbg !1828
%.025 = phi i64 [ %28, %switch.case.body2 ], [ %27, %switch.case.body1 ], [ %24, %switch.case.body ], !dbg !1828
call void @llvm.dbg.value(metadata i64 %.025, metadata !1775, metadata !DIExpression()), !dbg !1823
call void @llvm.dbg.value(metadata %strconv.Float_Info* %.026, metadata !1777, metadata !DIExpression()), !dbg !1823
call void @llvm.dbg.value(metadata i8 0, metadata !1779, metadata !DIExpression()), !dbg !1823
%31 = getelementptr inbounds %strconv.Float_Info, %strconv.Float_Info* %.026, i32 0, i32 1, !dbg !1829
%32 = load i64, i64* %31, align 8, !dbg !1829
%33 = getelementptr inbounds %strconv.Float_Info, %strconv.Float_Info* %.026, i32 0, i32 0, !dbg !1829
%34 = load i64, i64* %33, align 8, !dbg !1829
%35 = add i64 %32, %34, !dbg !1829
%36 = icmp ult i64 %35, 64, !dbg !1829
%37 = lshr i64 %.025, %35, !dbg !1829
%38 = select i1 %36, i64 %37, i64 0, !dbg !1829
%39 = icmp ne i64 %38, 0, !dbg !1829
call void @llvm.dbg.value(metadata i8 undef, metadata !1779, metadata !DIExpression()), !dbg !1823
call void @llvm.dbg.value(metadata i64 0, metadata !1780, metadata !DIExpression()), !dbg !1823
%40 = icmp ult i64 %34, 64, !dbg !1830
%41 = lshr i64 %.025, %34, !dbg !1830
%42 = select i1 %40, i64 %41, i64 0, !dbg !1830
%43 = icmp ult i64 %32, 64, !dbg !1830
%44 = shl i64 1, %32, !dbg !1830
%45 = select i1 %43, i64 %44, i64 0, !dbg !1830
%46 = sub i64 %45, 1, !dbg !1830
%47 = and i64 %42, %46, !dbg !1830
call void @llvm.dbg.value(metadata i64 %47, metadata !1780, metadata !DIExpression()), !dbg !1823
call void @llvm.dbg.value(metadata i64 0, metadata !1781, metadata !DIExpression()), !dbg !1823
%48 = shl i64 1, %34, !dbg !1831
%49 = select i1 %40, i64 %48, i64 0, !dbg !1831
%50 = sub i64 %49, 1, !dbg !1831
%51 = and i64 %.025, %50, !dbg !1831
call void @llvm.dbg.value(metadata i64 %51, metadata !1781, metadata !DIExpression()), !dbg !1823
%52 = icmp eq i64 %47, %46, !dbg !1832
br i1 %52, label %switch.case.body3, label %switch.case.next, !dbg !1832
switch.case.next: ; preds = %switch.done
%53 = icmp eq i64 %47, 0, !dbg !1832
%54 = add i64 %47, 1, !dbg !1832
%55 = or i64 %51, %49, !dbg !1832
%.027 = select i1 %53, i64 %54, i64 %47, !dbg !1832
%.024 = select i1 %53, i64 %51, i64 %55, !dbg !1832
call void @llvm.dbg.value(metadata i64 %.024, metadata !1781, metadata !DIExpression()), !dbg !1823
call void @llvm.dbg.value(metadata i64 %.027, metadata !1780, metadata !DIExpression()), !dbg !1823
%56 = getelementptr inbounds %strconv.Float_Info, %strconv.Float_Info* %.026, i32 0, i32 2, !dbg !1833
%57 = load i64, i64* %56, align 8, !dbg !1833
%58 = add i64 %.027, %57, !dbg !1833
call void @llvm.dbg.value(metadata i64 %58, metadata !1780, metadata !DIExpression()), !dbg !1823
%59 = bitcast %strconv_decimal.Decimal* %12 to i8*, !dbg !1813
call void @llvm.memset.p0i8.i64(i8* %59, i8 0, i64 408, i1 false), !dbg !1813
call void @llvm.dbg.value(metadata %strconv_decimal.Decimal* %12, metadata !1797, metadata !DIExpression()), !dbg !1823
call void @strconv_decimal.assign(%strconv_decimal.Decimal* %12, i64 %.024, i8* %__.context_ptr), !dbg !1834
%60 = load i64, i64* %33, align 8, !dbg !1835
%61 = sub i64 %58, %60, !dbg !1835
call void @strconv_decimal.shift(%strconv_decimal.Decimal* %12, i64 %61, i8* %__.context_ptr), !dbg !1835
%62 = bitcast %strconv.Decimal_Slice* %13 to i8*, !dbg !1814
call void @llvm.memset.p0i8.i64(i8* %62, i8 0, i64 40, i1 false), !dbg !1814
call void @llvm.dbg.value(metadata i64 %3, metadata !1806, metadata !DIExpression()), !dbg !1823
call void @llvm.dbg.value(metadata i8 0, metadata !1807, metadata !DIExpression()), !dbg !1823
%63 = icmp slt i64 %3, 0, !dbg !1836
call void @llvm.dbg.value(metadata i8 undef, metadata !1807, metadata !DIExpression()), !dbg !1823
br i1 %63, label %if.then11, label %if.else16, !dbg !1837
switch.case.body3: ; preds = %switch.done
%64 = bitcast %..string* %9 to i8*, !dbg !1811
call void @llvm.memset.p0i8.i64(i8* %64, i8 0, i64 16, i1 false), !dbg !1811
%65 = icmp ne i64 %51, 0, !dbg !1838
br i1 %65, label %if.then, label %if.else, !dbg !1838
if.then: ; preds = %switch.case.body3
store %..string { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"csbs$8d", i64 0, i64 0), i64 3 }, %..string* %9, align 8, !dbg !1839
br label %if.done6, !dbg !1838
if.else: ; preds = %switch.case.body3
br i1 %39, label %if.then4, label %if.else5, !dbg !1842
if.then4: ; preds = %if.else
store %..string { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"csbs$8e", i64 0, i64 0), i64 4 }, %..string* %9, align 8, !dbg !1844
br label %if.done6, !dbg !1842
if.else5: ; preds = %if.else
store %..string { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"csbs$8f", i64 0, i64 0), i64 4 }, %..string* %9, align 8, !dbg !1846
br label %if.done6, !dbg !1842
if.done6: ; preds = %if.then4, %if.else5, %if.then
call void @llvm.dbg.value(metadata i64 0, metadata !1784, metadata !DIExpression()), !dbg !1848
%66 = bitcast { i8*, i64 }* %6 to [2 x i64]*, !dbg !1849
%67 = load [2 x i64], [2 x i64]* %66, align 8, !dbg !1849
%68 = bitcast %..string* %9 to [2 x i64]*, !dbg !1849
%69 = load [2 x i64], [2 x i64]* %68, align 8, !dbg !1849
%70 = call i64 @runtime.copy_from_string-6588([2 x i64] %67, [2 x i64] %69), !dbg !1849
call void @llvm.dbg.value(metadata i64 %70, metadata !1784, metadata !DIExpression()), !dbg !1848
%71 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %6, i32 0, i32 1, !dbg !1812
%72 = load i64, i64* %71, align 8, !dbg !1812
%73 = bitcast [2 x i64]* %10 to %..string*, !dbg !1812
store %..string { i8* getelementptr inbounds ([60 x i8], [60 x i8]* @"csbs$8b", i64 0, i64 0), i64 59 }, %..string* %73, align 8, !dbg !1812
%74 = load [2 x i64], [2 x i64]* %10, align 8, !dbg !1812
call void @runtime.slice_expr_error_hi([2 x i64] %74, i32 56, i32 13, i64 %70, i64 %72), !dbg !1812
%75 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %6, i32 0, i32 0, !dbg !1812
%76 = load i8*, i8** %75, align 8, !dbg !1812
%77 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %11, i32 0, i32 0, !dbg !1812
store i8* %76, i8** %77, align 8, !dbg !1812
%78 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %11, i32 0, i32 1, !dbg !1812
store i64 %70, i64* %78, align 8, !dbg !1812
%79 = bitcast { i8*, i64 }* %11 to [2 x i64]*, !dbg !1812
%80 = load [2 x i64], [2 x i64]* %79, align 8, !dbg !1812
ret [2 x i64] %80, !dbg !1812
if.then11: ; preds = %switch.case.next
call void @strconv.round_shortest(%strconv_decimal.Decimal* %12, i64 %.024, i64 %58, %strconv.Float_Info* %.026, i8* %__.context_ptr), !dbg !1850
%81 = bitcast %strconv.Decimal_Slice* %14 to i8*, !dbg !1815
call void @llvm.memset.p0i8.i64(i8* align 8 %81, i8 0, i64 40, i1 false), !dbg !1815
%82 = getelementptr inbounds %strconv_decimal.Decimal, %strconv_decimal.Decimal* %12, i32 0, i32 0, !dbg !1815
%83 = getelementptr [384 x i8], [384 x i8]* %82, i64 0, i64 0, !dbg !1815
%84 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %15, i32 0, i32 0, !dbg !1815
store i8* %83, i8** %84, align 8, !dbg !1815
%85 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %15, i32 0, i32 1, !dbg !1815
store i64 384, i64* %85, align 8, !dbg !1815
%86 = getelementptr inbounds %strconv.Decimal_Slice, %strconv.Decimal_Slice* %14, i32 0, i32 0, !dbg !1815
%87 = bitcast { i8*, i64 }* %86 to i8*, !dbg !1815
%88 = bitcast { i8*, i64 }* %15 to i8*, !dbg !1815
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %87, i8* align 8 %88, i64 16, i1 false), !dbg !1815
%89 = getelementptr inbounds %strconv_decimal.Decimal, %strconv_decimal.Decimal* %12, i32 0, i32 1, !dbg !1815
%90 = load i64, i64* %89, align 8, !dbg !1815
%91 = getelementptr inbounds %strconv.Decimal_Slice, %strconv.Decimal_Slice* %14, i32 0, i32 1, !dbg !1815
store i64 %90, i64* %91, align 8, !dbg !1815
%92 = getelementptr inbounds %strconv_decimal.Decimal, %strconv_decimal.Decimal* %12, i32 0, i32 2, !dbg !1815
%93 = load i64, i64* %92, align 8, !dbg !1815
%94 = getelementptr inbounds %strconv.Decimal_Slice, %strconv.Decimal_Slice* %14, i32 0, i32 2, !dbg !1815
store i64 %93, i64* %94, align 8, !dbg !1815
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %62, i8* align 8 %81, i64 40, i1 false), !dbg !1815
switch i8 %2, label %if.done23 [
i8 101, label %switch.case.body12
i8 69, label %switch.case.body12
i8 102, label %switch.case.body13
i8 70, label %switch.case.body13
i8 103, label %switch.case.body14
i8 71, label %switch.case.body14
], !dbg !1851
switch.case.body12: ; preds = %if.then11, %if.then11
%95 = getelementptr inbounds %strconv.Decimal_Slice, %strconv.Decimal_Slice* %13, i32 0, i32 1, !dbg !1852
%96 = load i64, i64* %95, align 8, !dbg !1852
%97 = sub i64 %96, 1, !dbg !1852
call void @llvm.dbg.value(metadata i64 %97, metadata !1806, metadata !DIExpression()), !dbg !1823
br label %if.done23, !dbg !1851
switch.case.body13: ; preds = %if.then11, %if.then11
%98 = getelementptr inbounds %strconv.Decimal_Slice, %strconv.Decimal_Slice* %13, i32 0, i32 1, !dbg !1854
%99 = load i64, i64* %98, align 8, !dbg !1854
%100 = getelementptr inbounds %strconv.Decimal_Slice, %strconv.Decimal_Slice* %13, i32 0, i32 2, !dbg !1854
%101 = load i64, i64* %100, align 8, !dbg !1854
%102 = sub i64 %99, %101, !dbg !1854
%103 = icmp sgt i64 %102, 0, !dbg !1854
%104 = select i1 %103, i64 %102, i64 0, !dbg !1854
call void @llvm.dbg.value(metadata i64 %104, metadata !1806, metadata !DIExpression()), !dbg !1823
br label %if.done23, !dbg !1851
switch.case.body14: ; preds = %if.then11, %if.then11
%105 = getelementptr inbounds %strconv.Decimal_Slice, %strconv.Decimal_Slice* %13, i32 0, i32 1, !dbg !1855
%106 = load i64, i64* %105, align 8, !dbg !1855
call void @llvm.dbg.value(metadata i64 %106, metadata !1806, metadata !DIExpression()), !dbg !1823
br label %if.done23, !dbg !1851
if.else16: ; preds = %switch.case.next
switch i8 %2, label %switch.done22 [
i8 101, label %switch.case.body17
i8 69, label %switch.case.body17
i8 102, label %switch.case.body18
i8 70, label %switch.case.body18
i8 103, label %switch.case.body19
i8 71, label %switch.case.body19
], !dbg !1856
switch.case.body17: ; preds = %if.else16, %if.else16
%107 = add i64 %3, 1, !dbg !1857
call void @strconv_decimal.round(%strconv_decimal.Decimal* %12, i64 %107, i8* %__.context_ptr), !dbg !1857
br label %switch.done22, !dbg !1856
switch.case.body18: ; preds = %if.else16, %if.else16
%108 = getelementptr inbounds %strconv_decimal.Decimal, %strconv_decimal.Decimal* %12, i32 0, i32 2, !dbg !1859
%109 = load i64, i64* %108, align 8, !dbg !1859
%110 = add i64 %109, %3, !dbg !1859
call void @strconv_decimal.round(%strconv_decimal.Decimal* %12, i64 %110, i8* %__.context_ptr), !dbg !1859
br label %switch.done22, !dbg !1856
switch.case.body19: ; preds = %if.else16, %if.else16
%111 = icmp eq i64 %3, 0, !dbg !1860
%spec.select = select i1 %111, i64 1, i64 %3, !dbg !1860
call void @llvm.dbg.value(metadata i64 %spec.select, metadata !1806, metadata !DIExpression()), !dbg !1823
call void @strconv_decimal.round(%strconv_decimal.Decimal* %12, i64 %spec.select, i8* %__.context_ptr), !dbg !1861
br label %switch.done22, !dbg !1856
switch.done22: ; preds = %switch.case.body19, %switch.case.body18, %switch.case.body17, %if.else16
%.2 = phi i64 [ %3, %if.else16 ], [ %spec.select, %switch.case.body19 ], [ %3, %switch.case.body18 ], [ %3, %switch.case.body17 ], !dbg !1821
call void @llvm.dbg.value(metadata i64 %.2, metadata !1806, metadata !DIExpression()), !dbg !1823
%112 = bitcast %strconv.Decimal_Slice* %16 to i8*, !dbg !1818
call void @llvm.memset.p0i8.i64(i8* align 8 %112, i8 0, i64 40, i1 false), !dbg !1818
%113 = getelementptr inbounds %strconv_decimal.Decimal, %strconv_decimal.Decimal* %12, i32 0, i32 0, !dbg !1818
%114 = getelementptr [384 x i8], [384 x i8]* %113, i64 0, i64 0, !dbg !1818
%115 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %17, i32 0, i32 0, !dbg !1818
store i8* %114, i8** %115, align 8, !dbg !1818
%116 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %17, i32 0, i32 1, !dbg !1818
store i64 384, i64* %116, align 8, !dbg !1818
%117 = getelementptr inbounds %strconv.Decimal_Slice, %strconv.Decimal_Slice* %16, i32 0, i32 0, !dbg !1818
%118 = bitcast { i8*, i64 }* %117 to i8*, !dbg !1818
%119 = bitcast { i8*, i64 }* %17 to i8*, !dbg !1818
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %118, i8* align 8 %119, i64 16, i1 false), !dbg !1818
%120 = getelementptr inbounds %strconv_decimal.Decimal, %strconv_decimal.Decimal* %12, i32 0, i32 1, !dbg !1818
%121 = load i64, i64* %120, align 8, !dbg !1818
%122 = getelementptr inbounds %strconv.Decimal_Slice, %strconv.Decimal_Slice* %16, i32 0, i32 1, !dbg !1818
store i64 %121, i64* %122, align 8, !dbg !1818
%123 = getelementptr inbounds %strconv_decimal.Decimal, %strconv_decimal.Decimal* %12, i32 0, i32 2, !dbg !1818
%124 = load i64, i64* %123, align 8, !dbg !1818
%125 = getelementptr inbounds %strconv.Decimal_Slice, %strconv.Decimal_Slice* %16, i32 0, i32 2, !dbg !1818
store i64 %124, i64* %125, align 8, !dbg !1818
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %62, i8* align 8 %112, i64 40, i1 false), !dbg !1818
br label %if.done23, !dbg !1837
if.done23: ; preds = %if.then11, %switch.case.body12, %switch.case.body13, %switch.case.body14, %switch.done22
%.3 = phi i64 [ %.2, %switch.done22 ], [ %3, %if.then11 ], [ %106, %switch.case.body14 ], [ %104, %switch.case.body13 ], [ %97, %switch.case.body12 ], !dbg !1862
call void @llvm.dbg.value(metadata i64 %.3, metadata !1806, metadata !DIExpression()), !dbg !1823
%126 = bitcast { i8*, i64 }* %6 to [2 x i64]*, !dbg !1820
%127 = load [2 x i64], [2 x i64]* %126, align 8, !dbg !1820
%128 = call [2 x i64] @strconv.format_digits([2 x i64] %127, i1 %63, i1 %39, %strconv.Decimal_Slice* %13, i64 %.3, i8 %2, i8* %__.context_ptr), !dbg !1820
%129 = bitcast { i8*, i64 }* %18 to [2 x i64]*, !dbg !1820
store [2 x i64] %128, [2 x i64]* %129, align 8, !dbg !1820
ret [2 x i64] %128, !dbg !1820
}
define internal [2 x i64] @strconv.format_digits([2 x i64] %0, i1 zeroext %1, i1 zeroext %2, %strconv.Decimal_Slice* %3, i64 %4, i8 %5, i8* noalias nocapture nonnull %__.context_ptr) !dbg !1863 {
decls:
%6 = alloca { i8*, i64 }, align 8
call void @llvm.dbg.declare(metadata { i8*, i64 }* %7, metadata !1867, metadata !DIExpression()), !dbg !1900
%7 = alloca { i8*, i64 }, align 8
call void @llvm.dbg.declare(metadata %strconv.format_digits.Buffer-1* %8, metadata !1873, metadata !DIExpression()), !dbg !1901
%8 = alloca %strconv.format_digits.Buffer-1, align 8, !dbg !1901
%9 = alloca %strconv.format_digits.Buffer-1, align 8, !dbg !1901
%10 = alloca { i8*, i64 }, align 8, !dbg !1902
%11 = alloca [1 x i8], align 1, !dbg !1902
%12 = alloca [2 x i64], align 8, !dbg !1903
%13 = alloca { i8*, i64 }, align 8, !dbg !1903
%14 = alloca { i8*, i64 }, align 8, !dbg !1904
%15 = alloca [1 x i8], align 1, !dbg !1904
%16 = alloca { i8*, i64 }, align 8, !dbg !1907
%17 = alloca [1 x i8], align 1, !dbg !1907
%18 = alloca { i8*, i64 }, align 8, !dbg !1909
%19 = alloca [1 x i8], align 1, !dbg !1909
%20 = alloca [2 x i64], align 8, !dbg !1910
%21 = alloca { i8*, i64 }, align 8, !dbg !1912
%22 = alloca [1 x i8], align 1, !dbg !1912
%23 = alloca { i8*, i64 }, align 8, !dbg !1913
%24 = alloca { i8*, i64 }, align 8, !dbg !1914
%25 = alloca [1 x i8], align 1, !dbg !1914
%26 = alloca [2 x i64], align 8, !dbg !1915
%27 = alloca { i8*, i64 }, align 8, !dbg !1918
%28 = alloca [1 x i8], align 1, !dbg !1918
%29 = alloca { i8*, i64 }, align 8, !dbg !1919
%30 = alloca [1 x i8], align 1, !dbg !1919
%31 = alloca [2 x i64], align 8, !dbg !1920
%32 = alloca { i8*, i64 }, align 8, !dbg !1920
%33 = alloca { i8*, i64 }, align 8, !dbg !1923
%34 = alloca [1 x i8], align 1, !dbg !1923
%35 = alloca { i8*, i64 }, align 8, !dbg !1926
%36 = alloca [1 x i8], align 1, !dbg !1926
%37 = alloca { i8*, i64 }, align 8, !dbg !1927
%38 = alloca [1 x i8], align 1, !dbg !1927
%39 = alloca { i8*, i64 }, align 8, !dbg !1928
%40 = alloca [2 x i8], align 1, !dbg !1928
%41 = alloca { i8*, i64 }, align 8, !dbg !1930
%42 = alloca [2 x i8], align 1, !dbg !1930
%43 = alloca { i8*, i64 }, align 8, !dbg !1931
%44 = alloca [3 x i8], align 1, !dbg !1931
%45 = alloca { i8*, i64 }, align 8, !dbg !1932
%46 = alloca { i8*, i64 }, align 8, !dbg !1933
%47 = alloca { i8*, i64 }, align 8, !dbg !1936
%48 = alloca { i8*, i64 }, align 8, !dbg !1937
%49 = alloca [2 x i8], align 1, !dbg !1937
%50 = alloca { i8*, i64 }, align 8, !dbg !1938
%51 = bitcast { i8*, i64 }* %6 to [2 x i64]*
store [2 x i64] %0, [2 x i64]* %51, align 8
%52 = bitcast { i8*, i64 }* %7 to i8*
%53 = bitcast { i8*, i64 }* %6 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %52, i8* align 8 %53, i64 16, i1 false)
call void @llvm.dbg.value(metadata i8 undef, metadata !1868, metadata !DIExpression()), !dbg !1939
call void @llvm.dbg.value(metadata i8 undef, metadata !1869, metadata !DIExpression()), !dbg !1939
call void @llvm.dbg.value(metadata i64 %4, metadata !1870, metadata !DIExpression()), !dbg !1939
call void @llvm.dbg.value(metadata i8 %5, metadata !1871, metadata !DIExpression()), !dbg !1939
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1872, metadata !DIExpression()), !dbg !1940
%54 = bitcast %strconv.format_digits.Buffer-1* %8 to i8*, !dbg !1901
call void @llvm.memset.p0i8.i64(i8* %54, i8 0, i64 24, i1 false), !dbg !1901
%55 = getelementptr inbounds %strconv.format_digits.Buffer-1, %strconv.format_digits.Buffer-1* %9, i32 0, i32 0, !dbg !1901
%56 = bitcast { i8*, i64 }* %55 to i8*, !dbg !1901
%57 = getelementptr i8, i8* %56, i64 16, !dbg !1901
call void @llvm.memset.p0i8.i64(i8* align 8 %57, i8 0, i64 8, i1 false), !dbg !1901
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %56, i8* align 8 %53, i64 16, i1 false), !dbg !1901
%58 = bitcast %strconv.format_digits.Buffer-1* %9 to i8*, !dbg !1901
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %54, i8* align 8 %58, i64 24, i1 false), !dbg !1901
call void @llvm.dbg.value(metadata i64 %4, metadata !1879, metadata !DIExpression()), !dbg !1941
switch i8 %5, label %switch.default.body41 [
i8 102, label %switch.case.body
i8 70, label %switch.case.body
i8 101, label %switch.case.body8
i8 69, label %switch.case.body8
i8 103, label %switch.case.body29
i8 71, label %switch.case.body29
], !dbg !1942
switch.case.body: ; preds = %decls, %decls
%. = select i1 %2, i8 45, i8 43, !dbg !1902
%59 = bitcast { i8*, i64 }* %10 to i8*, !dbg !1902
call void @llvm.memset.p0i8.i64(i8* %59, i8 0, i64 16, i1 false), !dbg !1902
%60 = bitcast [1 x i8]* %11 to i8*, !dbg !1902
call void @llvm.memset.p0i8.i64(i8* %60, i8 0, i64 1, i1 false), !dbg !1902
%61 = getelementptr [1 x i8], [1 x i8]* %11, i64 0, i64 0, !dbg !1902
store i8 %., i8* %61, align 1, !dbg !1902
%62 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %10, i32 0, i32 0, !dbg !1902
store i8* %61, i8** %62, align 8, !dbg !1902
%63 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %10, i32 0, i32 1, !dbg !1902
store i64 1, i64* %63, align 8, !dbg !1902
%64 = bitcast { i8*, i64 }* %10 to [2 x i64]*, !dbg !1902
%65 = load [2 x i64], [2 x i64]* %64, align 8, !dbg !1902
call void @strconv.format_digits.add_bytes-1(%strconv.format_digits.Buffer-1* %8, [2 x i64] %65, i8* %__.context_ptr), !dbg !1902
%66 = getelementptr inbounds %strconv.Decimal_Slice, %strconv.Decimal_Slice* %3, i32 0, i32 2, !dbg !1943
%67 = load i64, i64* %66, align 8, !dbg !1943
%68 = icmp sgt i64 %67, 0, !dbg !1943
br i1 %68, label %if.then1, label %if.else2, !dbg !1943
if.then1: ; preds = %switch.case.body
call void @llvm.dbg.value(metadata i64 0, metadata !1880, metadata !DIExpression()), !dbg !1944
%69 = getelementptr inbounds %strconv.Decimal_Slice, %strconv.Decimal_Slice* %3, i32 0, i32 1, !dbg !1945
%70 = load i64, i64* %69, align 8, !dbg !1945
%71 = icmp slt i64 %70, %67, !dbg !1945
%72 = select i1 %71, i64 %70, i64 %67, !dbg !1945
call void @llvm.dbg.value(metadata i64 %72, metadata !1880, metadata !DIExpression()), !dbg !1944
%73 = getelementptr inbounds %strconv.Decimal_Slice, %strconv.Decimal_Slice* %3, i32 0, i32 0, !dbg !1903
%74 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %73, i32 0, i32 1, !dbg !1903
%75 = load i64, i64* %74, align 8, !dbg !1903
%76 = bitcast [2 x i64]* %12 to %..string*, !dbg !1903
store %..string { i8* getelementptr inbounds ([60 x i8], [60 x i8]* @"csbs$8b", i64 0, i64 0), i64 59 }, %..string* %76, align 8, !dbg !1903
%77 = load [2 x i64], [2 x i64]* %12, align 8, !dbg !1903
call void @runtime.slice_expr_error_lo_hi([2 x i64] %77, i32 123, i32 31, i64 0, i64 %72, i64 %75), !dbg !1903
%78 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %73, i32 0, i32 0, !dbg !1903
%79 = load i8*, i8** %78, align 8, !dbg !1903
%80 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %13, i32 0, i32 0, !dbg !1903
store i8* %79, i8** %80, align 8, !dbg !1903
%81 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %13, i32 0, i32 1, !dbg !1903
store i64 %72, i64* %81, align 8, !dbg !1903
%82 = bitcast { i8*, i64 }* %13 to [2 x i64]*, !dbg !1903
%83 = load [2 x i64], [2 x i64]* %82, align 8, !dbg !1903
call void @strconv.format_digits.add_bytes-1(%strconv.format_digits.Buffer-1* %8, [2 x i64] %83, i8* %__.context_ptr), !dbg !1903
br label %for.loop, !dbg !1946
for.loop: ; preds = %for.body, %if.then1
%.047 = phi i64 [ %72, %if.then1 ], [ %93, %for.body ], !dbg !1944
call void @llvm.dbg.value(metadata i64 %.047, metadata !1880, metadata !DIExpression()), !dbg !1944
%84 = load i64, i64* %66, align 8, !dbg !1946
%85 = icmp slt i64 %.047, %84, !dbg !1946
br i1 %85, label %for.body, label %if.done3, !dbg !1946
for.body: ; preds = %for.loop
%86 = bitcast { i8*, i64 }* %14 to i8*, !dbg !1904
call void @llvm.memset.p0i8.i64(i8* %86, i8 0, i64 16, i1 false), !dbg !1904
%87 = bitcast [1 x i8]* %15 to i8*, !dbg !1904
call void @llvm.memset.p0i8.i64(i8* %87, i8 0, i64 1, i1 false), !dbg !1904
%88 = getelementptr [1 x i8], [1 x i8]* %15, i64 0, i64 0, !dbg !1904
store i8 48, i8* %88, align 1, !dbg !1904
%89 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %14, i32 0, i32 0, !dbg !1904
store i8* %88, i8** %89, align 8, !dbg !1904
%90 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %14, i32 0, i32 1, !dbg !1904
store i64 1, i64* %90, align 8, !dbg !1904
%91 = bitcast { i8*, i64 }* %14 to [2 x i64]*, !dbg !1904
%92 = load [2 x i64], [2 x i64]* %91, align 8, !dbg !1904
call void @strconv.format_digits.add_bytes-1(%strconv.format_digits.Buffer-1* %8, [2 x i64] %92, i8* %__.context_ptr), !dbg !1904
%93 = add i64 %.047, 1, !dbg !1947
call void @llvm.dbg.value(metadata i64 %93, metadata !1880, metadata !DIExpression()), !dbg !1944
br label %for.loop, !dbg !1946
if.else2: ; preds = %switch.case.body
%94 = bitcast { i8*, i64 }* %16 to i8*, !dbg !1907
call void @llvm.memset.p0i8.i64(i8* %94, i8 0, i64 16, i1 false), !dbg !1907
%95 = bitcast [1 x i8]* %17 to i8*, !dbg !1907
call void @llvm.memset.p0i8.i64(i8* %95, i8 0, i64 1, i1 false), !dbg !1907
%96 = getelementptr [1 x i8], [1 x i8]* %17, i64 0, i64 0, !dbg !1907
store i8 48, i8* %96, align 1, !dbg !1907
%97 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %16, i32 0, i32 0, !dbg !1907
store i8* %96, i8** %97, align 8, !dbg !1907
%98 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %16, i32 0, i32 1, !dbg !1907
store i64 1, i64* %98, align 8, !dbg !1907
%99 = bitcast { i8*, i64 }* %16 to [2 x i64]*, !dbg !1907
%100 = load [2 x i64], [2 x i64]* %99, align 8, !dbg !1907
call void @strconv.format_digits.add_bytes-1(%strconv.format_digits.Buffer-1* %8, [2 x i64] %100, i8* %__.context_ptr), !dbg !1907
br label %if.done3, !dbg !1943
if.done3: ; preds = %for.loop, %if.else2
%101 = icmp sgt i64 %4, 0, !dbg !1948
br i1 %101, label %if.then4, label %if.done7, !dbg !1948
if.then4: ; preds = %if.done3
%102 = bitcast { i8*, i64 }* %18 to i8*, !dbg !1909
call void @llvm.memset.p0i8.i64(i8* %102, i8 0, i64 16, i1 false), !dbg !1909
%103 = bitcast [1 x i8]* %19 to i8*, !dbg !1909
call void @llvm.memset.p0i8.i64(i8* %103, i8 0, i64 1, i1 false), !dbg !1909
%104 = getelementptr [1 x i8], [1 x i8]* %19, i64 0, i64 0, !dbg !1909
store i8 46, i8* %104, align 1, !dbg !1909
%105 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %18, i32 0, i32 0, !dbg !1909
store i8* %104, i8** %105, align 8, !dbg !1909
%106 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %18, i32 0, i32 1, !dbg !1909
store i64 1, i64* %106, align 8, !dbg !1909
%107 = bitcast { i8*, i64 }* %18 to [2 x i64]*, !dbg !1909
%108 = load [2 x i64], [2 x i64]* %107, align 8, !dbg !1909
call void @strconv.format_digits.add_bytes-1(%strconv.format_digits.Buffer-1* %8, [2 x i64] %108, i8* %__.context_ptr), !dbg !1909
call void @llvm.dbg.value(metadata i64 0, metadata !1883, metadata !DIExpression()), !dbg !1949
br label %for.interval.loop, !dbg !1950
for.interval.loop: ; preds = %if.done6, %if.then4
%.051 = phi i64 [ 0, %if.then4 ], [ %133, %if.done6 ], !dbg !1950
%.050 = phi i64 [ 0, %if.then4 ], [ %132, %if.done6 ], !dbg !1950
%109 = icmp slt i64 %.050, %4, !dbg !1950
br i1 %109, label %if.init, label %if.done7, !dbg !1950
if.init: ; preds = %for.interval.loop
call void @llvm.dbg.value(metadata i64 %.050, metadata !1883, metadata !DIExpression()), !dbg !1949
call void @llvm.dbg.value(metadata i8 0, metadata !1887, metadata !DIExpression()), !dbg !1951
call void @llvm.dbg.value(metadata i8 48, metadata !1887, metadata !DIExpression()), !dbg !1951
call void @llvm.dbg.value(metadata i64 0, metadata !1889, metadata !DIExpression()), !dbg !1952
%110 = load i64, i64* %66, align 8, !dbg !1953
%111 = add i64 %110, %.050, !dbg !1953
call void @llvm.dbg.value(metadata i64 %111, metadata !1889, metadata !DIExpression()), !dbg !1952
%112 = icmp sle i64 0, %111, !dbg !1954
br i1 %112, label %cmp.and, label %if.done6, !dbg !1954
cmp.and: ; preds = %if.init
%113 = getelementptr inbounds %strconv.Decimal_Slice, %strconv.Decimal_Slice* %3, i32 0, i32 1, !dbg !1954
%114 = load i64, i64* %113, align 8, !dbg !1954
%115 = icmp slt i64 %111, %114, !dbg !1954
br i1 %115, label %if.then5, label %if.done6, !dbg !1954
if.then5: ; preds = %cmp.and
%116 = getelementptr inbounds %strconv.Decimal_Slice, %strconv.Decimal_Slice* %3, i32 0, i32 0, !dbg !1910
%117 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %116, i32 0, i32 0, !dbg !1910
%118 = load i8*, i8** %117, align 8, !dbg !1910
%119 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %116, i32 0, i32 1, !dbg !1910
%120 = load i64, i64* %119, align 8, !dbg !1910
%121 = bitcast [2 x i64]* %20 to %..string*, !dbg !1910
store %..string { i8* getelementptr inbounds ([60 x i8], [60 x i8]* @"csbs$8b", i64 0, i64 0), i64 59 }, %..string* %121, align 8, !dbg !1910
%122 = load [2 x i64], [2 x i64]* %20, align 8, !dbg !1910
call void @runtime.bounds_check_error([2 x i64] %122, i32 138, i32 22, i64 %111, i64 %120), !dbg !1910
%123 = getelementptr i8, i8* %118, i64 %111, !dbg !1910
%124 = load i8, i8* %123, align 1, !dbg !1910
call void @llvm.dbg.value(metadata i8 %124, metadata !1887, metadata !DIExpression()), !dbg !1951
br label %if.done6, !dbg !1954
if.done6: ; preds = %if.then5, %cmp.and, %if.init
%.054 = phi i8 [ %124, %if.then5 ], [ 48, %cmp.and ], [ 48, %if.init ], !dbg !1951
call void @llvm.dbg.value(metadata i8 %.054, metadata !1887, metadata !DIExpression()), !dbg !1951
%125 = bitcast { i8*, i64 }* %21 to i8*, !dbg !1912
call void @llvm.memset.p0i8.i64(i8* %125, i8 0, i64 16, i1 false), !dbg !1912
%126 = bitcast [1 x i8]* %22 to i8*, !dbg !1912
call void @llvm.memset.p0i8.i64(i8* %126, i8 0, i64 1, i1 false), !dbg !1912
%127 = getelementptr [1 x i8], [1 x i8]* %22, i64 0, i64 0, !dbg !1912
store i8 %.054, i8* %127, align 1, !dbg !1912
%128 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %21, i32 0, i32 0, !dbg !1912
store i8* %127, i8** %128, align 8, !dbg !1912
%129 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %21, i32 0, i32 1, !dbg !1912
store i64 1, i64* %129, align 8, !dbg !1912
%130 = bitcast { i8*, i64 }* %21 to [2 x i64]*, !dbg !1912
%131 = load [2 x i64], [2 x i64]* %130, align 8, !dbg !1912
call void @strconv.format_digits.add_bytes-1(%strconv.format_digits.Buffer-1* %8, [2 x i64] %131, i8* %__.context_ptr), !dbg !1912
%132 = add i64 %.050, 1, !dbg !1950
%133 = add i64 %.051, 1, !dbg !1950
br label %for.interval.loop, !dbg !1950
if.done7: ; preds = %for.interval.loop, %if.done3
%134 = call [2 x i64] @strconv.format_digits.to_bytes-0(%strconv.format_digits.Buffer-1* %8, i8* %__.context_ptr), !dbg !1913
%135 = bitcast { i8*, i64 }* %23 to [2 x i64]*, !dbg !1913
store [2 x i64] %134, [2 x i64]* %135, align 8, !dbg !1913
ret [2 x i64] %134, !dbg !1913
switch.case.body8: ; preds = %decls, %decls
%.55 = select i1 %2, i8 45, i8 43, !dbg !1914
%136 = bitcast { i8*, i64 }* %24 to i8*, !dbg !1914
call void @llvm.memset.p0i8.i64(i8* %136, i8 0, i64 16, i1 false), !dbg !1914
%137 = bitcast [1 x i8]* %25 to i8*, !dbg !1914
call void @llvm.memset.p0i8.i64(i8* %137, i8 0, i64 1, i1 false), !dbg !1914
%138 = getelementptr [1 x i8], [1 x i8]* %25, i64 0, i64 0, !dbg !1914
store i8 %.55, i8* %138, align 1, !dbg !1914
%139 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %24, i32 0, i32 0, !dbg !1914
store i8* %138, i8** %139, align 8, !dbg !1914
%140 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %24, i32 0, i32 1, !dbg !1914
store i64 1, i64* %140, align 8, !dbg !1914
%141 = bitcast { i8*, i64 }* %24 to [2 x i64]*, !dbg !1914
%142 = load [2 x i64], [2 x i64]* %141, align 8, !dbg !1914
call void @strconv.format_digits.add_bytes-1(%strconv.format_digits.Buffer-1* %8, [2 x i64] %142, i8* %__.context_ptr), !dbg !1914
call void @llvm.dbg.value(metadata i8 48, metadata !1891, metadata !DIExpression()), !dbg !1955
%143 = getelementptr inbounds %strconv.Decimal_Slice, %strconv.Decimal_Slice* %3, i32 0, i32 1, !dbg !1956
%144 = load i64, i64* %143, align 8, !dbg !1956
%145 = icmp ne i64 %144, 0, !dbg !1956
br i1 %145, label %if.then12, label %if.done13, !dbg !1956
if.then12: ; preds = %switch.case.body8
%146 = getelementptr inbounds %strconv.Decimal_Slice, %strconv.Decimal_Slice* %3, i32 0, i32 0, !dbg !1915
%147 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %146, i32 0, i32 0, !dbg !1915
%148 = load i8*, i8** %147, align 8, !dbg !1915
%149 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %146, i32 0, i32 1, !dbg !1915
%150 = load i64, i64* %149, align 8, !dbg !1915
%151 = bitcast [2 x i64]* %26 to %..string*, !dbg !1915
store %..string { i8* getelementptr inbounds ([60 x i8], [60 x i8]* @"csbs$8b", i64 0, i64 0), i64 59 }, %..string* %151, align 8, !dbg !1915
%152 = load [2 x i64], [2 x i64]* %26, align 8, !dbg !1915
call void @runtime.bounds_check_error([2 x i64] %152, i32 150, i32 21, i64 0, i64 %150), !dbg !1915
%153 = load i8, i8* %148, align 1, !dbg !1915
call void @llvm.dbg.value(metadata i8 %153, metadata !1891, metadata !DIExpression()), !dbg !1955
br label %if.done13, !dbg !1956
if.done13: ; preds = %if.then12, %switch.case.body8
%.052 = phi i8 [ %153, %if.then12 ], [ 48, %switch.case.body8 ], !dbg !1939
call void @llvm.dbg.value(metadata i8 %.052, metadata !1891, metadata !DIExpression()), !dbg !1955
%154 = bitcast { i8*, i64 }* %27 to i8*, !dbg !1918
call void @llvm.memset.p0i8.i64(i8* %154, i8 0, i64 16, i1 false), !dbg !1918
%155 = bitcast [1 x i8]* %28 to i8*, !dbg !1918
call void @llvm.memset.p0i8.i64(i8* %155, i8 0, i64 1, i1 false), !dbg !1918
%156 = getelementptr [1 x i8], [1 x i8]* %28, i64 0, i64 0, !dbg !1918
store i8 %.052, i8* %156, align 1, !dbg !1918
%157 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %27, i32 0, i32 0, !dbg !1918
store i8* %156, i8** %157, align 8, !dbg !1918
%158 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %27, i32 0, i32 1, !dbg !1918
store i64 1, i64* %158, align 8, !dbg !1918
%159 = bitcast { i8*, i64 }* %27 to [2 x i64]*, !dbg !1918
%160 = load [2 x i64], [2 x i64]* %159, align 8, !dbg !1918
call void @strconv.format_digits.add_bytes-1(%strconv.format_digits.Buffer-1* %8, [2 x i64] %160, i8* %__.context_ptr), !dbg !1918
%161 = icmp sgt i64 %4, 0, !dbg !1957
br i1 %161, label %if.then14, label %if.done21, !dbg !1957
if.then14: ; preds = %if.done13
%162 = bitcast { i8*, i64 }* %29 to i8*, !dbg !1919
call void @llvm.memset.p0i8.i64(i8* %162, i8 0, i64 16, i1 false), !dbg !1919
%163 = bitcast [1 x i8]* %30 to i8*, !dbg !1919
call void @llvm.memset.p0i8.i64(i8* %163, i8 0, i64 1, i1 false), !dbg !1919
%164 = getelementptr [1 x i8], [1 x i8]* %30, i64 0, i64 0, !dbg !1919
store i8 46, i8* %164, align 1, !dbg !1919
%165 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %29, i32 0, i32 0, !dbg !1919
store i8* %164, i8** %165, align 8, !dbg !1919
%166 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %29, i32 0, i32 1, !dbg !1919
store i64 1, i64* %166, align 8, !dbg !1919
%167 = bitcast { i8*, i64 }* %29 to [2 x i64]*, !dbg !1919
%168 = load [2 x i64], [2 x i64]* %167, align 8, !dbg !1919
call void @strconv.format_digits.add_bytes-1(%strconv.format_digits.Buffer-1* %8, [2 x i64] %168, i8* %__.context_ptr), !dbg !1919
call void @llvm.dbg.value(metadata i64 0, metadata !1893, metadata !DIExpression()), !dbg !1958
call void @llvm.dbg.value(metadata i64 1, metadata !1893, metadata !DIExpression()), !dbg !1958
call void @llvm.dbg.value(metadata i64 0, metadata !1896, metadata !DIExpression()), !dbg !1958
%169 = load i64, i64* %143, align 8, !dbg !1959
%170 = add i64 %4, 1, !dbg !1959
%171 = icmp slt i64 %169, %170, !dbg !1959
%172 = select i1 %171, i64 %169, i64 %170, !dbg !1959
call void @llvm.dbg.value(metadata i64 %172, metadata !1896, metadata !DIExpression()), !dbg !1958
%173 = icmp slt i64 1, %172, !dbg !1960
br i1 %173, label %if.then15, label %if.done16, !dbg !1960
if.then15: ; preds = %if.then14
%174 = getelementptr inbounds %strconv.Decimal_Slice, %strconv.Decimal_Slice* %3, i32 0, i32 0, !dbg !1920
%175 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %174, i32 0, i32 1, !dbg !1920
%176 = load i64, i64* %175, align 8, !dbg !1920
%177 = bitcast [2 x i64]* %31 to %..string*, !dbg !1920
store %..string { i8* getelementptr inbounds ([60 x i8], [60 x i8]* @"csbs$8b", i64 0, i64 0), i64 59 }, %..string* %177, align 8, !dbg !1920
%178 = load [2 x i64], [2 x i64]* %31, align 8, !dbg !1920
call void @runtime.slice_expr_error_lo_hi([2 x i64] %178, i32 159, i32 32, i64 1, i64 %172, i64 %176), !dbg !1920
%179 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %174, i32 0, i32 0, !dbg !1920
%180 = load i8*, i8** %179, align 8, !dbg !1920
%181 = getelementptr i8, i8* %180, i64 1, !dbg !1920
%182 = sub i64 %172, 1, !dbg !1920
%183 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %32, i32 0, i32 0, !dbg !1920
store i8* %181, i8** %183, align 8, !dbg !1920
%184 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %32, i32 0, i32 1, !dbg !1920
store i64 %182, i64* %184, align 8, !dbg !1920
%185 = bitcast { i8*, i64 }* %32 to [2 x i64]*, !dbg !1920
%186 = load [2 x i64], [2 x i64]* %185, align 8, !dbg !1920
call void @strconv.format_digits.add_bytes-1(%strconv.format_digits.Buffer-1* %8, [2 x i64] %186, i8* %__.context_ptr), !dbg !1920
call void @llvm.dbg.value(metadata i64 %172, metadata !1893, metadata !DIExpression()), !dbg !1958
br label %if.done16, !dbg !1960
if.done16: ; preds = %if.then15, %if.then14
%.048 = phi i64 [ %172, %if.then15 ], [ 1, %if.then14 ], !dbg !1958
call void @llvm.dbg.value(metadata i64 %.048, metadata !1893, metadata !DIExpression()), !dbg !1958
br label %for.loop17, !dbg !1961
for.loop17: ; preds = %for.body18, %if.done16
%.149 = phi i64 [ %.048, %if.done16 ], [ %195, %for.body18 ], !dbg !1958
call void @llvm.dbg.value(metadata i64 %.149, metadata !1893, metadata !DIExpression()), !dbg !1958
%187 = icmp sle i64 %.149, %4, !dbg !1961
br i1 %187, label %for.body18, label %if.done21, !dbg !1961
for.body18: ; preds = %for.loop17
%188 = bitcast { i8*, i64 }* %33 to i8*, !dbg !1923
call void @llvm.memset.p0i8.i64(i8* %188, i8 0, i64 16, i1 false), !dbg !1923
%189 = bitcast [1 x i8]* %34 to i8*, !dbg !1923
call void @llvm.memset.p0i8.i64(i8* %189, i8 0, i64 1, i1 false), !dbg !1923
%190 = getelementptr [1 x i8], [1 x i8]* %34, i64 0, i64 0, !dbg !1923
store i8 48, i8* %190, align 1, !dbg !1923
%191 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %33, i32 0, i32 0, !dbg !1923
store i8* %190, i8** %191, align 8, !dbg !1923
%192 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %33, i32 0, i32 1, !dbg !1923
store i64 1, i64* %192, align 8, !dbg !1923
%193 = bitcast { i8*, i64 }* %33 to [2 x i64]*, !dbg !1923
%194 = load [2 x i64], [2 x i64]* %193, align 8, !dbg !1923
call void @strconv.format_digits.add_bytes-1(%strconv.format_digits.Buffer-1* %8, [2 x i64] %194, i8* %__.context_ptr), !dbg !1923
%195 = add i64 %.149, 1, !dbg !1962
call void @llvm.dbg.value(metadata i64 %195, metadata !1893, metadata !DIExpression()), !dbg !1958
br label %for.loop17, !dbg !1961
if.done21: ; preds = %for.loop17, %if.done13
%196 = bitcast { i8*, i64 }* %35 to i8*, !dbg !1926
call void @llvm.memset.p0i8.i64(i8* %196, i8 0, i64 16, i1 false), !dbg !1926
%197 = bitcast [1 x i8]* %36 to i8*, !dbg !1926
call void @llvm.memset.p0i8.i64(i8* %197, i8 0, i64 1, i1 false), !dbg !1926
%198 = getelementptr [1 x i8], [1 x i8]* %36, i64 0, i64 0, !dbg !1926
store i8 %5, i8* %198, align 1, !dbg !1926
%199 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %35, i32 0, i32 0, !dbg !1926
store i8* %198, i8** %199, align 8, !dbg !1926
%200 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %35, i32 0, i32 1, !dbg !1926
store i64 1, i64* %200, align 8, !dbg !1926
%201 = bitcast { i8*, i64 }* %35 to [2 x i64]*, !dbg !1926
%202 = load [2 x i64], [2 x i64]* %201, align 8, !dbg !1926
call void @strconv.format_digits.add_bytes-1(%strconv.format_digits.Buffer-1* %8, [2 x i64] %202, i8* %__.context_ptr), !dbg !1926
call void @llvm.dbg.value(metadata i64 0, metadata !1897, metadata !DIExpression()), !dbg !1955
%203 = getelementptr inbounds %strconv.Decimal_Slice, %strconv.Decimal_Slice* %3, i32 0, i32 2, !dbg !1963
%204 = load i64, i64* %203, align 8, !dbg !1963
%205 = sub i64 %204, 1, !dbg !1963
call void @llvm.dbg.value(metadata i64 %205, metadata !1897, metadata !DIExpression()), !dbg !1955
%206 = load i64, i64* %143, align 8, !dbg !1964
%207 = icmp eq i64 %206, 0, !dbg !1964
%spec.select = select i1 %207, i64 0, i64 %205, !dbg !1964
call void @llvm.dbg.value(metadata i64 %spec.select, metadata !1897, metadata !DIExpression()), !dbg !1955
call void @llvm.dbg.value(metadata i8 43, metadata !1891, metadata !DIExpression()), !dbg !1955
%208 = icmp slt i64 %spec.select, 0, !dbg !1965
%209 = sub i64 0, %spec.select, !dbg !1965
%.153 = select i1 %208, i8 45, i8 43, !dbg !1965
%.144 = select i1 %208, i64 %209, i64 %spec.select, !dbg !1965
call void @llvm.dbg.value(metadata i64 %.144, metadata !1897, metadata !DIExpression()), !dbg !1955
call void @llvm.dbg.value(metadata i8 %.153, metadata !1891, metadata !DIExpression()), !dbg !1955
%210 = bitcast { i8*, i64 }* %37 to i8*, !dbg !1927
call void @llvm.memset.p0i8.i64(i8* %210, i8 0, i64 16, i1 false), !dbg !1927
%211 = bitcast [1 x i8]* %38 to i8*, !dbg !1927
call void @llvm.memset.p0i8.i64(i8* %211, i8 0, i64 1, i1 false), !dbg !1927
%212 = getelementptr [1 x i8], [1 x i8]* %38, i64 0, i64 0, !dbg !1927
store i8 %.153, i8* %212, align 1, !dbg !1927
%213 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %37, i32 0, i32 0, !dbg !1927
store i8* %212, i8** %213, align 8, !dbg !1927
%214 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %37, i32 0, i32 1, !dbg !1927
store i64 1, i64* %214, align 8, !dbg !1927
%215 = bitcast { i8*, i64 }* %37 to [2 x i64]*, !dbg !1927
%216 = load [2 x i64], [2 x i64]* %215, align 8, !dbg !1927
call void @strconv.format_digits.add_bytes-1(%strconv.format_digits.Buffer-1* %8, [2 x i64] %216, i8* %__.context_ptr), !dbg !1927
%217 = icmp slt i64 %.144, 10, !dbg !1966
br i1 %217, label %switch.case.body26, label %switch.case.next, !dbg !1966
switch.case.next: ; preds = %if.done21
%218 = icmp slt i64 %.144, 100, !dbg !1966
br i1 %218, label %switch.case.body28, label %switch.default.body, !dbg !1966
switch.case.body26: ; preds = %if.done21
%219 = trunc i64 %.144 to i8, !dbg !1928
%220 = add i8 %219, 48, !dbg !1928
%221 = bitcast { i8*, i64 }* %39 to i8*, !dbg !1928
call void @llvm.memset.p0i8.i64(i8* %221, i8 0, i64 16, i1 false), !dbg !1928
%222 = bitcast [2 x i8]* %40 to i8*, !dbg !1928
call void @llvm.memset.p0i8.i64(i8* %222, i8 0, i64 2, i1 false), !dbg !1928
%223 = getelementptr [2 x i8], [2 x i8]* %40, i64 0, i64 0, !dbg !1928
store i8 48, i8* %223, align 1, !dbg !1928
%224 = getelementptr [2 x i8], [2 x i8]* %40, i64 0, i64 1, !dbg !1928
store i8 %220, i8* %224, align 1, !dbg !1928
%225 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %39, i32 0, i32 0, !dbg !1928
store i8* %223, i8** %225, align 8, !dbg !1928
%226 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %39, i32 0, i32 1, !dbg !1928
store i64 2, i64* %226, align 8, !dbg !1928
%227 = bitcast { i8*, i64 }* %39 to [2 x i64]*, !dbg !1928
%228 = load [2 x i64], [2 x i64]* %227, align 8, !dbg !1928
call void @strconv.format_digits.add_bytes-1(%strconv.format_digits.Buffer-1* %8, [2 x i64] %228, i8* %__.context_ptr), !dbg !1928
br label %switch.done, !dbg !1966
switch.case.body28: ; preds = %switch.case.next
%229 = sdiv i64 %.144, 10, !dbg !1930
%230 = trunc i64 %229 to i8, !dbg !1930
%231 = add i8 %230, 48, !dbg !1930
%232 = srem i64 %.144, 10, !dbg !1930
%233 = trunc i64 %232 to i8, !dbg !1930
%234 = add i8 %233, 48, !dbg !1930
%235 = bitcast { i8*, i64 }* %41 to i8*, !dbg !1930
call void @llvm.memset.p0i8.i64(i8* %235, i8 0, i64 16, i1 false), !dbg !1930
%236 = bitcast [2 x i8]* %42 to i8*, !dbg !1930
call void @llvm.memset.p0i8.i64(i8* %236, i8 0, i64 2, i1 false), !dbg !1930
%237 = getelementptr [2 x i8], [2 x i8]* %42, i64 0, i64 0, !dbg !1930
store i8 %231, i8* %237, align 1, !dbg !1930
%238 = getelementptr [2 x i8], [2 x i8]* %42, i64 0, i64 1, !dbg !1930
store i8 %234, i8* %238, align 1, !dbg !1930
%239 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %41, i32 0, i32 0, !dbg !1930
store i8* %237, i8** %239, align 8, !dbg !1930
%240 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %41, i32 0, i32 1, !dbg !1930
store i64 2, i64* %240, align 8, !dbg !1930
%241 = bitcast { i8*, i64 }* %41 to [2 x i64]*, !dbg !1930
%242 = load [2 x i64], [2 x i64]* %241, align 8, !dbg !1930
call void @strconv.format_digits.add_bytes-1(%strconv.format_digits.Buffer-1* %8, [2 x i64] %242, i8* %__.context_ptr), !dbg !1930
br label %switch.done, !dbg !1966
switch.default.body: ; preds = %switch.case.next
%243 = sdiv i64 %.144, 100, !dbg !1931
%244 = trunc i64 %243 to i8, !dbg !1931
%245 = add i8 %244, 48, !dbg !1931
%246 = sdiv i64 %.144, 10, !dbg !1931
%247 = trunc i64 %246 to i8, !dbg !1931
%248 = urem i8 %247, 10, !dbg !1931
%249 = add i8 %248, 48, !dbg !1931
%250 = srem i64 %.144, 10, !dbg !1931
%251 = trunc i64 %250 to i8, !dbg !1931
%252 = add i8 %251, 48, !dbg !1931
%253 = bitcast { i8*, i64 }* %43 to i8*, !dbg !1931
call void @llvm.memset.p0i8.i64(i8* %253, i8 0, i64 16, i1 false), !dbg !1931
%254 = bitcast [3 x i8]* %44 to i8*, !dbg !1931
call void @llvm.memset.p0i8.i64(i8* %254, i8 0, i64 3, i1 false), !dbg !1931
%255 = getelementptr [3 x i8], [3 x i8]* %44, i64 0, i64 0, !dbg !1931
store i8 %245, i8* %255, align 1, !dbg !1931
%256 = getelementptr [3 x i8], [3 x i8]* %44, i64 0, i64 1, !dbg !1931
store i8 %249, i8* %256, align 1, !dbg !1931
%257 = getelementptr [3 x i8], [3 x i8]* %44, i64 0, i64 2, !dbg !1931
store i8 %252, i8* %257, align 1, !dbg !1931
%258 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %43, i32 0, i32 0, !dbg !1931
store i8* %255, i8** %258, align 8, !dbg !1931
%259 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %43, i32 0, i32 1, !dbg !1931
store i64 3, i64* %259, align 8, !dbg !1931
%260 = bitcast { i8*, i64 }* %43 to [2 x i64]*, !dbg !1931
%261 = load [2 x i64], [2 x i64]* %260, align 8, !dbg !1931
call void @strconv.format_digits.add_bytes-1(%strconv.format_digits.Buffer-1* %8, [2 x i64] %261, i8* %__.context_ptr), !dbg !1931
br label %switch.done, !dbg !1966
switch.done: ; preds = %switch.default.body, %switch.case.body28, %switch.case.body26
%262 = call [2 x i64] @strconv.format_digits.to_bytes-0(%strconv.format_digits.Buffer-1* %8, i8* %__.context_ptr), !dbg !1932
%263 = bitcast { i8*, i64 }* %45 to [2 x i64]*, !dbg !1932
store [2 x i64] %262, [2 x i64]* %263, align 8, !dbg !1932
ret [2 x i64] %262, !dbg !1932
switch.case.body29: ; preds = %decls, %decls
call void @llvm.dbg.value(metadata i64 0, metadata !1898, metadata !DIExpression()), !dbg !1955
call void @llvm.dbg.value(metadata i64 %4, metadata !1898, metadata !DIExpression()), !dbg !1955
%264 = getelementptr inbounds %strconv.Decimal_Slice, %strconv.Decimal_Slice* %3, i32 0, i32 1, !dbg !1967
%265 = load i64, i64* %264, align 8, !dbg !1967
%266 = icmp sgt i64 %4, %265, !dbg !1967
br i1 %266, label %cmp.and30, label %if.done32, !dbg !1967
cmp.and30: ; preds = %switch.case.body29
%267 = getelementptr inbounds %strconv.Decimal_Slice, %strconv.Decimal_Slice* %3, i32 0, i32 2, !dbg !1967
%268 = load i64, i64* %267, align 8, !dbg !1967
%269 = icmp sge i64 %265, %268, !dbg !1967
%spec.select56 = select i1 %269, i64 %265, i64 %4, !dbg !1967
br label %if.done32, !dbg !1967
if.done32: ; preds = %cmp.and30, %switch.case.body29
%.0 = phi i64 [ %4, %switch.case.body29 ], [ %spec.select56, %cmp.and30 ], !dbg !1939
call void @llvm.dbg.value(metadata i64 %.0, metadata !1898, metadata !DIExpression()), !dbg !1955
%spec.select57 = select i1 %1, i64 6, i64 %.0, !dbg !1968
call void @llvm.dbg.value(metadata i64 %spec.select57, metadata !1898, metadata !DIExpression()), !dbg !1955
call void @llvm.dbg.value(metadata i64 0, metadata !1899, metadata !DIExpression()), !dbg !1955
%270 = getelementptr inbounds %strconv.Decimal_Slice, %strconv.Decimal_Slice* %3, i32 0, i32 2, !dbg !1969
%271 = load i64, i64* %270, align 8, !dbg !1969
%272 = sub i64 %271, 1, !dbg !1969
call void @llvm.dbg.value(metadata i64 %272, metadata !1899, metadata !DIExpression()), !dbg !1955
%273 = icmp slt i64 %272, -4, !dbg !1970
br i1 %273, label %if.then35, label %cmp.or, !dbg !1970
cmp.or: ; preds = %if.done32
%274 = icmp sge i64 %272, %spec.select57, !dbg !1970
br i1 %274, label %if.then35, label %if.done38, !dbg !1970
if.then35: ; preds = %cmp.or, %if.done32
%275 = load i64, i64* %264, align 8, !dbg !1971
%276 = icmp sgt i64 %4, %275, !dbg !1971
%spec.select58 = select i1 %276, i64 %275, i64 %4, !dbg !1971
call void @llvm.dbg.value(metadata i64 %spec.select58, metadata !1879, metadata !DIExpression()), !dbg !1941
%277 = sub i64 %spec.select58, 1, !dbg !1933
%278 = add i8 %5, 101, !dbg !1933
%279 = sub i8 %278, 103, !dbg !1933
%280 = bitcast { i8*, i64 }* %7 to [2 x i64]*, !dbg !1933
%281 = load [2 x i64], [2 x i64]* %280, align 8, !dbg !1933
%282 = call [2 x i64] @strconv.format_digits([2 x i64] %281, i1 %1, i1 %2, %strconv.Decimal_Slice* %3, i64 %277, i8 %279, i8* %__.context_ptr), !dbg !1933
%283 = bitcast { i8*, i64 }* %46 to [2 x i64]*, !dbg !1933
store [2 x i64] %282, [2 x i64]* %283, align 8, !dbg !1933
ret [2 x i64] %282, !dbg !1933
if.done38: ; preds = %cmp.or
%284 = icmp sgt i64 %4, %271, !dbg !1972
br i1 %284, label %if.then39, label %if.done40, !dbg !1972
if.then39: ; preds = %if.done38
%285 = load i64, i64* %264, align 8, !dbg !1973
call void @llvm.dbg.value(metadata i64 %285, metadata !1879, metadata !DIExpression()), !dbg !1941
br label %if.done40, !dbg !1972
if.done40: ; preds = %if.then39, %if.done38
%.146 = phi i64 [ %285, %if.then39 ], [ %4, %if.done38 ], !dbg !1939
call void @llvm.dbg.value(metadata i64 %.146, metadata !1879, metadata !DIExpression()), !dbg !1941
%286 = load i64, i64* %270, align 8, !dbg !1936
%287 = sub i64 %.146, %286, !dbg !1936
%288 = icmp sgt i64 %287, 0, !dbg !1936
%289 = select i1 %288, i64 %287, i64 0, !dbg !1936
%290 = bitcast { i8*, i64 }* %7 to [2 x i64]*, !dbg !1936
%291 = load [2 x i64], [2 x i64]* %290, align 8, !dbg !1936
%292 = call [2 x i64] @strconv.format_digits([2 x i64] %291, i1 %1, i1 %2, %strconv.Decimal_Slice* %3, i64 %289, i8 102, i8* %__.context_ptr), !dbg !1936
%293 = bitcast { i8*, i64 }* %47 to [2 x i64]*, !dbg !1936
store [2 x i64] %292, [2 x i64]* %293, align 8, !dbg !1936
ret [2 x i64] %292, !dbg !1936
switch.default.body41: ; preds = %decls
%294 = bitcast { i8*, i64 }* %48 to i8*, !dbg !1937
call void @llvm.memset.p0i8.i64(i8* %294, i8 0, i64 16, i1 false), !dbg !1937
%295 = bitcast [2 x i8]* %49 to i8*, !dbg !1937
call void @llvm.memset.p0i8.i64(i8* %295, i8 0, i64 2, i1 false), !dbg !1937
%296 = getelementptr [2 x i8], [2 x i8]* %49, i64 0, i64 0, !dbg !1937
store i8 37, i8* %296, align 1, !dbg !1937
%297 = getelementptr [2 x i8], [2 x i8]* %49, i64 0, i64 1, !dbg !1937
store i8 %5, i8* %297, align 1, !dbg !1937
%298 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %48, i32 0, i32 0, !dbg !1937
store i8* %296, i8** %298, align 8, !dbg !1937
%299 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %48, i32 0, i32 1, !dbg !1937
store i64 2, i64* %299, align 8, !dbg !1937
%300 = bitcast { i8*, i64 }* %48 to [2 x i64]*, !dbg !1937
%301 = load [2 x i64], [2 x i64]* %300, align 8, !dbg !1937
call void @strconv.format_digits.add_bytes-1(%strconv.format_digits.Buffer-1* %8, [2 x i64] %301, i8* %__.context_ptr), !dbg !1937
%302 = call [2 x i64] @strconv.format_digits.to_bytes-0(%strconv.format_digits.Buffer-1* %8, i8* %__.context_ptr), !dbg !1938
%303 = bitcast { i8*, i64 }* %50 to [2 x i64]*, !dbg !1938
store [2 x i64] %302, [2 x i64]* %303, align 8, !dbg !1938
ret [2 x i64] %302, !dbg !1938
}
define internal i64 @os.get_last_error(i8* noalias nocapture nonnull %__.context_ptr) !dbg !1976 {
decls:
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !1980, metadata !DIExpression()), !dbg !1981
%0 = call i64* @__errno_location(), !dbg !1982
%1 = load i64, i64* %0, align 8, !dbg !1982
ret i64 %1, !dbg !1982
}
define internal void @strconv.round_shortest(%strconv_decimal.Decimal* %0, i64 %1, i64 %2, %strconv.Float_Info* %3, i8* noalias nocapture nonnull %__.context_ptr) !dbg !1984 {
decls:
call void @llvm.dbg.declare(metadata %strconv_decimal.Decimal* %4, metadata !1995, metadata !DIExpression()), !dbg !2010
%4 = alloca %strconv_decimal.Decimal, align 8, !dbg !2010
call void @llvm.dbg.declare(metadata %strconv_decimal.Decimal* %5, metadata !1999, metadata !DIExpression()), !dbg !2011
%5 = alloca %strconv_decimal.Decimal, align 8, !dbg !2011
%6 = alloca [2 x i64], align 8, !dbg !2012
%7 = alloca [2 x i64], align 8, !dbg !2015
%8 = alloca [2 x i64], align 8, !dbg !2016
call void @llvm.dbg.value(metadata %strconv_decimal.Decimal* %0, metadata !1988, metadata !DIExpression()), !dbg !2019
call void @llvm.dbg.value(metadata i64 %1, metadata !1989, metadata !DIExpression()), !dbg !2019
call void @llvm.dbg.value(metadata i64 %2, metadata !1990, metadata !DIExpression()), !dbg !2019
call void @llvm.dbg.value(metadata %strconv.Float_Info* %3, metadata !1991, metadata !DIExpression()), !dbg !2019
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1992, metadata !DIExpression()), !dbg !2020
%9 = icmp eq i64 %1, 0, !dbg !2021
br i1 %9, label %if.then, label %if.done, !dbg !2021
if.then: ; preds = %decls
%10 = getelementptr inbounds %strconv_decimal.Decimal, %strconv_decimal.Decimal* %0, i32 0, i32 1, !dbg !2022
store i64 0, i64* %10, align 8, !dbg !2022
ret void, !dbg !2025
if.done: ; preds = %decls
call void @llvm.dbg.value(metadata i64 0, metadata !1993, metadata !DIExpression()), !dbg !2026
%11 = getelementptr inbounds %strconv.Float_Info, %strconv.Float_Info* %3, i32 0, i32 2, !dbg !2027
%12 = load i64, i64* %11, align 8, !dbg !2027
%13 = add i64 %12, 1, !dbg !2027
call void @llvm.dbg.value(metadata i64 %13, metadata !1993, metadata !DIExpression()), !dbg !2026
%14 = icmp sgt i64 %2, %13, !dbg !2028
br i1 %14, label %cmp.and, label %if.done2, !dbg !2028
cmp.and: ; preds = %if.done
%15 = getelementptr inbounds %strconv_decimal.Decimal, %strconv_decimal.Decimal* %0, i32 0, i32 2, !dbg !2028
%16 = load i64, i64* %15, align 8, !dbg !2028
%17 = getelementptr inbounds %strconv_decimal.Decimal, %strconv_decimal.Decimal* %0, i32 0, i32 1, !dbg !2028
%18 = load i64, i64* %17, align 8, !dbg !2028
%19 = sub i64 %16, %18, !dbg !2028
%20 = mul i64 332, %19, !dbg !2028
%21 = getelementptr inbounds %strconv.Float_Info, %strconv.Float_Info* %3, i32 0, i32 0, !dbg !2028
%22 = load i64, i64* %21, align 8, !dbg !2028
%23 = sub i64 %2, %22, !dbg !2028
%24 = mul i64 100, %23, !dbg !2028
%25 = icmp sge i64 %20, %24, !dbg !2028
br i1 %25, label %if.then1, label %if.done2, !dbg !2028
if.then1: ; preds = %for.interval.loop, %cmp.and
ret void, !dbg !2029
if.done2: ; preds = %cmp.and, %if.done
%26 = bitcast %strconv_decimal.Decimal* %4 to i8*, !dbg !2010
call void @llvm.memset.p0i8.i64(i8* %26, i8 0, i64 408, i1 false), !dbg !2010
call void @llvm.dbg.value(metadata %strconv_decimal.Decimal* null, metadata !1996, metadata !DIExpression()), !dbg !2026
call void @llvm.dbg.value(metadata %strconv_decimal.Decimal* %4, metadata !1996, metadata !DIExpression()), !dbg !2026
%27 = mul i64 2, %1, !dbg !2032
%28 = sub i64 %27, 1, !dbg !2032
call void @strconv_decimal.assign(%strconv_decimal.Decimal* %4, i64 %28, i8* %__.context_ptr), !dbg !2032
%29 = getelementptr inbounds %strconv.Float_Info, %strconv.Float_Info* %3, i32 0, i32 0, !dbg !2033
%30 = load i64, i64* %29, align 8, !dbg !2033
%31 = sub i64 %2, %30, !dbg !2033
%32 = sub i64 %31, 1, !dbg !2033
call void @strconv_decimal.shift(%strconv_decimal.Decimal* %4, i64 %32, i8* %__.context_ptr), !dbg !2033
call void @llvm.dbg.value(metadata i64 0, metadata !1997, metadata !DIExpression()), !dbg !2026
call void @llvm.dbg.value(metadata i64 0, metadata !1998, metadata !DIExpression()), !dbg !2026
%33 = load i64, i64* %29, align 8, !dbg !2034
%34 = icmp ult i64 %33, 64, !dbg !2034
%35 = shl i64 1, %33, !dbg !2034
%36 = select i1 %34, i64 %35, i64 0, !dbg !2034
%37 = icmp ugt i64 %1, %36, !dbg !2034
br i1 %37, label %if.then3, label %cmp.or, !dbg !2034
cmp.or: ; preds = %if.done2
%38 = icmp eq i64 %2, %13, !dbg !2034
br i1 %38, label %if.then3, label %if.else, !dbg !2034
if.then3: ; preds = %cmp.or, %if.done2
%39 = sub i64 %1, 1, !dbg !2035
call void @llvm.dbg.value(metadata i64 %39, metadata !1997, metadata !DIExpression()), !dbg !2026
call void @llvm.dbg.value(metadata i64 %2, metadata !1998, metadata !DIExpression()), !dbg !2026
br label %if.done4, !dbg !2034
if.else: ; preds = %cmp.or
call void @llvm.dbg.value(metadata i64 %28, metadata !1997, metadata !DIExpression()), !dbg !2026
%40 = sub i64 %2, 1, !dbg !2038
call void @llvm.dbg.value(metadata i64 %40, metadata !1998, metadata !DIExpression()), !dbg !2026
br label %if.done4, !dbg !2034
if.done4: ; preds = %if.else, %if.then3
%.024 = phi i64 [ %2, %if.then3 ], [ %40, %if.else ], !dbg !2040
%.023 = phi i64 [ %39, %if.then3 ], [ %28, %if.else ], !dbg !2040
call void @llvm.dbg.value(metadata i64 %.023, metadata !1997, metadata !DIExpression()), !dbg !2026
call void @llvm.dbg.value(metadata i64 %.024, metadata !1998, metadata !DIExpression()), !dbg !2026
%41 = bitcast %strconv_decimal.Decimal* %5 to i8*, !dbg !2011
call void @llvm.memset.p0i8.i64(i8* %41, i8 0, i64 408, i1 false), !dbg !2011
call void @llvm.dbg.value(metadata %strconv_decimal.Decimal* null, metadata !2000, metadata !DIExpression()), !dbg !2026
call void @llvm.dbg.value(metadata %strconv_decimal.Decimal* %5, metadata !2000, metadata !DIExpression()), !dbg !2026
%42 = mul i64 2, %.023, !dbg !2041
%43 = add i64 %42, 1, !dbg !2041
call void @strconv_decimal.assign(%strconv_decimal.Decimal* %5, i64 %43, i8* %__.context_ptr), !dbg !2041
%44 = load i64, i64* %29, align 8, !dbg !2042
%45 = sub i64 %.024, %44, !dbg !2042
%46 = sub i64 %45, 1, !dbg !2042
call void @strconv_decimal.shift(%strconv_decimal.Decimal* %5, i64 %46, i8* %__.context_ptr), !dbg !2042
call void @llvm.dbg.value(metadata i8 0, metadata !2001, metadata !DIExpression()), !dbg !2026
%47 = urem i64 %1, 2, !dbg !2043
%48 = icmp eq i64 %47, 0, !dbg !2043
call void @llvm.dbg.value(metadata i8 undef, metadata !2001, metadata !DIExpression()), !dbg !2026
call void @llvm.dbg.value(metadata i64 0, metadata !2002, metadata !DIExpression()), !dbg !2044
br label %for.interval.loop, !dbg !2045
for.interval.loop: ; preds = %for.interval.post, %if.done4
%.027 = phi i64 [ 0, %if.done4 ], [ %94, %for.interval.post ], !dbg !2045
%.026 = phi i64 [ 0, %if.done4 ], [ %93, %for.interval.post ], !dbg !2045
%49 = getelementptr inbounds %strconv_decimal.Decimal, %strconv_decimal.Decimal* %0, i32 0, i32 1, !dbg !2045
%50 = load i64, i64* %49, align 8, !dbg !2045
%51 = icmp slt i64 %.026, %50, !dbg !2045
br i1 %51, label %for.interval.body, label %if.then1, !dbg !2045
for.interval.body: ; preds = %for.interval.loop
call void @llvm.dbg.value(metadata i64 %.026, metadata !2002, metadata !DIExpression()), !dbg !2044
call void @llvm.dbg.value(metadata i8 0, metadata !2004, metadata !DIExpression()), !dbg !2046
call void @llvm.dbg.value(metadata i8 48, metadata !2004, metadata !DIExpression()), !dbg !2046
%52 = getelementptr inbounds %strconv_decimal.Decimal, %strconv_decimal.Decimal* %5, i32 0, i32 1, !dbg !2047
%53 = load i64, i64* %52, align 8, !dbg !2047
%54 = icmp slt i64 %.026, %53, !dbg !2047
br i1 %54, label %if.then5, label %if.done6, !dbg !2047
if.then5: ; preds = %for.interval.body
%55 = getelementptr inbounds %strconv_decimal.Decimal, %strconv_decimal.Decimal* %5, i32 0, i32 0, !dbg !2012
%56 = getelementptr [384 x i8], [384 x i8]* %55, i64 0, i64 %.026, !dbg !2012
%57 = bitcast [2 x i64]* %6 to %..string*, !dbg !2012
store %..string { i8* getelementptr inbounds ([60 x i8], [60 x i8]* @"csbs$8b", i64 0, i64 0), i64 59 }, %..string* %57, align 8, !dbg !2012
%58 = load [2 x i64], [2 x i64]* %6, align 8, !dbg !2012
call void @runtime.bounds_check_error([2 x i64] %58, i32 261, i32 21, i64 %.026, i64 384), !dbg !2012
%59 = load i8, i8* %56, align 1, !dbg !2012
call void @llvm.dbg.value(metadata i8 %59, metadata !2004, metadata !DIExpression()), !dbg !2046
br label %if.done6, !dbg !2047
if.done6: ; preds = %if.then5, %for.interval.body
%.025 = phi i8 [ %59, %if.then5 ], [ 48, %for.interval.body ], !dbg !2046
call void @llvm.dbg.value(metadata i8 %.025, metadata !2004, metadata !DIExpression()), !dbg !2046
call void @llvm.dbg.value(metadata i8 0, metadata !2006, metadata !DIExpression()), !dbg !2046
%60 = getelementptr inbounds %strconv_decimal.Decimal, %strconv_decimal.Decimal* %0, i32 0, i32 0, !dbg !2015
%61 = getelementptr [384 x i8], [384 x i8]* %60, i64 0, i64 %.026, !dbg !2015
%62 = bitcast [2 x i64]* %7 to %..string*, !dbg !2015
store %..string { i8* getelementptr inbounds ([60 x i8], [60 x i8]* @"csbs$8b", i64 0, i64 0), i64 59 }, %..string* %62, align 8, !dbg !2015
%63 = load [2 x i64], [2 x i64]* %7, align 8, !dbg !2015
call void @runtime.bounds_check_error([2 x i64] %63, i32 263, i32 17, i64 %.026, i64 384), !dbg !2015
%64 = load i8, i8* %61, align 1, !dbg !2015
call void @llvm.dbg.value(metadata i8 %64, metadata !2006, metadata !DIExpression()), !dbg !2046
call void @llvm.dbg.value(metadata i8 0, metadata !2007, metadata !DIExpression()), !dbg !2046
call void @llvm.dbg.value(metadata i8 48, metadata !2007, metadata !DIExpression()), !dbg !2046
%65 = getelementptr inbounds %strconv_decimal.Decimal, %strconv_decimal.Decimal* %4, i32 0, i32 1, !dbg !2048
%66 = load i64, i64* %65, align 8, !dbg !2048
%67 = icmp slt i64 %.026, %66, !dbg !2048
br i1 %67, label %if.then7, label %if.done8, !dbg !2048
if.then7: ; preds = %if.done6
%68 = getelementptr inbounds %strconv_decimal.Decimal, %strconv_decimal.Decimal* %4, i32 0, i32 0, !dbg !2016
%69 = getelementptr [384 x i8], [384 x i8]* %68, i64 0, i64 %.026, !dbg !2016
%70 = bitcast [2 x i64]* %8 to %..string*, !dbg !2016
store %..string { i8* getelementptr inbounds ([60 x i8], [60 x i8]* @"csbs$8b", i64 0, i64 0), i64 59 }, %..string* %70, align 8, !dbg !2016
%71 = load [2 x i64], [2 x i64]* %8, align 8, !dbg !2016
call void @runtime.bounds_check_error([2 x i64] %71, i32 266, i32 21, i64 %.026, i64 384), !dbg !2016
%72 = load i8, i8* %69, align 1, !dbg !2016
call void @llvm.dbg.value(metadata i8 %72, metadata !2007, metadata !DIExpression()), !dbg !2046
br label %if.done8, !dbg !2048
if.done8: ; preds = %if.then7, %if.done6
%.0 = phi i8 [ %72, %if.then7 ], [ 48, %if.done6 ], !dbg !2046
call void @llvm.dbg.value(metadata i8 %.0, metadata !2007, metadata !DIExpression()), !dbg !2046
call void @llvm.dbg.value(metadata i8 0, metadata !2008, metadata !DIExpression()), !dbg !2046
%73 = icmp ne i8 %.025, %64, !dbg !2049
br i1 %73, label %logical.cmp.done10, label %logical.cmp.rhs, !dbg !2049
logical.cmp.rhs: ; preds = %if.done8
%74 = add i64 %.026, 1, !dbg !2049
%75 = load i64, i64* %52, align 8, !dbg !2049
%76 = icmp eq i64 %74, %75, !dbg !2049
%77 = zext i1 %76 to i8, !dbg !2049
%78 = select i1 %48, i8 %77, i8 0, !dbg !2049
br label %logical.cmp.done10, !dbg !2049
logical.cmp.done10: ; preds = %logical.cmp.rhs, %if.done8
%79 = phi i8 [ 1, %if.done8 ], [ %78, %logical.cmp.rhs ], !dbg !2049
call void @llvm.dbg.value(metadata i8 %79, metadata !2008, metadata !DIExpression()), !dbg !2046
call void @llvm.dbg.value(metadata i8 0, metadata !2009, metadata !DIExpression()), !dbg !2046
%80 = icmp ne i8 %64, %.0, !dbg !2050
%.not = xor i1 %80, true, !dbg !2050
%brmerge = or i1 %.not, %48, !dbg !2050
%.mux = select i1 %.not, i8 0, i8 1, !dbg !2050
br i1 %brmerge, label %logical.cmp.done15, label %cmp.or12, !dbg !2050
cmp.or12: ; preds = %logical.cmp.done10
%81 = add i8 %64, 1, !dbg !2050
%82 = icmp ult i8 %81, %.0, !dbg !2050
br i1 %82, label %logical.cmp.done15, label %logical.cmp.rhs13, !dbg !2050
logical.cmp.rhs13: ; preds = %cmp.or12
%83 = add i64 %.026, 1, !dbg !2050
%84 = load i64, i64* %65, align 8, !dbg !2050
%85 = icmp slt i64 %83, %84, !dbg !2050
%86 = zext i1 %85 to i8, !dbg !2050
br label %logical.cmp.done15, !dbg !2050
logical.cmp.done15: ; preds = %logical.cmp.done10, %cmp.or12, %logical.cmp.rhs13
%87 = phi i8 [ %.mux, %logical.cmp.done10 ], [ 1, %cmp.or12 ], [ %86, %logical.cmp.rhs13 ], !dbg !2050
call void @llvm.dbg.value(metadata i8 %87, metadata !2009, metadata !DIExpression()), !dbg !2046
%88 = trunc i8 %79 to i1, !dbg !2051
br i1 %88, label %cmp.and16, label %if.done20, !dbg !2051
cmp.and16: ; preds = %logical.cmp.done15
%89 = trunc i8 %87 to i1, !dbg !2051
br i1 %89, label %if.then17, label %if.done18, !dbg !2051
if.then17: ; preds = %cmp.and16
%90 = add i64 %.026, 1, !dbg !2052
call void @strconv_decimal.round(%strconv_decimal.Decimal* %0, i64 %90, i8* %__.context_ptr), !dbg !2052
ret void, !dbg !2055
if.done18: ; preds = %cmp.and16
br i1 %88, label %if.then19, label %if.done20, !dbg !2056
if.then19: ; preds = %if.done18
%91 = add i64 %.026, 1, !dbg !2057
call void @strconv_decimal.round_down(%strconv_decimal.Decimal* %0, i64 %91, i8* %__.context_ptr), !dbg !2057
ret void, !dbg !2060
if.done20: ; preds = %logical.cmp.done15, %if.done18
%92 = trunc i8 %87 to i1, !dbg !2061
%93 = add i64 %.026, 1, !dbg !2026
br i1 %92, label %if.then21, label %for.interval.post, !dbg !2061
if.then21: ; preds = %if.done20
call void @strconv_decimal.round_up(%strconv_decimal.Decimal* %0, i64 %93, i8* %__.context_ptr), !dbg !2062
ret void, !dbg !2065
for.interval.post: ; preds = %if.done20
%94 = add i64 %.027, 1, !dbg !2045
br label %for.interval.loop, !dbg !2045
}
define dso_local void @runtime.__dynamic_map_reserve(%runtime.Map_Header* %0, i64 %1, %runtime.Source_Code_Location* %2, i8* noalias nocapture nonnull %__.context_ptr) !dbg !2066 {
decls:
%3 = alloca [2 x i64], align 8, !dbg !2082
call void @llvm.dbg.value(metadata i64 %1, metadata !2070, metadata !DIExpression()), !dbg !2083
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !2071, metadata !DIExpression()), !dbg !2084
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %4, metadata !2072, metadata !DIExpression()), !dbg !2085
%4 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 0, !dbg !2086
%5 = load %runtime.Raw_Map*, %runtime.Raw_Map** %4, align 8, !dbg !2086
%6 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %5, i32 0, i32 1, !dbg !2086
call void @llvm.dbg.declare(metadata i64* %7, metadata !2074, metadata !DIExpression()), !dbg !2085
%7 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 2, !dbg !2086
%8 = load i64, i64* %7, align 8, !dbg !2086
call void @llvm.dbg.declare(metadata i64* %9, metadata !2075, metadata !DIExpression()), !dbg !2085
%9 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 3, !dbg !2086
%10 = load i64, i64* %9, align 8, !dbg !2086
%11 = bitcast %runtime.Raw_Dynamic_Array* %6 to i8*, !dbg !2086
%12 = call i8 @runtime.__dynamic_array_reserve(i8* %11, i64 %8, i64 %10, i64 %1, %runtime.Source_Code_Location* %2, i8* %__.context_ptr), !dbg !2086
call void @llvm.dbg.value(metadata i64 0, metadata !2076, metadata !DIExpression()), !dbg !2087
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %4, metadata !2072, metadata !DIExpression()), !dbg !2085
%13 = load %runtime.Raw_Map*, %runtime.Raw_Map** %4, align 8, !dbg !2088
%14 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %13, i32 0, i32 0, !dbg !2088
%15 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %14, i32 0, i32 1, !dbg !2088
%16 = load i64, i64* %15, align 8, !dbg !2088
call void @llvm.dbg.value(metadata i64 %16, metadata !2076, metadata !DIExpression()), !dbg !2087
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %4, metadata !2072, metadata !DIExpression()), !dbg !2085
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %4, metadata !2072, metadata !DIExpression()), !dbg !2085
%17 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %13, i32 0, i32 1, !dbg !2089
%18 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %17, i32 0, i32 3, !dbg !2089
%19 = bitcast %runtime.Allocator* %18 to [2 x i64]*, !dbg !2089
%20 = load [2 x i64], [2 x i64]* %19, align 8, !dbg !2089
%21 = call i8 @runtime.__slice_resize-10430({ i64*, i64 }* %14, i64 %1, [2 x i64] %20, %runtime.Source_Code_Location* %2, i8* %__.context_ptr), !dbg !2089
call void @llvm.dbg.value(metadata i64 0, metadata !2077, metadata !DIExpression()), !dbg !2090
br label %for.interval.loop, !dbg !2091
for.interval.loop: ; preds = %for.interval.body, %decls
%.01 = phi i64 [ %16, %decls ], [ %32, %for.interval.body ], !dbg !2091
%.0 = phi i64 [ 0, %decls ], [ %33, %for.interval.body ], !dbg !2091
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %4, metadata !2079, metadata !DIExpression()), !dbg !2092
%22 = load %runtime.Raw_Map*, %runtime.Raw_Map** %4, align 8, !dbg !2091
%23 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %22, i32 0, i32 0, !dbg !2091
%24 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %23, i32 0, i32 1, !dbg !2091
%25 = load i64, i64* %24, align 8, !dbg !2091
%26 = icmp slt i64 %.01, %25, !dbg !2091
br i1 %26, label %for.interval.body, label %for.interval.done, !dbg !2091
for.interval.body: ; preds = %for.interval.loop
call void @llvm.dbg.value(metadata i64 %.01, metadata !2077, metadata !DIExpression()), !dbg !2090
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %4, metadata !2080, metadata !DIExpression()), !dbg !2093
%27 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %23, i32 0, i32 0, !dbg !2082
%28 = load i64*, i64** %27, align 8, !dbg !2082
%29 = bitcast [2 x i64]* %3 to %..string*, !dbg !2082
store %..string { i8* getelementptr inbounds ([67 x i8], [67 x i8]* @"csbs$90", i64 0, i64 0), i64 66 }, %..string* %29, align 8, !dbg !2082
%30 = load [2 x i64], [2 x i64]* %3, align 8, !dbg !2082
call void @runtime.bounds_check_error([2 x i64] %30, i32 191, i32 12, i64 %.01, i64 %25), !dbg !2082
%31 = getelementptr i64, i64* %28, i64 %.01, !dbg !2082
store i64 -1, i64* %31, align 8, !dbg !2082
%32 = add i64 %.01, 1, !dbg !2091
%33 = add i64 %.0, 1, !dbg !2091
br label %for.interval.loop, !dbg !2091
for.interval.done: ; preds = %for.interval.loop
ret void, !dbg !2084
}
define internal i32 @os.close(i32 %0, i8* noalias nocapture nonnull %__.context_ptr) !dbg !2094 {
decls:
call void @llvm.dbg.value(metadata i32 %0, metadata !2099, metadata !DIExpression()), !dbg !2103
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !2100, metadata !DIExpression()), !dbg !2104
call void @llvm.dbg.value(metadata i32 0, metadata !2101, metadata !DIExpression()), !dbg !2105
%1 = call i32 @close(i32 %0), !dbg !2106
call void @llvm.dbg.value(metadata i32 %1, metadata !2101, metadata !DIExpression()), !dbg !2105
%2 = icmp eq i32 %1, -1, !dbg !2107
br i1 %2, label %if.then, label %if.done, !dbg !2107
if.then: ; preds = %decls
%3 = call i64 @os.get_last_error(i8* %__.context_ptr), !dbg !2108
%4 = trunc i64 %3 to i32, !dbg !2108
ret i32 %4, !dbg !2108
if.done: ; preds = %decls
ret i32 0, !dbg !2111
}
define dso_local void @runtime.__dynamic_map_rehash(%runtime.Map_Header* %0, i64 %1, %runtime.Source_Code_Location* %2, i8* noalias nocapture nonnull %__.context_ptr) !dbg !2112 {
decls:
%3 = alloca %runtime.Allocator, align 8
%4 = alloca %runtime.Allocator, align 8
%5 = alloca { { i8*, i64 }, i8 }, align 8, !dbg !2147
call void @llvm.dbg.declare(metadata %runtime.Context* %6, metadata !2116, metadata !DIExpression()), !dbg !2149
%6 = alloca %runtime.Context, align 8, !dbg !2149
%7 = alloca %runtime.Context, align 8, !dbg !2150
call void @llvm.dbg.declare(metadata %runtime.Raw_Map* %8, metadata !2122, metadata !DIExpression()), !dbg !2151
%8 = alloca %runtime.Raw_Map, align 8, !dbg !2151
call void @llvm.dbg.declare(metadata %runtime.Map_Header* %9, metadata !2124, metadata !DIExpression()), !dbg !2152
%9 = alloca %runtime.Map_Header, align 8, !dbg !2152
call void @llvm.dbg.declare(metadata %runtime.Map_Hash* %10, metadata !2135, metadata !DIExpression()), !dbg !2153
%10 = alloca %runtime.Map_Hash, align 8, !dbg !2153
%11 = alloca %runtime.Map_Hash, align 8, !dbg !2153
call void @llvm.dbg.declare(metadata %runtime.Map_Find_Result* %12, metadata !2136, metadata !DIExpression()), !dbg !2154
%12 = alloca %runtime.Map_Find_Result, align 8, !dbg !2154
%13 = alloca %runtime.Map_Find_Result, align 8, !dbg !2154
call void @llvm.dbg.value(metadata i64 %1, metadata !2114, metadata !DIExpression()), !dbg !2155
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !2115, metadata !DIExpression()), !dbg !2156
%14 = bitcast %runtime.Context* %6 to i8*, !dbg !2149
%15 = getelementptr i8, i8* %14, i64 112, !dbg !2149
call void @llvm.memset.p0i8.i64(i8* align 8 %15, i8 0, i64 0, i1 false), !dbg !2149
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %14, i8* align 8 %__.context_ptr, i64 112, i1 false), !dbg !2149
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %16, metadata !2118, metadata !DIExpression()), !dbg !2157
%16 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 0, !dbg !2158
%17 = load %runtime.Raw_Map*, %runtime.Raw_Map** %16, align 8, !dbg !2158
%18 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %17, i32 0, i32 1, !dbg !2158
%19 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %18, i32 0, i32 3, !dbg !2158
%20 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %19, i32 0, i32 0, !dbg !2158
%21 = load i8*, i8** %20, align 8, !dbg !2158
%22 = icmp ne i8* %21, null, !dbg !2158
br i1 %22, label %if.then, label %if.done, !dbg !2158
if.then: ; preds = %decls
%23 = getelementptr inbounds %runtime.Context, %runtime.Context* %6, i32 0, i32 0, !dbg !2159
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %16, metadata !2120, metadata !DIExpression()), !dbg !2160
%24 = bitcast %runtime.Allocator* %23 to i8*, !dbg !2159
%25 = bitcast %runtime.Allocator* %19 to i8*, !dbg !2159
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %24, i8* align 8 %25, i64 16, i1 false), !dbg !2159
br label %if.done, !dbg !2158
if.done: ; preds = %if.then, %decls
%26 = bitcast %runtime.Context* %7 to i8*, !dbg !2150
%27 = getelementptr i8, i8* %26, i64 112, !dbg !2150
call void @llvm.memset.p0i8.i64(i8* align 8 %27, i8 0, i64 0, i1 false), !dbg !2150
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %26, i8* align 8 %__.context_ptr, i64 112, i1 false), !dbg !2150
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %26, i8* align 8 %14, i64 112, i1 false), !dbg !2150
%28 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %8, i32 0, i32 1, !dbg !2161
%29 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %28, i32 0, i32 3, !dbg !2161
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %16, metadata !2123, metadata !DIExpression()), !dbg !2162
%30 = bitcast %runtime.Raw_Map* %8 to i8*, !dbg !2161
call void @llvm.memset.p0i8.i64(i8* align 8 %30, i8 0, i64 56, i1 false), !dbg !2151
%31 = load %runtime.Raw_Map*, %runtime.Raw_Map** %16, align 8, !dbg !2161
%32 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %31, i32 0, i32 1, !dbg !2161
%33 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %32, i32 0, i32 3, !dbg !2161
%34 = bitcast %runtime.Allocator* %29 to i8*, !dbg !2161
%35 = bitcast %runtime.Allocator* %33 to i8*, !dbg !2161
call void @llvm.memmove.p0i8.p0i8.i64(i8* align 8 %34, i8* align 8 %35, i64 16, i1 false), !dbg !2161
%36 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %8, i32 0, i32 0, !dbg !2163
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %16, metadata !2123, metadata !DIExpression()), !dbg !2162
%37 = load %runtime.Raw_Map*, %runtime.Raw_Map** %16, align 8, !dbg !2163
%38 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %37, i32 0, i32 0, !dbg !2163
%39 = bitcast { i64*, i64 }* %36 to i8*, !dbg !2163
%40 = bitcast { i64*, i64 }* %38 to i8*, !dbg !2163
call void @llvm.memmove.p0i8.p0i8.i64(i8* align 8 %39, i8* align 8 %40, i64 16, i1 false), !dbg !2163
%41 = bitcast %runtime.Map_Header* %9 to i8*, !dbg !2152
%42 = bitcast %runtime.Map_Header* %0 to i8*, !dbg !2152
%43 = getelementptr i8, i8* %41, i64 64, !dbg !2152
call void @llvm.memset.p0i8.i64(i8* align 8 %43, i8 0, i64 0, i1 false), !dbg !2152
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %41, i8* align 8 %42, i64 64, i1 false), !dbg !2152
%44 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %9, i32 0, i32 0, !dbg !2164
store %runtime.Raw_Map* %8, %runtime.Raw_Map** %44, align 8, !dbg !2164
call void @llvm.dbg.value(metadata i64 0, metadata !2125, metadata !DIExpression()), !dbg !2165
call void @llvm.dbg.value(metadata i64 %1, metadata !2125, metadata !DIExpression()), !dbg !2165
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %16, metadata !2123, metadata !DIExpression()), !dbg !2162
%45 = load %runtime.Raw_Map*, %runtime.Raw_Map** %16, align 8, !dbg !2166
%46 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %45, i32 0, i32 1, !dbg !2166
%47 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %46, i32 0, i32 1, !dbg !2166
%48 = load i64, i64* %47, align 8, !dbg !2166
%49 = mul i64 2, %48, !dbg !2166
%50 = icmp sgt i64 %1, %49, !dbg !2166
%51 = select i1 %50, i64 %1, i64 %49, !dbg !2166
call void @llvm.dbg.value(metadata i64 %51, metadata !2125, metadata !DIExpression()), !dbg !2165
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %16, metadata !2123, metadata !DIExpression()), !dbg !2162
%52 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %46, i32 0, i32 3, !dbg !2167
%53 = bitcast %runtime.Allocator* %52 to [2 x i64]*, !dbg !2167
%54 = load [2 x i64], [2 x i64]* %53, align 8, !dbg !2167
%55 = call i8 @runtime.__slice_resize-10430({ i64*, i64 }* %36, i64 %51, [2 x i64] %54, %runtime.Source_Code_Location* %2, i8* %26), !dbg !2167
call void @llvm.dbg.value(metadata i64 0, metadata !2126, metadata !DIExpression()), !dbg !2168
br label %for.interval.loop, !dbg !2169
for.interval.loop: ; preds = %for.interval.body, %if.done
%.011 = phi i64 [ 0, %if.done ], [ %61, %for.interval.body ], !dbg !2169
%.0 = phi i64 [ 0, %if.done ], [ %60, %for.interval.body ], !dbg !2169
%56 = icmp slt i64 %.0, %51, !dbg !2169
br i1 %56, label %for.interval.body, label %for.interval.done, !dbg !2169
for.interval.body: ; preds = %for.interval.loop
call void @llvm.dbg.value(metadata i64 %.0, metadata !2126, metadata !DIExpression()), !dbg !2168
%57 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %36, i32 0, i32 0, !dbg !2170
%58 = load i64*, i64** %57, align 8, !dbg !2170
%59 = getelementptr i64, i64* %58, i64 %.0, !dbg !2170
store i64 -1, i64* %59, align 8, !dbg !2170
%60 = add i64 %.0, 1, !dbg !2169
%61 = add i64 %.011, 1, !dbg !2169
br label %for.interval.loop, !dbg !2169
for.interval.done: ; preds = %for.interval.loop
call void @llvm.dbg.declare(metadata i64* %62, metadata !2128, metadata !DIExpression()), !dbg !2162
%62 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 2, !dbg !2172
%63 = load i64, i64* %62, align 8, !dbg !2172
call void @llvm.dbg.declare(metadata i64* %64, metadata !2129, metadata !DIExpression()), !dbg !2162
%64 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 3, !dbg !2172
%65 = load i64, i64* %64, align 8, !dbg !2172
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %16, metadata !2123, metadata !DIExpression()), !dbg !2162
%66 = load %runtime.Raw_Map*, %runtime.Raw_Map** %16, align 8, !dbg !2172
%67 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %66, i32 0, i32 1, !dbg !2172
%68 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %67, i32 0, i32 1, !dbg !2172
%69 = load i64, i64* %68, align 8, !dbg !2172
%70 = bitcast %runtime.Raw_Dynamic_Array* %28 to i8*, !dbg !2172
%71 = call i8 @runtime.__dynamic_array_reserve(i8* %70, i64 %63, i64 %65, i64 %69, %runtime.Source_Code_Location* %2, i8* %26), !dbg !2172
call void @llvm.dbg.value(metadata i64 0, metadata !2130, metadata !DIExpression()), !dbg !2173
br label %for.interval.loop1, !dbg !2174
for.interval.loop1: ; preds = %for.interval.post9, %for.interval.done
%.013 = phi i64 [ 0, %for.interval.done ], [ %119, %for.interval.post9 ], !dbg !2174
%.012 = phi i64 [ 0, %for.interval.done ], [ %120, %for.interval.post9 ], !dbg !2174
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %16, metadata !2132, metadata !DIExpression()), !dbg !2175
%72 = load %runtime.Raw_Map*, %runtime.Raw_Map** %16, align 8, !dbg !2174
%73 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %72, i32 0, i32 1, !dbg !2174
%74 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %73, i32 0, i32 1, !dbg !2174
%75 = load i64, i64* %74, align 8, !dbg !2174
%76 = icmp slt i64 %.013, %75, !dbg !2174
br i1 %76, label %for.interval.body2, label %for.interval.done10, !dbg !2174
for.interval.body2: ; preds = %for.interval.loop1
call void @llvm.dbg.value(metadata i64 %.013, metadata !2130, metadata !DIExpression()), !dbg !2173
%77 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %36, i32 0, i32 1, !dbg !2176
%78 = load i64, i64* %77, align 8, !dbg !2176
%79 = icmp eq i64 %78, 0, !dbg !2176
br i1 %79, label %if.then3, label %if.done4, !dbg !2176
if.then3: ; preds = %for.interval.body2
call void @runtime.__dynamic_map_grow(%runtime.Map_Header* %9, %runtime.Source_Code_Location* %2, i8* %26), !dbg !2177
br label %if.done4, !dbg !2176
if.done4: ; preds = %if.then3, %for.interval.body2
call void @llvm.dbg.value(metadata %runtime.Map_Entry_Header* null, metadata !2133, metadata !DIExpression()), !dbg !2180
%80 = call %runtime.Map_Entry_Header* @runtime.__dynamic_map_get_entry(%runtime.Map_Header* %0, i64 %.013, i8* %26), !dbg !2181
call void @llvm.dbg.value(metadata %runtime.Map_Entry_Header* %80, metadata !2133, metadata !DIExpression()), !dbg !2180
%81 = bitcast %runtime.Map_Hash* %10 to i8*, !dbg !2153
call void @llvm.memset.p0i8.i64(i8* %81, i8 0, i64 16, i1 false), !dbg !2153
%82 = call [2 x i64] @runtime.__get_map_hash_from_entry(%runtime.Map_Header* %0, %runtime.Map_Entry_Header* %80), !dbg !2153
%83 = bitcast %runtime.Map_Hash* %11 to [2 x i64]*, !dbg !2153
store [2 x i64] %82, [2 x i64]* %83, align 8, !dbg !2153
%84 = bitcast %runtime.Map_Hash* %11 to i8*, !dbg !2153
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %81, i8* align 8 %84, i64 16, i1 false), !dbg !2153
%85 = bitcast %runtime.Map_Find_Result* %12 to i8*, !dbg !2154
call void @llvm.memset.p0i8.i64(i8* %85, i8 0, i64 24, i1 false), !dbg !2154
%86 = bitcast %runtime.Map_Hash* %10 to [2 x i64]*, !dbg !2154
%87 = load [2 x i64], [2 x i64]* %86, align 8, !dbg !2154
%88 = bitcast %runtime.Map_Find_Result* %13 to i8*, !dbg !2154
call void @llvm.memset.p0i8.i64(i8* %88, i8 0, i64 24, i1 false), !dbg !2154
call void @runtime.__dynamic_map_find(%runtime.Map_Find_Result* %13, %runtime.Map_Header* %9, [2 x i64] %87, i8* %26), !dbg !2154
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %85, i8* align 8 %88, i64 24, i1 false), !dbg !2154
call void @llvm.dbg.value(metadata i64 0, metadata !2142, metadata !DIExpression()), !dbg !2180
%89 = load [2 x i64], [2 x i64]* %86, align 8, !dbg !2182
%90 = call i64 @runtime.__dynamic_map_add_entry(%runtime.Map_Header* %9, [2 x i64] %89, %runtime.Source_Code_Location* %2, i8* %26), !dbg !2182
call void @llvm.dbg.value(metadata i64 %90, metadata !2142, metadata !DIExpression()), !dbg !2180
%91 = getelementptr inbounds %runtime.Map_Find_Result, %runtime.Map_Find_Result* %12, i32 0, i32 1, !dbg !2183
%92 = load i64, i64* %91, align 8, !dbg !2183
%93 = icmp slt i64 %92, 0, !dbg !2183
br i1 %93, label %if.then5, label %if.else, !dbg !2183
if.then5: ; preds = %if.done4
%94 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %36, i32 0, i32 0, !dbg !2184
%95 = load i64*, i64** %94, align 8, !dbg !2184
%96 = getelementptr inbounds %runtime.Map_Find_Result, %runtime.Map_Find_Result* %12, i32 0, i32 0, !dbg !2184
%97 = load i64, i64* %96, align 8, !dbg !2184
%98 = getelementptr i64, i64* %95, i64 %97, !dbg !2184
store i64 %90, i64* %98, align 8, !dbg !2184
br label %if.done6, !dbg !2183
if.else: ; preds = %if.done4
call void @llvm.dbg.value(metadata %runtime.Map_Entry_Header* null, metadata !2143, metadata !DIExpression()), !dbg !2186
%99 = call %runtime.Map_Entry_Header* @runtime.__dynamic_map_get_entry(%runtime.Map_Header* %9, i64 %92, i8* %26), !dbg !2187
call void @llvm.dbg.value(metadata %runtime.Map_Entry_Header* %99, metadata !2143, metadata !DIExpression()), !dbg !2186
%100 = getelementptr inbounds %runtime.Map_Entry_Header, %runtime.Map_Entry_Header* %99, i32 0, i32 1, !dbg !2188
store i64 %90, i64* %100, align 8, !dbg !2188
br label %if.done6, !dbg !2183
if.done6: ; preds = %if.else, %if.then5
call void @llvm.dbg.value(metadata %runtime.Map_Entry_Header* null, metadata !2146, metadata !DIExpression()), !dbg !2180
%101 = call %runtime.Map_Entry_Header* @runtime.__dynamic_map_get_entry(%runtime.Map_Header* %9, i64 %90, i8* %26), !dbg !2189
call void @llvm.dbg.value(metadata %runtime.Map_Entry_Header* %101, metadata !2146, metadata !DIExpression()), !dbg !2180
call void @runtime.__dynamic_map_copy_entry(%runtime.Map_Header* %0, %runtime.Map_Entry_Header* %101, %runtime.Map_Entry_Header* %80), !dbg !2190
%102 = getelementptr inbounds %runtime.Map_Entry_Header, %runtime.Map_Entry_Header* %101, i32 0, i32 1, !dbg !2191
%103 = getelementptr inbounds %runtime.Map_Find_Result, %runtime.Map_Find_Result* %12, i32 0, i32 2, !dbg !2191
%104 = load i64, i64* %103, align 8, !dbg !2191
store i64 %104, i64* %102, align 8, !dbg !2191
call void @llvm.dbg.declare(metadata !112, metadata !2192, metadata !DIExpression()), !dbg !2198
%105 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %9, i32 0, i32 0, !dbg !2200
%106 = load %runtime.Raw_Map*, %runtime.Raw_Map** %105, align 8, !dbg !2200
%107 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %106, i32 0, i32 0, !dbg !2200
%108 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %107, i32 0, i32 1, !dbg !2200
%109 = load i64, i64* %108, align 8, !dbg !2200
%110 = sitofp i64 %109 to double, !dbg !2200
%111 = fmul double 7.500000e-01, %110, !dbg !2200
%112 = fptosi double %111 to i64, !dbg !2200
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %105, metadata !2192, metadata !DIExpression()), !dbg !2198
%113 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %106, i32 0, i32 1, !dbg !2200
%114 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %113, i32 0, i32 1, !dbg !2200
%115 = load i64, i64* %114, align 8, !dbg !2200
%116 = icmp sle i64 %112, %115, !dbg !2200
%117 = zext i1 %116 to i8, !dbg !2200
%118 = trunc i8 %117 to i1, !dbg !2201
br i1 %118, label %if.then7, label %for.interval.post9, !dbg !2201
if.then7: ; preds = %if.done6
call void @runtime.__dynamic_map_grow(%runtime.Map_Header* %9, %runtime.Source_Code_Location* %2, i8* %26), !dbg !2202
br label %for.interval.post9, !dbg !2201
for.interval.post9: ; preds = %if.done6, %if.then7
%119 = add i64 %.013, 1, !dbg !2174
%120 = add i64 %.012, 1, !dbg !2174
br label %for.interval.loop1, !dbg !2174
for.interval.done10: ; preds = %for.interval.loop1
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %16, metadata !2123, metadata !DIExpression()), !dbg !2162
%121 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %73, i32 0, i32 0, !dbg !2205
%122 = load i8*, i8** %121, align 8, !dbg !2205
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %16, metadata !2123, metadata !DIExpression()), !dbg !2162
%123 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %73, i32 0, i32 3, !dbg !2205
%124 = bitcast %runtime.Allocator* %123 to [2 x i64]*, !dbg !2205
%125 = load [2 x i64], [2 x i64]* %124, align 8, !dbg !2205
%126 = bitcast %runtime.Allocator* %3 to i8*, !dbg !2206
call void @llvm.lifetime.start.p0i8(i64 16, i8* %126), !dbg !2206
%127 = bitcast %runtime.Allocator* %4 to i8*, !dbg !2206
call void @llvm.lifetime.start.p0i8(i64 16, i8* %127), !dbg !2206
%128 = bitcast { { i8*, i64 }, i8 }* %5 to i8*, !dbg !2206
call void @llvm.lifetime.start.p0i8(i64 24, i8* %128), !dbg !2206
call void @llvm.dbg.declare(metadata !112, metadata !1424, metadata !DIExpression()), !dbg !2206
call void @llvm.dbg.value(metadata i8* %122, metadata !1423, metadata !DIExpression()), !dbg !2207
%129 = bitcast %runtime.Allocator* %3 to [2 x i64]*
store [2 x i64] %125, [2 x i64]* %129, align 8, !noalias !2208
%130 = bitcast %runtime.Allocator* %4 to i8*
%131 = bitcast %runtime.Allocator* %3 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %130, i8* align 8 %131, i64 16, i1 false), !noalias !2208
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1425, metadata !DIExpression()), !dbg !2211
%132 = icmp eq i8* %122, null, !dbg !2212
br i1 %132, label %if.then.i, label %if.done.i, !dbg !2212
if.then.i: ; preds = %if.done.i, %for.interval.done10
%133 = bitcast %runtime.Allocator* %3 to i8*, !dbg !2213
call void @llvm.lifetime.end.p0i8(i64 16, i8* %133), !dbg !2213
%134 = bitcast %runtime.Allocator* %4 to i8*, !dbg !2213
call void @llvm.lifetime.end.p0i8(i64 16, i8* %134), !dbg !2213
%135 = bitcast { { i8*, i64 }, i8 }* %5 to i8*, !dbg !2213
call void @llvm.lifetime.end.p0i8(i64 24, i8* %135), !dbg !2213
br label %runtime.mem_free.exit, !dbg !2213
if.done.i: ; preds = %for.interval.done10
%136 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %4, i32 0, i32 0, !dbg !2214
%137 = load i8*, i8** %136, align 8, !dbg !2214, !noalias !2208
%138 = icmp eq i8* %137, null, !dbg !2214
br i1 %138, label %if.then.i, label %if.done2.i, !dbg !2214
if.done2.i: ; preds = %if.done.i
call void @llvm.dbg.value(metadata i8 0, metadata !1426, metadata !DIExpression()), !dbg !2215
%139 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %4, i32 0, i32 1, !dbg !2147
%140 = load i8*, i8** %139, align 8, !dbg !2147, !noalias !2208
%141 = bitcast { { i8*, i64 }, i8 }* %5 to i8*, !dbg !2147
call void @llvm.memset.p0i8.i64(i8* %141, i8 0, i64 24, i1 false), !dbg !2147, !noalias !2208
%142 = bitcast i8* %137 to void ({ { i8*, i64 }, i8 }*, i8*, i8, i64, i64, i8*, i64, %runtime.Source_Code_Location*, i8*)*, !dbg !2147
call void %142({ { i8*, i64 }, i8 }* %5, i8* %140, i8 1, i64 0, i64 0, i8* %122, i64 0, %runtime.Source_Code_Location* %2, i8* %26) #4, !dbg !2147
%143 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %5, i32 0, i32 1, !dbg !2147
%144 = load i8, i8* %143, align 1, !dbg !2147, !noalias !2208
call void @llvm.dbg.value(metadata i8 %144, metadata !1426, metadata !DIExpression()), !dbg !2215
%145 = bitcast %runtime.Allocator* %3 to i8*, !dbg !2216
call void @llvm.lifetime.end.p0i8(i64 16, i8* %145), !dbg !2216
%146 = bitcast %runtime.Allocator* %4 to i8*, !dbg !2216
call void @llvm.lifetime.end.p0i8(i64 16, i8* %146), !dbg !2216
%147 = bitcast { { i8*, i64 }, i8 }* %5 to i8*, !dbg !2216
call void @llvm.lifetime.end.p0i8(i64 24, i8* %147), !dbg !2216
br label %runtime.mem_free.exit, !dbg !2216
runtime.mem_free.exit: ; preds = %if.done2.i, %if.then.i
%148 = load %runtime.Raw_Map*, %runtime.Raw_Map** %16, align 8, !dbg !2217
%149 = bitcast %runtime.Raw_Map* %148 to i8*, !dbg !2217
call void @llvm.memmove.p0i8.p0i8.i64(i8* align 8 %149, i8* align 8 %30, i64 56, i1 false), !dbg !2217
ret void, !dbg !2156
}
define dso_local i8* @runtime.__dynamic_map_get(%runtime.Map_Header* %0, [2 x i64] %1, i8* noalias nocapture nonnull %__.context_ptr) !dbg !2218 {
decls:
%2 = alloca %runtime.Map_Hash, align 8
call void @llvm.dbg.declare(metadata %runtime.Map_Hash* %3, metadata !2222, metadata !DIExpression()), !dbg !2229
%3 = alloca %runtime.Map_Hash, align 8
%4 = alloca %runtime.Map_Find_Result, align 8, !dbg !2230
%5 = bitcast %runtime.Map_Hash* %2 to [2 x i64]*
store [2 x i64] %1, [2 x i64]* %5, align 8
%6 = bitcast %runtime.Map_Hash* %3 to i8*
%7 = bitcast %runtime.Map_Hash* %2 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %6, i8* align 8 %7, i64 16, i1 false)
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !2223, metadata !DIExpression()), !dbg !2231
call void @llvm.dbg.value(metadata i64 0, metadata !2224, metadata !DIExpression()), !dbg !2232
%8 = bitcast %runtime.Map_Hash* %3 to [2 x i64]*, !dbg !2230
%9 = load [2 x i64], [2 x i64]* %8, align 8, !dbg !2230
%10 = bitcast %runtime.Map_Find_Result* %4 to i8*, !dbg !2230
call void @llvm.memset.p0i8.i64(i8* %10, i8 0, i64 24, i1 false), !dbg !2230
call void @runtime.__dynamic_map_find(%runtime.Map_Find_Result* %4, %runtime.Map_Header* %0, [2 x i64] %9, i8* %__.context_ptr), !dbg !2230
%11 = getelementptr inbounds %runtime.Map_Find_Result, %runtime.Map_Find_Result* %4, i32 0, i32 2, !dbg !2230
%12 = load i64, i64* %11, align 8, !dbg !2230
call void @llvm.dbg.value(metadata i64 %12, metadata !2224, metadata !DIExpression()), !dbg !2232
%13 = icmp sge i64 %12, 0, !dbg !2233
br i1 %13, label %if.then, label %if.done, !dbg !2233
if.then: ; preds = %decls
call void @llvm.dbg.value(metadata i64 0, metadata !2226, metadata !DIExpression()), !dbg !2234
%14 = call %runtime.Map_Entry_Header* @runtime.__dynamic_map_get_entry(%runtime.Map_Header* %0, i64 %12, i8* %__.context_ptr), !dbg !2235
%15 = ptrtoint %runtime.Map_Entry_Header* %14 to i64, !dbg !2235
call void @llvm.dbg.value(metadata i64 %15, metadata !2226, metadata !DIExpression()), !dbg !2234
%16 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 6, !dbg !2236
%17 = load i64, i64* %16, align 8, !dbg !2236
%18 = add i64 %15, %17, !dbg !2236
%19 = inttoptr i64 %18 to i8*, !dbg !2236
ret i8* %19, !dbg !2236
if.done: ; preds = %decls
ret i8* null, !dbg !2237
}
define internal [2 x i64] @os.read(i32 %0, [2 x i64] %1, i8* noalias nocapture nonnull %__.context_ptr) !dbg !2238 {
decls:
%2 = alloca { i8*, i64 }, align 8
call void @llvm.dbg.declare(metadata { i8*, i64 }* %3, metadata !2247, metadata !DIExpression()), !dbg !2251
%3 = alloca { i8*, i64 }, align 8
%4 = alloca [2 x i64], align 8, !dbg !2252
%5 = alloca { i64, i32 }, align 8, !dbg !2253
%6 = alloca { i64, i32 }, align 8, !dbg !2256
call void @llvm.dbg.value(metadata i32 %0, metadata !2246, metadata !DIExpression()), !dbg !2257
%7 = bitcast { i8*, i64 }* %2 to [2 x i64]*
store [2 x i64] %1, [2 x i64]* %7, align 8
%8 = bitcast { i8*, i64 }* %3 to i8*
%9 = bitcast { i8*, i64 }* %2 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %8, i8* align 8 %9, i64 16, i1 false)
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !2248, metadata !DIExpression()), !dbg !2258
call void @llvm.dbg.value(metadata i64 0, metadata !2249, metadata !DIExpression()), !dbg !2259
%10 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %3, i32 0, i32 0, !dbg !2252
%11 = load i8*, i8** %10, align 8, !dbg !2252
%12 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %3, i32 0, i32 1, !dbg !2252
%13 = load i64, i64* %12, align 8, !dbg !2252
%14 = bitcast [2 x i64]* %4 to %..string*, !dbg !2252
store %..string { i8* getelementptr inbounds ([50 x i8], [50 x i8]* @"csbs$91", i64 0, i64 0), i64 49 }, %..string* %14, align 8, !dbg !2252
%15 = load [2 x i64], [2 x i64]* %4, align 8, !dbg !2252
call void @runtime.bounds_check_error([2 x i64] %15, i32 335, i32 37, i64 0, i64 %13), !dbg !2252
%16 = load i64, i64* %12, align 8, !dbg !2252
%17 = call i64 @read(i32 %0, i8* %11, i64 %16), !dbg !2252
call void @llvm.dbg.value(metadata i64 %17, metadata !2249, metadata !DIExpression()), !dbg !2259
%18 = icmp eq i64 %17, -1, !dbg !2260
br i1 %18, label %if.then, label %if.done, !dbg !2260
if.then: ; preds = %decls
%19 = call i64 @os.get_last_error(i8* %__.context_ptr), !dbg !2253
%20 = trunc i64 %19 to i32, !dbg !2253
%21 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %5, i32 0, i32 0, !dbg !2253
%22 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %5, i32 0, i32 1, !dbg !2253
store i64 -1, i64* %21, align 8, !dbg !2253
store i32 %20, i32* %22, align 4, !dbg !2253
%23 = bitcast { i64, i32 }* %5 to [2 x i64]*, !dbg !2253
%24 = load [2 x i64], [2 x i64]* %23, align 8, !dbg !2253
ret [2 x i64] %24, !dbg !2253
if.done: ; preds = %decls
%25 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %6, i32 0, i32 0, !dbg !2256
%26 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %6, i32 0, i32 1, !dbg !2256
store i64 %17, i64* %25, align 8, !dbg !2256
store i32 0, i32* %26, align 4, !dbg !2256
%27 = bitcast { i64, i32 }* %6 to [2 x i64]*, !dbg !2256
%28 = load [2 x i64], [2 x i64]* %27, align 8, !dbg !2256
ret [2 x i64] %28, !dbg !2256
}
define dso_local %runtime.Map_Entry_Header* @runtime.__dynamic_map_set(%runtime.Map_Header* %0, [2 x i64] %1, i8* %2, %runtime.Source_Code_Location* %3, i8* noalias nocapture nonnull %__.context_ptr) !dbg !2261 {
decls:
%4 = alloca %runtime.Map_Hash, align 8
call void @llvm.dbg.declare(metadata %runtime.Map_Hash* %5, metadata !2265, metadata !DIExpression()), !dbg !2279
%5 = alloca %runtime.Map_Hash, align 8
%6 = alloca [2 x i64], align 8, !dbg !2280
%7 = alloca %runtime.Source_Code_Location, align 8, !dbg !2280
call void @llvm.dbg.declare(metadata %runtime.Map_Find_Result* %8, metadata !2270, metadata !DIExpression()), !dbg !2281
%8 = alloca %runtime.Map_Find_Result, align 8, !dbg !2281
%9 = alloca %runtime.Map_Find_Result, align 8, !dbg !2281
%10 = alloca %runtime.Map_Find_Result, align 8, !dbg !2282
%11 = alloca [2 x i64], align 8, !dbg !2285
%12 = alloca %runtime.Source_Code_Location, align 8, !dbg !2285
%13 = bitcast %runtime.Map_Hash* %4 to [2 x i64]*
store [2 x i64] %1, [2 x i64]* %13, align 8
%14 = bitcast %runtime.Map_Hash* %5 to i8*
%15 = bitcast %runtime.Map_Hash* %4 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %14, i8* align 8 %15, i64 16, i1 false)
call void @llvm.dbg.value(metadata i8* %2, metadata !2266, metadata !DIExpression()), !dbg !2286
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !2267, metadata !DIExpression()), !dbg !2287
call void @llvm.dbg.value(metadata i64 0, metadata !2268, metadata !DIExpression()), !dbg !2288
%16 = icmp ne i8* %2, null, !dbg !2280
%17 = bitcast [2 x i64]* %6 to %..string*, !dbg !2280
%18 = bitcast %..string* %17 to i8*, !dbg !2280
call void @llvm.memset.p0i8.i64(i8* align 8 %18, i8 0, i64 16, i1 false), !dbg !2280
%19 = load [2 x i64], [2 x i64]* %6, align 8, !dbg !2280
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([67 x i8], [67 x i8]* @"csbs$90", i64 0, i64 0), i64 66 }, i32 259, i32 2, %..string { i8* getelementptr inbounds ([18 x i8], [18 x i8]* @"csbs$92", i64 0, i64 0), i64 17 } }, %runtime.Source_Code_Location* %7, align 8, !dbg !2280
call void @runtime.assert(i1 %16, [2 x i64] %19, %runtime.Source_Code_Location* %7, i8* %__.context_ptr), !dbg !2280
%20 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 0, !dbg !2289
%21 = load %runtime.Raw_Map*, %runtime.Raw_Map** %20, align 8, !dbg !2289
%22 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %21, i32 0, i32 0, !dbg !2289
%23 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %22, i32 0, i32 1, !dbg !2289
%24 = load i64, i64* %23, align 8, !dbg !2289
%25 = icmp eq i64 %24, 0, !dbg !2289
br i1 %25, label %if.then, label %if.done, !dbg !2289
if.then: ; preds = %decls
call void @runtime.__dynamic_map_reserve(%runtime.Map_Header* %0, i64 16, %runtime.Source_Code_Location* %3, i8* %__.context_ptr), !dbg !2290
call void @runtime.__dynamic_map_grow(%runtime.Map_Header* %0, %runtime.Source_Code_Location* %3, i8* %__.context_ptr), !dbg !2293
br label %if.done, !dbg !2289
if.done: ; preds = %if.then, %decls
%26 = bitcast %runtime.Map_Find_Result* %8 to i8*, !dbg !2281
call void @llvm.memset.p0i8.i64(i8* %26, i8 0, i64 24, i1 false), !dbg !2281
%27 = bitcast %runtime.Map_Hash* %5 to [2 x i64]*, !dbg !2281
%28 = load [2 x i64], [2 x i64]* %27, align 8, !dbg !2281
%29 = bitcast %runtime.Map_Find_Result* %9 to i8*, !dbg !2281
call void @llvm.memset.p0i8.i64(i8* %29, i8 0, i64 24, i1 false), !dbg !2281
call void @runtime.__dynamic_map_find(%runtime.Map_Find_Result* %9, %runtime.Map_Header* %0, [2 x i64] %28, i8* %__.context_ptr), !dbg !2281
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %26, i8* align 8 %29, i64 24, i1 false), !dbg !2281
%30 = getelementptr inbounds %runtime.Map_Find_Result, %runtime.Map_Find_Result* %8, i32 0, i32 2, !dbg !2294
%31 = load i64, i64* %30, align 8, !dbg !2294
%32 = icmp sge i64 %31, 0, !dbg !2294
br i1 %32, label %if.done5, label %if.else, !dbg !2294
if.else: ; preds = %if.done
%33 = load [2 x i64], [2 x i64]* %27, align 8, !dbg !2295
%34 = call i64 @runtime.__dynamic_map_add_entry(%runtime.Map_Header* %0, [2 x i64] %33, %runtime.Source_Code_Location* %3, i8* %__.context_ptr), !dbg !2295
call void @llvm.dbg.value(metadata i64 %34, metadata !2268, metadata !DIExpression()), !dbg !2288
%35 = getelementptr inbounds %runtime.Map_Find_Result, %runtime.Map_Find_Result* %8, i32 0, i32 1, !dbg !2296
%36 = load i64, i64* %35, align 8, !dbg !2296
%37 = icmp sge i64 %36, 0, !dbg !2296
br i1 %37, label %if.then2, label %if.else3, !dbg !2296
if.then2: ; preds = %if.else
call void @llvm.dbg.value(metadata %runtime.Map_Entry_Header* null, metadata !2271, metadata !DIExpression()), !dbg !2297
%38 = call %runtime.Map_Entry_Header* @runtime.__dynamic_map_get_entry(%runtime.Map_Header* %0, i64 %36, i8* %__.context_ptr), !dbg !2298
call void @llvm.dbg.value(metadata %runtime.Map_Entry_Header* %38, metadata !2271, metadata !DIExpression()), !dbg !2297
%39 = getelementptr inbounds %runtime.Map_Entry_Header, %runtime.Map_Entry_Header* %38, i32 0, i32 1, !dbg !2299
store i64 %34, i64* %39, align 8, !dbg !2299
br label %if.done5, !dbg !2296
if.else3: ; preds = %if.else
%40 = load %runtime.Raw_Map*, %runtime.Raw_Map** %20, align 8, !dbg !2300
%41 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %40, i32 0, i32 0, !dbg !2300
%42 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %41, i32 0, i32 0, !dbg !2300
%43 = load i64*, i64** %42, align 8, !dbg !2300
%44 = getelementptr inbounds %runtime.Map_Find_Result, %runtime.Map_Find_Result* %8, i32 0, i32 0, !dbg !2300
%45 = load i64, i64* %44, align 8, !dbg !2300
%46 = getelementptr i64, i64* %43, i64 %45, !dbg !2300
store i64 %34, i64* %46, align 8, !dbg !2300
br label %if.done5, !dbg !2296
if.done5: ; preds = %if.then2, %if.else3, %if.done
%.0 = phi i64 [ %31, %if.done ], [ %34, %if.else3 ], [ %34, %if.then2 ], !dbg !2302
call void @llvm.dbg.value(metadata i64 %.0, metadata !2268, metadata !DIExpression()), !dbg !2288
call void @llvm.dbg.value(metadata %runtime.Map_Entry_Header* null, metadata !2276, metadata !DIExpression()), !dbg !2288
%47 = call %runtime.Map_Entry_Header* @runtime.__dynamic_map_get_entry(%runtime.Map_Header* %0, i64 %.0, i8* %__.context_ptr), !dbg !2303
call void @llvm.dbg.value(metadata %runtime.Map_Entry_Header* %47, metadata !2276, metadata !DIExpression()), !dbg !2288
%48 = getelementptr inbounds %runtime.Map_Entry_Header, %runtime.Map_Entry_Header* %47, i32 0, i32 0, !dbg !2304
%49 = getelementptr inbounds %runtime.Map_Hash, %runtime.Map_Hash* %5, i32 0, i32 0, !dbg !2304
%50 = load i64, i64* %49, align 8, !dbg !2304
store i64 %50, i64* %48, align 8, !dbg !2304
call void @llvm.dbg.value(metadata i8* null, metadata !2277, metadata !DIExpression()), !dbg !2288
%51 = ptrtoint %runtime.Map_Entry_Header* %47 to i64, !dbg !2305
%52 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 4, !dbg !2305
%53 = load i64, i64* %52, align 8, !dbg !2305
%54 = add i64 %51, %53, !dbg !2305
%55 = inttoptr i64 %54 to i8*, !dbg !2305
call void @llvm.dbg.value(metadata i8* %55, metadata !2277, metadata !DIExpression()), !dbg !2288
%56 = getelementptr inbounds %runtime.Map_Hash, %runtime.Map_Hash* %5, i32 0, i32 1, !dbg !2306
%57 = load i8*, i8** %56, align 8, !dbg !2306
%58 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 5, !dbg !2306
%59 = load i64, i64* %58, align 8, !dbg !2306
%60 = call i8* @runtime.mem_copy(i8* %55, i8* %57, i64 %59), !dbg !2306
call void @llvm.dbg.value(metadata i8* null, metadata !2278, metadata !DIExpression()), !dbg !2288
%61 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 6, !dbg !2307
%62 = load i64, i64* %61, align 8, !dbg !2307
%63 = add i64 %51, %62, !dbg !2307
%64 = inttoptr i64 %63 to i8*, !dbg !2307
call void @llvm.dbg.value(metadata i8* %64, metadata !2278, metadata !DIExpression()), !dbg !2288
%65 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 7, !dbg !2308
%66 = load i64, i64* %65, align 8, !dbg !2308
%67 = call i8* @runtime.mem_copy(i8* %64, i8* %2, i64 %66), !dbg !2308
call void @llvm.dbg.declare(metadata !112, metadata !2192, metadata !DIExpression()), !dbg !2309
%68 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 0, !dbg !2311
%69 = load %runtime.Raw_Map*, %runtime.Raw_Map** %68, align 8, !dbg !2311
%70 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %69, i32 0, i32 0, !dbg !2311
%71 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %70, i32 0, i32 1, !dbg !2311
%72 = load i64, i64* %71, align 8, !dbg !2311
%73 = sitofp i64 %72 to double, !dbg !2311
%74 = fmul double 7.500000e-01, %73, !dbg !2311
%75 = fptosi double %74 to i64, !dbg !2311
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %68, metadata !2192, metadata !DIExpression()), !dbg !2309
%76 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %69, i32 0, i32 1, !dbg !2311
%77 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %76, i32 0, i32 1, !dbg !2311
%78 = load i64, i64* %77, align 8, !dbg !2311
%79 = icmp sle i64 %75, %78, !dbg !2311
%80 = zext i1 %79 to i8, !dbg !2311
%81 = trunc i8 %80 to i1, !dbg !2312
br i1 %81, label %if.then6, label %if.done7, !dbg !2312
if.then6: ; preds = %if.done5
call void @runtime.__dynamic_map_grow(%runtime.Map_Header* %0, %runtime.Source_Code_Location* %3, i8* %__.context_ptr), !dbg !2313
%82 = load [2 x i64], [2 x i64]* %27, align 8, !dbg !2282
%83 = bitcast %runtime.Map_Find_Result* %10 to i8*, !dbg !2282
call void @llvm.memset.p0i8.i64(i8* %83, i8 0, i64 24, i1 false), !dbg !2282
call void @runtime.__dynamic_map_find(%runtime.Map_Find_Result* %10, %runtime.Map_Header* %0, [2 x i64] %82, i8* %__.context_ptr), !dbg !2282
%84 = getelementptr inbounds %runtime.Map_Find_Result, %runtime.Map_Find_Result* %10, i32 0, i32 2, !dbg !2282
%85 = load i64, i64* %84, align 8, !dbg !2282
call void @llvm.dbg.value(metadata i64 %85, metadata !2268, metadata !DIExpression()), !dbg !2288
%86 = icmp sge i64 %85, 0, !dbg !2285
%87 = bitcast [2 x i64]* %11 to %..string*, !dbg !2285
%88 = bitcast %..string* %87 to i8*, !dbg !2285
call void @llvm.memset.p0i8.i64(i8* align 8 %88, i8 0, i64 16, i1 false), !dbg !2285
%89 = load [2 x i64], [2 x i64]* %11, align 8, !dbg !2285
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([67 x i8], [67 x i8]* @"csbs$90", i64 0, i64 0), i64 66 }, i32 291, i32 3, %..string { i8* getelementptr inbounds ([18 x i8], [18 x i8]* @"csbs$92", i64 0, i64 0), i64 17 } }, %runtime.Source_Code_Location* %12, align 8, !dbg !2285
call void @runtime.assert(i1 %86, [2 x i64] %89, %runtime.Source_Code_Location* %12, i8* %__.context_ptr), !dbg !2285
br label %if.done7, !dbg !2312
if.done7: ; preds = %if.then6, %if.done5
%.1 = phi i64 [ %85, %if.then6 ], [ %.0, %if.done5 ], !dbg !2288
call void @llvm.dbg.value(metadata i64 %.1, metadata !2268, metadata !DIExpression()), !dbg !2288
%90 = call %runtime.Map_Entry_Header* @runtime.__dynamic_map_get_entry(%runtime.Map_Header* %0, i64 %.1, i8* %__.context_ptr), !dbg !2314
ret %runtime.Map_Entry_Header* %90, !dbg !2314
}
define internal [2 x i64] @os.write(i32 %0, [2 x i64] %1, i8* noalias nocapture nonnull %__.context_ptr) !dbg !2315 {
decls:
%2 = alloca { i8*, i64 }, align 8
call void @llvm.dbg.declare(metadata { i8*, i64 }* %3, metadata !2318, metadata !DIExpression()), !dbg !2322
%3 = alloca { i8*, i64 }, align 8
%4 = alloca { i64, i32 }, align 8, !dbg !2323
%5 = alloca [2 x i64], align 8, !dbg !2326
%6 = alloca { i64, i32 }, align 8, !dbg !2327
%7 = alloca { i64, i32 }, align 8, !dbg !2330
call void @llvm.dbg.value(metadata i32 %0, metadata !2317, metadata !DIExpression()), !dbg !2331
%8 = bitcast { i8*, i64 }* %2 to [2 x i64]*
store [2 x i64] %1, [2 x i64]* %8, align 8
%9 = bitcast { i8*, i64 }* %3 to i8*
%10 = bitcast { i8*, i64 }* %2 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %9, i8* align 8 %10, i64 16, i1 false)
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !2319, metadata !DIExpression()), !dbg !2332
%11 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %3, i32 0, i32 1, !dbg !2333
%12 = load i64, i64* %11, align 8, !dbg !2333
%13 = icmp eq i64 %12, 0, !dbg !2333
br i1 %13, label %if.then, label %if.done, !dbg !2333
if.then: ; preds = %decls
%14 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %4, i32 0, i32 0, !dbg !2323
%15 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %4, i32 0, i32 1, !dbg !2323
store i64 0, i64* %14, align 8, !dbg !2323
store i32 0, i32* %15, align 4, !dbg !2323
%16 = bitcast { i64, i32 }* %4 to [2 x i64]*, !dbg !2323
%17 = load [2 x i64], [2 x i64]* %16, align 8, !dbg !2323
ret [2 x i64] %17, !dbg !2323
if.done: ; preds = %decls
call void @llvm.dbg.value(metadata i64 0, metadata !2320, metadata !DIExpression()), !dbg !2334
%18 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %3, i32 0, i32 0, !dbg !2326
%19 = load i8*, i8** %18, align 8, !dbg !2326
%20 = bitcast [2 x i64]* %5 to %..string*, !dbg !2326
store %..string { i8* getelementptr inbounds ([50 x i8], [50 x i8]* @"csbs$91", i64 0, i64 0), i64 49 }, %..string* %20, align 8, !dbg !2326
%21 = load [2 x i64], [2 x i64]* %5, align 8, !dbg !2326
call void @runtime.bounds_check_error([2 x i64] %21, i32 346, i32 41, i64 0, i64 %12), !dbg !2326
%22 = load i64, i64* %11, align 8, !dbg !2326
%23 = call i64 @write(i32 %0, i8* %19, i64 %22), !dbg !2326
call void @llvm.dbg.value(metadata i64 %23, metadata !2320, metadata !DIExpression()), !dbg !2334
%24 = icmp eq i64 %23, -1, !dbg !2335
br i1 %24, label %if.then1, label %if.done2, !dbg !2335
if.then1: ; preds = %if.done
%25 = call i64 @os.get_last_error(i8* %__.context_ptr), !dbg !2327
%26 = trunc i64 %25 to i32, !dbg !2327
%27 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %6, i32 0, i32 0, !dbg !2327
%28 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %6, i32 0, i32 1, !dbg !2327
store i64 -1, i64* %27, align 8, !dbg !2327
store i32 %26, i32* %28, align 4, !dbg !2327
%29 = bitcast { i64, i32 }* %6 to [2 x i64]*, !dbg !2327
%30 = load [2 x i64], [2 x i64]* %29, align 8, !dbg !2327
ret [2 x i64] %30, !dbg !2327
if.done2: ; preds = %if.done
%31 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %7, i32 0, i32 0, !dbg !2330
%32 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %7, i32 0, i32 1, !dbg !2330
store i64 %23, i64* %31, align 8, !dbg !2330
store i32 0, i32* %32, align 4, !dbg !2330
%33 = bitcast { i64, i32 }* %7 to [2 x i64]*, !dbg !2330
%34 = load [2 x i64], [2 x i64]* %33, align 8, !dbg !2330
ret [2 x i64] %34, !dbg !2330
}
define internal [2 x i64] @os.seek(i32 %0, i64 %1, i64 %2, i8* noalias nocapture nonnull %__.context_ptr) !dbg !2336 {
decls:
%3 = alloca { i64, i32 }, align 8, !dbg !2349
%4 = alloca { i64, i32 }, align 8, !dbg !2352
call void @llvm.dbg.value(metadata i32 %0, metadata !2343, metadata !DIExpression()), !dbg !2353
call void @llvm.dbg.value(metadata i64 %1, metadata !2344, metadata !DIExpression()), !dbg !2353
call void @llvm.dbg.value(metadata i64 %2, metadata !2345, metadata !DIExpression()), !dbg !2353
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !2346, metadata !DIExpression()), !dbg !2354
call void @llvm.dbg.value(metadata i64 0, metadata !2347, metadata !DIExpression()), !dbg !2355
%5 = trunc i64 %2 to i32, !dbg !2356
%6 = call i64 @lseek64(i32 %0, i64 %1, i32 %5), !dbg !2356
call void @llvm.dbg.value(metadata i64 %6, metadata !2347, metadata !DIExpression()), !dbg !2355
%7 = icmp eq i64 %6, -1, !dbg !2357
br i1 %7, label %if.then, label %if.done, !dbg !2357
if.then: ; preds = %decls
%8 = call i64 @os.get_last_error(i8* %__.context_ptr), !dbg !2349
%9 = trunc i64 %8 to i32, !dbg !2349
%10 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %3, i32 0, i32 0, !dbg !2349
%11 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %3, i32 0, i32 1, !dbg !2349
store i64 -1, i64* %10, align 8, !dbg !2349
store i32 %9, i32* %11, align 4, !dbg !2349
%12 = bitcast { i64, i32 }* %3 to [2 x i64]*, !dbg !2349
%13 = load [2 x i64], [2 x i64]* %12, align 8, !dbg !2349
ret [2 x i64] %13, !dbg !2349
if.done: ; preds = %decls
%14 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %4, i32 0, i32 0, !dbg !2352
%15 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %4, i32 0, i32 1, !dbg !2352
store i64 %6, i64* %14, align 8, !dbg !2352
store i32 0, i32* %15, align 4, !dbg !2352
%16 = bitcast { i64, i32 }* %4 to [2 x i64]*, !dbg !2352
%17 = load [2 x i64], [2 x i64]* %16, align 8, !dbg !2352
ret [2 x i64] %17, !dbg !2352
}
define dso_local void @runtime.__dynamic_map_grow(%runtime.Map_Header* %0, %runtime.Source_Code_Location* %1, i8* noalias nocapture nonnull %__.context_ptr) !dbg !2358 {
decls:
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !2362, metadata !DIExpression()), !dbg !2366
call void @llvm.dbg.value(metadata i64 0, metadata !2363, metadata !DIExpression()), !dbg !2367
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %2, metadata !2365, metadata !DIExpression()), !dbg !2368
%2 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 0, !dbg !2369
%3 = load %runtime.Raw_Map*, %runtime.Raw_Map** %2, align 8, !dbg !2369
%4 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %3, i32 0, i32 1, !dbg !2369
%5 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %4, i32 0, i32 2, !dbg !2369
%6 = load i64, i64* %5, align 8, !dbg !2369
%7 = mul i64 4, %6, !dbg !2369
%8 = add i64 %7, 7, !dbg !2369
%9 = icmp sgt i64 %8, 16, !dbg !2369
%10 = select i1 %9, i64 %8, i64 16, !dbg !2369
call void @llvm.dbg.value(metadata i64 %10, metadata !2363, metadata !DIExpression()), !dbg !2367
call void @runtime.__dynamic_map_rehash(%runtime.Map_Header* %0, i64 %10, %runtime.Source_Code_Location* %1, i8* %__.context_ptr), !dbg !2370
ret void, !dbg !2366
}
define internal [2 x i64] @strconv.is_integer_negative(i64 %0, i1 zeroext %1, i64 %2, i8* noalias nocapture nonnull %__.context_ptr) !dbg !2371 {
decls:
%3 = alloca [2 x i64], align 8, !dbg !2397
%4 = alloca %runtime.Source_Code_Location, align 8, !dbg !2397
%5 = alloca { i64, i8 }, align 8, !dbg !2398
call void @llvm.dbg.value(metadata i64 %0, metadata !2379, metadata !DIExpression()), !dbg !2399
call void @llvm.dbg.value(metadata i8 undef, metadata !2380, metadata !DIExpression()), !dbg !2399
call void @llvm.dbg.value(metadata i64 %2, metadata !2381, metadata !DIExpression()), !dbg !2399
call void @llvm.dbg.value(metadata i64 0, metadata !2382, metadata !DIExpression()), !dbg !2399
call void @llvm.dbg.value(metadata i8 0, metadata !2383, metadata !DIExpression()), !dbg !2399
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !2384, metadata !DIExpression()), !dbg !2400
call void @llvm.dbg.value(metadata i64 %0, metadata !2382, metadata !DIExpression()), !dbg !2399
br i1 %1, label %if.then, label %if.done, !dbg !2401
if.then: ; preds = %decls
%6 = sub i64 %2, 8, !dbg !2402
%7 = lshr i64 %6, 3, !dbg !2402
%8 = shl i64 %6, 61, !dbg !2402
%9 = or i64 %7, %8, !dbg !2402
switch i64 %9, label %switch.default.body [
i64 0, label %switch.case.body
i64 1, label %switch.case.body1
i64 3, label %switch.case.body2
i64 7, label %switch.case.body3
], !dbg !2402
switch.case.body: ; preds = %if.then
call void @llvm.dbg.value(metadata i8 0, metadata !2385, metadata !DIExpression()), !dbg !2403
%10 = trunc i64 %0 to i8, !dbg !2404
call void @llvm.dbg.value(metadata i8 %10, metadata !2385, metadata !DIExpression()), !dbg !2403
%11 = icmp slt i8 %10, 0, !dbg !2405
%12 = zext i1 %11 to i8, !dbg !2405
call void @llvm.dbg.value(metadata i8 %12, metadata !2383, metadata !DIExpression()), !dbg !2399
%13 = sext i8 %10 to i64, !dbg !2406
%14 = icmp slt i64 %13, 0, !dbg !2406
%15 = sub i64 0, %13, !dbg !2406
%16 = select i1 %14, i64 %15, i64 %13, !dbg !2406
call void @llvm.dbg.value(metadata i64 %16, metadata !2382, metadata !DIExpression()), !dbg !2399
br label %if.done, !dbg !2402
switch.case.body1: ; preds = %if.then
call void @llvm.dbg.value(metadata i16 0, metadata !2392, metadata !DIExpression()), !dbg !2403
%17 = trunc i64 %0 to i16, !dbg !2407
call void @llvm.dbg.value(metadata i16 %17, metadata !2392, metadata !DIExpression()), !dbg !2403
%18 = icmp slt i16 %17, 0, !dbg !2408
%19 = zext i1 %18 to i8, !dbg !2408
call void @llvm.dbg.value(metadata i8 %19, metadata !2383, metadata !DIExpression()), !dbg !2399
%20 = sext i16 %17 to i64, !dbg !2409
%21 = icmp slt i64 %20, 0, !dbg !2409
%22 = sub i64 0, %20, !dbg !2409
%23 = select i1 %21, i64 %22, i64 %20, !dbg !2409
call void @llvm.dbg.value(metadata i64 %23, metadata !2382, metadata !DIExpression()), !dbg !2399
br label %if.done, !dbg !2402
switch.case.body2: ; preds = %if.then
call void @llvm.dbg.value(metadata i32 0, metadata !2395, metadata !DIExpression()), !dbg !2403
%24 = trunc i64 %0 to i32, !dbg !2410
call void @llvm.dbg.value(metadata i32 %24, metadata !2395, metadata !DIExpression()), !dbg !2403
%25 = icmp slt i32 %24, 0, !dbg !2411
%26 = zext i1 %25 to i8, !dbg !2411
call void @llvm.dbg.value(metadata i8 %26, metadata !2383, metadata !DIExpression()), !dbg !2399
%27 = sext i32 %24 to i64, !dbg !2412
%28 = icmp slt i64 %27, 0, !dbg !2412
%29 = sub i64 0, %27, !dbg !2412
%30 = select i1 %28, i64 %29, i64 %27, !dbg !2412
call void @llvm.dbg.value(metadata i64 %30, metadata !2382, metadata !DIExpression()), !dbg !2399
br label %if.done, !dbg !2402
switch.case.body3: ; preds = %if.then
call void @llvm.dbg.value(metadata i64 0, metadata !2396, metadata !DIExpression()), !dbg !2403
call void @llvm.dbg.value(metadata i64 %0, metadata !2396, metadata !DIExpression()), !dbg !2403
%31 = icmp slt i64 %0, 0, !dbg !2413
%32 = zext i1 %31 to i8, !dbg !2413
call void @llvm.dbg.value(metadata i8 %32, metadata !2383, metadata !DIExpression()), !dbg !2399
%33 = sub i64 0, %0, !dbg !2414
%34 = select i1 %31, i64 %33, i64 %0, !dbg !2414
call void @llvm.dbg.value(metadata i64 %34, metadata !2382, metadata !DIExpression()), !dbg !2399
br label %if.done, !dbg !2402
switch.default.body: ; preds = %if.then
%35 = bitcast [2 x i64]* %3 to %..string*, !dbg !2397
store %..string { i8* getelementptr inbounds ([42 x i8], [42 x i8]* @"csbs$93", i64 0, i64 0), i64 41 }, %..string* %35, align 8, !dbg !2397
%36 = load [2 x i64], [2 x i64]* %3, align 8, !dbg !2397
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, i32 35, i32 4, %..string { i8* getelementptr inbounds ([20 x i8], [20 x i8]* @"csbs$95", i64 0, i64 0), i64 19 } }, %runtime.Source_Code_Location* %4, align 8, !dbg !2397
call void @runtime.panic([2 x i64] %36, %runtime.Source_Code_Location* %4, i8* %__.context_ptr), !dbg !2397
unreachable, !dbg !2397
if.done: ; preds = %switch.case.body, %switch.case.body1, %switch.case.body2, %switch.case.body3, %decls
%.15 = phi i64 [ %0, %decls ], [ %34, %switch.case.body3 ], [ %30, %switch.case.body2 ], [ %23, %switch.case.body1 ], [ %16, %switch.case.body ], !dbg !2415
%.1 = phi i8 [ 0, %decls ], [ %32, %switch.case.body3 ], [ %26, %switch.case.body2 ], [ %19, %switch.case.body1 ], [ %12, %switch.case.body ]
call void @llvm.dbg.value(metadata i8 %.1, metadata !2383, metadata !DIExpression()), !dbg !2399
call void @llvm.dbg.value(metadata i64 %.15, metadata !2382, metadata !DIExpression()), !dbg !2399
call void @llvm.dbg.value(metadata i64 %.15, metadata !2382, metadata !DIExpression()), !dbg !2399
call void @llvm.dbg.value(metadata i8 %.1, metadata !2383, metadata !DIExpression()), !dbg !2399
%37 = getelementptr inbounds { i64, i8 }, { i64, i8 }* %5, i32 0, i32 0, !dbg !2398
%38 = getelementptr inbounds { i64, i8 }, { i64, i8 }* %5, i32 0, i32 1, !dbg !2398
store i64 %.15, i64* %37, align 8, !dbg !2398
store i8 %.1, i8* %38, align 1, !dbg !2398
%39 = bitcast { i64, i8 }* %5 to [2 x i64]*, !dbg !2398
%40 = load [2 x i64], [2 x i64]* %39, align 8, !dbg !2398
ret [2 x i64] %40, !dbg !2398
}
; Function Attrs: alwaysinline nounwind
define dso_local i8 @runtime.__dynamic_map_full(%runtime.Map_Header* %0) #2 !dbg !2194 {
decls:
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %1, metadata !2192, metadata !DIExpression()), !dbg !2416
%1 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 0, !dbg !2417
%2 = load %runtime.Raw_Map*, %runtime.Raw_Map** %1, align 8, !dbg !2417
%3 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %2, i32 0, i32 0, !dbg !2417
%4 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %3, i32 0, i32 1, !dbg !2417
%5 = load i64, i64* %4, align 8, !dbg !2417
%6 = sitofp i64 %5 to double, !dbg !2417
%7 = fmul double 7.500000e-01, %6, !dbg !2417
%8 = fptosi double %7 to i64, !dbg !2417
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %1, metadata !2192, metadata !DIExpression()), !dbg !2416
%9 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %2, i32 0, i32 1, !dbg !2417
%10 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %9, i32 0, i32 1, !dbg !2417
%11 = load i64, i64* %10, align 8, !dbg !2417
%12 = icmp sle i64 %8, %11, !dbg !2417
%13 = zext i1 %12 to i8, !dbg !2417
ret i8 %13, !dbg !2417
}
define internal [2 x i64] @strconv.append_bits([2 x i64] %0, i64 %1, i64 %2, i1 zeroext %3, i64 %4, [2 x i64] %5, i8 %6, i8* noalias nocapture nonnull %__.context_ptr) !dbg !2418 {
decls:
%7 = alloca { i8*, i64 }, align 8
call void @llvm.dbg.declare(metadata { i8*, i64 }* %8, metadata !2427, metadata !DIExpression()), !dbg !2448
%8 = alloca { i8*, i64 }, align 8
%9 = alloca %..string, align 8
call void @llvm.dbg.declare(metadata %..string* %10, metadata !2432, metadata !DIExpression()), !dbg !2449
%10 = alloca %..string, align 8
%11 = alloca [2 x i64], align 8, !dbg !2450
%12 = alloca %runtime.Source_Code_Location, align 8, !dbg !2450
call void @llvm.dbg.declare(metadata [129 x i8]* %13, metadata !2435, metadata !DIExpression()), !dbg !2453
%13 = alloca [129 x i8], align 1, !dbg !2453
%14 = alloca { i64, i8 }, align 8, !dbg !2454
%15 = alloca [2 x i64], align 8, !dbg !2455
%16 = alloca [2 x i64], align 8, !dbg !2455
%17 = alloca [2 x i64], align 8, !dbg !2458
%18 = alloca [2 x i64], align 8, !dbg !2458
%19 = alloca [2 x i64], align 8, !dbg !2459
%20 = alloca [2 x i64], align 8, !dbg !2461
%21 = alloca [2 x i64], align 8, !dbg !2462
%22 = alloca [2 x i64], align 8, !dbg !2463
%23 = alloca [2 x i64], align 8, !dbg !2464
%24 = alloca [2 x i64], align 8, !dbg !2467
%25 = alloca [2 x i64], align 8, !dbg !2469
%26 = alloca [2 x i64], align 8, !dbg !2470
call void @llvm.dbg.declare(metadata { i8*, i64 }* %27, metadata !2447, metadata !DIExpression()), !dbg !2471
%27 = alloca { i8*, i64 }, align 8, !dbg !2471
%28 = alloca [2 x i64], align 8, !dbg !2471
%29 = alloca { i8*, i64 }, align 8, !dbg !2471
%30 = alloca [2 x i64], align 8, !dbg !2472
%31 = alloca { i8*, i64 }, align 8, !dbg !2472
%32 = bitcast { i8*, i64 }* %7 to [2 x i64]*
store [2 x i64] %0, [2 x i64]* %32, align 8
%33 = bitcast { i8*, i64 }* %8 to i8*
%34 = bitcast { i8*, i64 }* %7 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %33, i8* align 8 %34, i64 16, i1 false)
call void @llvm.dbg.value(metadata i64 %1, metadata !2428, metadata !DIExpression()), !dbg !2473
call void @llvm.dbg.value(metadata i64 %2, metadata !2429, metadata !DIExpression()), !dbg !2473
call void @llvm.dbg.value(metadata i8 undef, metadata !2430, metadata !DIExpression()), !dbg !2473
call void @llvm.dbg.value(metadata i64 %4, metadata !2431, metadata !DIExpression()), !dbg !2473
%35 = bitcast %..string* %9 to [2 x i64]*
store [2 x i64] %5, [2 x i64]* %35, align 8
%36 = bitcast %..string* %10 to i8*
%37 = bitcast %..string* %9 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %36, i8* align 8 %37, i64 16, i1 false)
call void @llvm.dbg.value(metadata i8 %6, metadata !2433, metadata !DIExpression()), !dbg !2473
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !2434, metadata !DIExpression()), !dbg !2474
%38 = icmp slt i64 %2, 2, !dbg !2475
br i1 %38, label %if.then, label %cmp.or, !dbg !2475
cmp.or: ; preds = %decls
%39 = icmp sgt i64 %2, 32, !dbg !2475
br i1 %39, label %if.then, label %if.done, !dbg !2475
if.then: ; preds = %cmp.or, %decls
%40 = bitcast [2 x i64]* %11 to %..string*, !dbg !2450
store %..string { i8* getelementptr inbounds ([44 x i8], [44 x i8]* @"csbs$96", i64 0, i64 0), i64 43 }, %..string* %40, align 8, !dbg !2450
%41 = load [2 x i64], [2 x i64]* %11, align 8, !dbg !2450
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, i32 43, i32 3, %..string { i8* getelementptr inbounds ([12 x i8], [12 x i8]* @"csbs$97", i64 0, i64 0), i64 11 } }, %runtime.Source_Code_Location* %12, align 8, !dbg !2450
call void @runtime.panic([2 x i64] %41, %runtime.Source_Code_Location* %12, i8* %__.context_ptr), !dbg !2450
unreachable, !dbg !2450
if.done: ; preds = %cmp.or
%42 = bitcast [129 x i8]* %13 to i8*, !dbg !2453
call void @llvm.memset.p0i8.i64(i8* %42, i8 0, i64 129, i1 false), !dbg !2453
call void @llvm.dbg.value(metadata i64 0, metadata !2440, metadata !DIExpression()), !dbg !2476
call void @llvm.dbg.value(metadata i64 129, metadata !2440, metadata !DIExpression()), !dbg !2476
call void @llvm.dbg.value(metadata i64 0, metadata !2441, metadata !DIExpression()), !dbg !2476
call void @llvm.dbg.value(metadata i8 0, metadata !2442, metadata !DIExpression()), !dbg !2476
%43 = call [2 x i64] @strconv.is_integer_negative(i64 %1, i1 %3, i64 %4, i8* %__.context_ptr), !dbg !2454
%44 = bitcast { i64, i8 }* %14 to [2 x i64]*, !dbg !2454
store [2 x i64] %43, [2 x i64]* %44, align 8, !dbg !2454
%45 = getelementptr inbounds { i64, i8 }, { i64, i8 }* %14, i32 0, i32 0, !dbg !2454
%46 = load i64, i64* %45, align 8, !dbg !2454
%47 = getelementptr inbounds { i64, i8 }, { i64, i8 }* %14, i32 0, i32 1, !dbg !2454
%48 = load i8, i8* %47, align 1, !dbg !2454
call void @llvm.dbg.value(metadata i64 %46, metadata !2441, metadata !DIExpression()), !dbg !2476
call void @llvm.dbg.value(metadata i8 %48, metadata !2442, metadata !DIExpression()), !dbg !2476
call void @llvm.dbg.value(metadata i64 0, metadata !2443, metadata !DIExpression()), !dbg !2476
call void @llvm.dbg.value(metadata i64 %2, metadata !2443, metadata !DIExpression()), !dbg !2476
br label %for.loop, !dbg !2477
for.loop: ; preds = %for.body, %if.done
%.015 = phi i64 [ 129, %if.done ], [ %50, %for.body ], !dbg !2476
%.014 = phi i64 [ %46, %if.done ], [ %63, %for.body ], !dbg !2476
call void @llvm.dbg.value(metadata i64 %.014, metadata !2441, metadata !DIExpression()), !dbg !2476
call void @llvm.dbg.value(metadata i64 %.015, metadata !2440, metadata !DIExpression()), !dbg !2476
%49 = icmp uge i64 %.014, %2, !dbg !2477
%50 = sub i64 %.015, 1, !dbg !2476
call void @llvm.dbg.value(metadata i64 %50, metadata !2440, metadata !DIExpression()), !dbg !2476
call void @llvm.dbg.value(metadata i64 %50, metadata !2440, metadata !DIExpression()), !dbg !2476
%51 = getelementptr [129 x i8], [129 x i8]* %13, i64 0, i64 %50, !dbg !2476
br i1 %49, label %for.body, label %for.done, !dbg !2477
for.body: ; preds = %for.loop
%52 = bitcast [2 x i64]* %15 to %..string*, !dbg !2455
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %52, align 8, !dbg !2455
%53 = load [2 x i64], [2 x i64]* %15, align 8, !dbg !2455
call void @runtime.bounds_check_error([2 x i64] %53, i32 51, i32 11, i64 %50, i64 129), !dbg !2455
%54 = getelementptr inbounds %..string, %..string* %10, i32 0, i32 0, !dbg !2455
%55 = load i8*, i8** %54, align 8, !dbg !2455
%56 = getelementptr inbounds %..string, %..string* %10, i32 0, i32 1, !dbg !2455
%57 = load i64, i64* %56, align 8, !dbg !2455
%58 = urem i64 %.014, %2, !dbg !2455
%59 = bitcast [2 x i64]* %16 to %..string*, !dbg !2455
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %59, align 8, !dbg !2455
%60 = load [2 x i64], [2 x i64]* %16, align 8, !dbg !2455
call void @runtime.bounds_check_error([2 x i64] %60, i32 51, i32 23, i64 %58, i64 %57), !dbg !2455
%61 = getelementptr i8, i8* %55, i64 %58, !dbg !2455
%62 = load i8, i8* %61, align 1, !dbg !2455
store i8 %62, i8* %51, align 1, !dbg !2455
%63 = udiv i64 %.014, %2, !dbg !2478
call void @llvm.dbg.value(metadata i64 %63, metadata !2441, metadata !DIExpression()), !dbg !2476
br label %for.loop, !dbg !2477
for.done: ; preds = %for.loop
%64 = bitcast [2 x i64]* %17 to %..string*, !dbg !2458
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %64, align 8, !dbg !2458
%65 = load [2 x i64], [2 x i64]* %17, align 8, !dbg !2458
call void @runtime.bounds_check_error([2 x i64] %65, i32 54, i32 10, i64 %50, i64 129), !dbg !2458
%66 = getelementptr inbounds %..string, %..string* %10, i32 0, i32 0, !dbg !2458
%67 = load i8*, i8** %66, align 8, !dbg !2458
%68 = getelementptr inbounds %..string, %..string* %10, i32 0, i32 1, !dbg !2458
%69 = load i64, i64* %68, align 8, !dbg !2458
%70 = urem i64 %.014, %2, !dbg !2458
%71 = bitcast [2 x i64]* %18 to %..string*, !dbg !2458
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %71, align 8, !dbg !2458
%72 = load [2 x i64], [2 x i64]* %18, align 8, !dbg !2458
call void @runtime.bounds_check_error([2 x i64] %72, i32 54, i32 22, i64 %70, i64 %69), !dbg !2458
%73 = getelementptr i8, i8* %67, i64 %70, !dbg !2458
%74 = load i8, i8* %73, align 1, !dbg !2458
store i8 %74, i8* %51, align 1, !dbg !2458
%75 = and i8 %6, 1, !dbg !2479
%76 = icmp ne i8 %75, 0, !dbg !2479
br i1 %76, label %if.then1, label %if.done7, !dbg !2479
if.then1: ; preds = %for.done
call void @llvm.dbg.value(metadata i8 0, metadata !2444, metadata !DIExpression()), !dbg !2480
call void @llvm.dbg.value(metadata i8 1, metadata !2444, metadata !DIExpression()), !dbg !2480
%77 = sub i64 %2, 2, !dbg !2481
%78 = lshr i64 %77, 1, !dbg !2481
%79 = shl i64 %77, 63, !dbg !2481
%80 = or i64 %78, %79, !dbg !2481
switch i64 %80, label %switch.done [
i64 0, label %switch.case.body
i64 3, label %switch.case.body2
i64 5, label %switch.case.body3
i64 7, label %switch.case.body4
], !dbg !2481
switch.case.body: ; preds = %if.then1
%81 = sub i64 %50, 1, !dbg !2482
call void @llvm.dbg.value(metadata i64 %81, metadata !2440, metadata !DIExpression()), !dbg !2476
%82 = getelementptr [129 x i8], [129 x i8]* %13, i64 0, i64 %81, !dbg !2459
%83 = bitcast [2 x i64]* %19 to %..string*, !dbg !2459
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %83, align 8, !dbg !2459
%84 = load [2 x i64], [2 x i64]* %19, align 8, !dbg !2459
call void @runtime.bounds_check_error([2 x i64] %84, i32 59, i32 20, i64 %81, i64 129), !dbg !2459
store i8 98, i8* %82, align 1, !dbg !2459
br label %switch.done, !dbg !2481
switch.case.body2: ; preds = %if.then1
%85 = sub i64 %50, 1, !dbg !2483
call void @llvm.dbg.value(metadata i64 %85, metadata !2440, metadata !DIExpression()), !dbg !2476
%86 = getelementptr [129 x i8], [129 x i8]* %13, i64 0, i64 %85, !dbg !2461
%87 = bitcast [2 x i64]* %20 to %..string*, !dbg !2461
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %87, align 8, !dbg !2461
%88 = load [2 x i64], [2 x i64]* %20, align 8, !dbg !2461
call void @runtime.bounds_check_error([2 x i64] %88, i32 60, i32 20, i64 %85, i64 129), !dbg !2461
store i8 111, i8* %86, align 1, !dbg !2461
br label %switch.done, !dbg !2481
switch.case.body3: ; preds = %if.then1
%89 = sub i64 %50, 1, !dbg !2484
call void @llvm.dbg.value(metadata i64 %89, metadata !2440, metadata !DIExpression()), !dbg !2476
%90 = getelementptr [129 x i8], [129 x i8]* %13, i64 0, i64 %89, !dbg !2462
%91 = bitcast [2 x i64]* %21 to %..string*, !dbg !2462
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %91, align 8, !dbg !2462
%92 = load [2 x i64], [2 x i64]* %21, align 8, !dbg !2462
call void @runtime.bounds_check_error([2 x i64] %92, i32 62, i32 20, i64 %89, i64 129), !dbg !2462
store i8 122, i8* %90, align 1, !dbg !2462
br label %switch.done, !dbg !2481
switch.case.body4: ; preds = %if.then1
%93 = sub i64 %50, 1, !dbg !2485
call void @llvm.dbg.value(metadata i64 %93, metadata !2440, metadata !DIExpression()), !dbg !2476
%94 = getelementptr [129 x i8], [129 x i8]* %13, i64 0, i64 %93, !dbg !2463
%95 = bitcast [2 x i64]* %22 to %..string*, !dbg !2463
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %95, align 8, !dbg !2463
%96 = load [2 x i64], [2 x i64]* %22, align 8, !dbg !2463
call void @runtime.bounds_check_error([2 x i64] %96, i32 63, i32 20, i64 %93, i64 129), !dbg !2463
store i8 120, i8* %94, align 1, !dbg !2463
br label %switch.done, !dbg !2481
switch.done: ; preds = %if.then1, %switch.case.body4, %switch.case.body3, %switch.case.body2, %switch.case.body
%.1 = phi i64 [ %93, %switch.case.body4 ], [ %89, %switch.case.body3 ], [ %85, %switch.case.body2 ], [ %81, %switch.case.body ], [ %50, %if.then1 ], !dbg !2476
%.0 = phi i8 [ 1, %switch.case.body4 ], [ 1, %switch.case.body3 ], [ 1, %switch.case.body2 ], [ 1, %switch.case.body ], [ 0, %if.then1 ], !dbg !2480
call void @llvm.dbg.value(metadata i8 %.0, metadata !2444, metadata !DIExpression()), !dbg !2480
call void @llvm.dbg.value(metadata i64 %.1, metadata !2440, metadata !DIExpression()), !dbg !2476
%97 = trunc i8 %.0 to i1, !dbg !2486
br i1 %97, label %if.then5, label %if.done7, !dbg !2486
if.then5: ; preds = %switch.done
%98 = sub i64 %.1, 1, !dbg !2487
call void @llvm.dbg.value(metadata i64 %98, metadata !2440, metadata !DIExpression()), !dbg !2476
%99 = getelementptr [129 x i8], [129 x i8]* %13, i64 0, i64 %98, !dbg !2464
%100 = bitcast [2 x i64]* %23 to %..string*, !dbg !2464
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %100, align 8, !dbg !2464
%101 = load [2 x i64], [2 x i64]* %23, align 8, !dbg !2464
call void @runtime.bounds_check_error([2 x i64] %101, i32 67, i32 12, i64 %98, i64 129), !dbg !2464
store i8 48, i8* %99, align 1, !dbg !2464
br label %if.done7, !dbg !2486
if.done7: ; preds = %switch.done, %if.then5, %for.done
%.3 = phi i64 [ %50, %for.done ], [ %98, %if.then5 ], [ %.1, %switch.done ], !dbg !2476
call void @llvm.dbg.value(metadata i64 %.3, metadata !2440, metadata !DIExpression()), !dbg !2476
%102 = icmp eq i8 1, %48, !dbg !2488
br i1 %102, label %switch.case.body8, label %switch.case.next, !dbg !2488
switch.case.next: ; preds = %if.done7
%103 = and i8 %6, 2, !dbg !2488
%104 = icmp ne i8 %103, 0, !dbg !2488
br i1 %104, label %switch.case.body10, label %switch.case.next9, !dbg !2488
switch.case.body8: ; preds = %if.done7
%105 = sub i64 %.3, 1, !dbg !2489
call void @llvm.dbg.value(metadata i64 %105, metadata !2440, metadata !DIExpression()), !dbg !2476
%106 = getelementptr [129 x i8], [129 x i8]* %13, i64 0, i64 %105, !dbg !2467
%107 = bitcast [2 x i64]* %24 to %..string*, !dbg !2467
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %107, align 8, !dbg !2467
%108 = load [2 x i64], [2 x i64]* %24, align 8, !dbg !2467
call void @runtime.bounds_check_error([2 x i64] %108, i32 73, i32 11, i64 %105, i64 129), !dbg !2467
store i8 45, i8* %106, align 1, !dbg !2467
br label %switch.done13, !dbg !2488
switch.case.next9: ; preds = %switch.case.next
%109 = and i8 %6, 4, !dbg !2488
%110 = icmp ne i8 %109, 0, !dbg !2488
br i1 %110, label %switch.case.body12, label %switch.done13, !dbg !2488
switch.case.body10: ; preds = %switch.case.next
%111 = sub i64 %.3, 1, !dbg !2490
call void @llvm.dbg.value(metadata i64 %111, metadata !2440, metadata !DIExpression()), !dbg !2476
%112 = getelementptr [129 x i8], [129 x i8]* %13, i64 0, i64 %111, !dbg !2469
%113 = bitcast [2 x i64]* %25 to %..string*, !dbg !2469
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %113, align 8, !dbg !2469
%114 = load [2 x i64], [2 x i64]* %25, align 8, !dbg !2469
call void @runtime.bounds_check_error([2 x i64] %114, i32 75, i32 11, i64 %111, i64 129), !dbg !2469
store i8 43, i8* %112, align 1, !dbg !2469
br label %switch.done13, !dbg !2488
switch.case.body12: ; preds = %switch.case.next9
%115 = sub i64 %.3, 1, !dbg !2491
call void @llvm.dbg.value(metadata i64 %115, metadata !2440, metadata !DIExpression()), !dbg !2476
%116 = getelementptr [129 x i8], [129 x i8]* %13, i64 0, i64 %115, !dbg !2470
%117 = bitcast [2 x i64]* %26 to %..string*, !dbg !2470
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %117, align 8, !dbg !2470
%118 = load [2 x i64], [2 x i64]* %26, align 8, !dbg !2470
call void @runtime.bounds_check_error([2 x i64] %118, i32 77, i32 11, i64 %115, i64 129), !dbg !2470
store i8 32, i8* %116, align 1, !dbg !2470
br label %switch.done13, !dbg !2488
switch.done13: ; preds = %switch.case.next9, %switch.case.body12, %switch.case.body10, %switch.case.body8
%.4 = phi i64 [ %105, %switch.case.body8 ], [ %111, %switch.case.body10 ], [ %115, %switch.case.body12 ], [ %.3, %switch.case.next9 ], !dbg !2476
call void @llvm.dbg.value(metadata i64 %.4, metadata !2440, metadata !DIExpression()), !dbg !2476
%119 = bitcast { i8*, i64 }* %27 to i8*, !dbg !2471
call void @llvm.memset.p0i8.i64(i8* %119, i8 0, i64 16, i1 false), !dbg !2471
%120 = bitcast [2 x i64]* %28 to %..string*, !dbg !2471
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %120, align 8, !dbg !2471
%121 = load [2 x i64], [2 x i64]* %28, align 8, !dbg !2471
call void @runtime.slice_expr_error_lo_hi([2 x i64] %121, i32 80, i32 10, i64 %.4, i64 129, i64 129), !dbg !2471
%122 = getelementptr [129 x i8], [129 x i8]* %13, i64 0, i64 0, !dbg !2471
%123 = getelementptr i8, i8* %122, i64 %.4, !dbg !2471
%124 = sub i64 129, %.4, !dbg !2471
%125 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %29, i32 0, i32 0, !dbg !2471
store i8* %123, i8** %125, align 8, !dbg !2471
%126 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %29, i32 0, i32 1, !dbg !2471
store i64 %124, i64* %126, align 8, !dbg !2471
%127 = bitcast { i8*, i64 }* %29 to i8*, !dbg !2471
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %119, i8* align 8 %127, i64 16, i1 false), !dbg !2471
%128 = bitcast { i8*, i64 }* %8 to [2 x i64]*, !dbg !2492
%129 = load [2 x i64], [2 x i64]* %128, align 8, !dbg !2492
%130 = bitcast { i8*, i64 }* %27 to [2 x i64]*, !dbg !2492
%131 = load [2 x i64], [2 x i64]* %130, align 8, !dbg !2492
%132 = call i64 @runtime.copy_slice-6928([2 x i64] %129, [2 x i64] %131), !dbg !2492
%133 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %27, i32 0, i32 1, !dbg !2472
%134 = load i64, i64* %133, align 8, !dbg !2472
%135 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %8, i32 0, i32 1, !dbg !2472
%136 = load i64, i64* %135, align 8, !dbg !2472
%137 = bitcast [2 x i64]* %30 to %..string*, !dbg !2472
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %137, align 8, !dbg !2472
%138 = load [2 x i64], [2 x i64]* %30, align 8, !dbg !2472
call void @runtime.slice_expr_error_lo_hi([2 x i64] %138, i32 82, i32 19, i64 0, i64 %134, i64 %136), !dbg !2472
%139 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %8, i32 0, i32 0, !dbg !2472
%140 = load i8*, i8** %139, align 8, !dbg !2472
%141 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %31, i32 0, i32 0, !dbg !2472
store i8* %140, i8** %141, align 8, !dbg !2472
%142 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %31, i32 0, i32 1, !dbg !2472
store i64 %134, i64* %142, align 8, !dbg !2472
%143 = bitcast { i8*, i64 }* %31 to %..string*, !dbg !2472
%144 = bitcast %..string* %143 to [2 x i64]*, !dbg !2472
%145 = load [2 x i64], [2 x i64]* %144, align 8, !dbg !2472
ret [2 x i64] %145, !dbg !2472
}
define internal void @strconv.is_integer_negative_128({ i128, i8 }* noalias sret %agg.result, i128 %0, i1 zeroext %1, i64 %2, i8* noalias nocapture nonnull %__.context_ptr) !dbg !2493 {
decls:
%3 = alloca [2 x i64], align 8, !dbg !2514
%4 = alloca %runtime.Source_Code_Location, align 8, !dbg !2514
call void @llvm.dbg.value(metadata i128 %0, metadata !2501, metadata !DIExpression()), !dbg !2515
call void @llvm.dbg.value(metadata i8 undef, metadata !2502, metadata !DIExpression()), !dbg !2515
call void @llvm.dbg.value(metadata i64 %2, metadata !2503, metadata !DIExpression()), !dbg !2515
%5 = getelementptr inbounds { i128, i8 }, { i128, i8 }* %agg.result, i32 0, i32 0
%6 = getelementptr inbounds { i128, i8 }, { i128, i8 }* %agg.result, i32 0, i32 1
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !2504, metadata !DIExpression()), !dbg !2516
store i128 %0, i128* %5, align 16, !dbg !2517
br i1 %1, label %if.then, label %if.done, !dbg !2518
if.then: ; preds = %decls
switch i64 %2, label %switch.default.body [
i64 8, label %switch.case.body
i64 16, label %switch.case.body1
i64 32, label %switch.case.body2
i64 64, label %switch.case.body3
i64 128, label %switch.case.body4
], !dbg !2519
switch.case.body: ; preds = %if.then
call void @llvm.dbg.value(metadata i8 0, metadata !2505, metadata !DIExpression()), !dbg !2520
%7 = trunc i128 %0 to i8, !dbg !2521
call void @llvm.dbg.value(metadata i8 %7, metadata !2505, metadata !DIExpression()), !dbg !2520
%8 = icmp slt i8 %7, 0, !dbg !2522
%9 = zext i1 %8 to i8, !dbg !2522
store i8 %9, i8* %6, align 1, !dbg !2522
%10 = sext i8 %7 to i128, !dbg !2523
%11 = icmp slt i128 %10, 0, !dbg !2523
%12 = sub i128 0, %10, !dbg !2523
%13 = select i1 %11, i128 %12, i128 %10, !dbg !2523
store i128 %13, i128* %5, align 16, !dbg !2523
br label %if.done, !dbg !2519
switch.case.body1: ; preds = %if.then
call void @llvm.dbg.value(metadata i16 0, metadata !2510, metadata !DIExpression()), !dbg !2520
%14 = trunc i128 %0 to i16, !dbg !2524
call void @llvm.dbg.value(metadata i16 %14, metadata !2510, metadata !DIExpression()), !dbg !2520
%15 = icmp slt i16 %14, 0, !dbg !2525
%16 = zext i1 %15 to i8, !dbg !2525
store i8 %16, i8* %6, align 1, !dbg !2525
%17 = sext i16 %14 to i128, !dbg !2526
%18 = icmp slt i128 %17, 0, !dbg !2526
%19 = sub i128 0, %17, !dbg !2526
%20 = select i1 %18, i128 %19, i128 %17, !dbg !2526
store i128 %20, i128* %5, align 16, !dbg !2526
br label %if.done, !dbg !2519
switch.case.body2: ; preds = %if.then
call void @llvm.dbg.value(metadata i32 0, metadata !2511, metadata !DIExpression()), !dbg !2520
%21 = trunc i128 %0 to i32, !dbg !2527
call void @llvm.dbg.value(metadata i32 %21, metadata !2511, metadata !DIExpression()), !dbg !2520
%22 = icmp slt i32 %21, 0, !dbg !2528
%23 = zext i1 %22 to i8, !dbg !2528
store i8 %23, i8* %6, align 1, !dbg !2528
%24 = sext i32 %21 to i128, !dbg !2529
%25 = icmp slt i128 %24, 0, !dbg !2529
%26 = sub i128 0, %24, !dbg !2529
%27 = select i1 %25, i128 %26, i128 %24, !dbg !2529
store i128 %27, i128* %5, align 16, !dbg !2529
br label %if.done, !dbg !2519
switch.case.body3: ; preds = %if.then
call void @llvm.dbg.value(metadata i64 0, metadata !2512, metadata !DIExpression()), !dbg !2520
%28 = trunc i128 %0 to i64, !dbg !2530
call void @llvm.dbg.value(metadata i64 %28, metadata !2512, metadata !DIExpression()), !dbg !2520
%29 = icmp slt i64 %28, 0, !dbg !2531
%30 = zext i1 %29 to i8, !dbg !2531
store i8 %30, i8* %6, align 1, !dbg !2531
%31 = sext i64 %28 to i128, !dbg !2532
%32 = icmp slt i128 %31, 0, !dbg !2532
%33 = sub i128 0, %31, !dbg !2532
%34 = select i1 %32, i128 %33, i128 %31, !dbg !2532
store i128 %34, i128* %5, align 16, !dbg !2532
br label %if.done, !dbg !2519
switch.case.body4: ; preds = %if.then
call void @llvm.dbg.value(metadata i128 0, metadata !2513, metadata !DIExpression()), !dbg !2520
call void @llvm.dbg.value(metadata i128 %0, metadata !2513, metadata !DIExpression()), !dbg !2520
%35 = icmp slt i128 %0, 0, !dbg !2533
%36 = zext i1 %35 to i8, !dbg !2533
store i8 %36, i8* %6, align 1, !dbg !2533
%37 = sub i128 0, %0, !dbg !2534
%38 = select i1 %35, i128 %37, i128 %0, !dbg !2534
store i128 %38, i128* %5, align 16, !dbg !2534
br label %if.done, !dbg !2519
switch.default.body: ; preds = %if.then
%39 = bitcast [2 x i64]* %3 to %..string*, !dbg !2514
store %..string { i8* getelementptr inbounds ([42 x i8], [42 x i8]* @"csbs$93", i64 0, i64 0), i64 41 }, %..string* %39, align 8, !dbg !2514
%40 = load [2 x i64], [2 x i64]* %3, align 8, !dbg !2514
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, i32 110, i32 4, %..string { i8* getelementptr inbounds ([24 x i8], [24 x i8]* @"csbs$98", i64 0, i64 0), i64 23 } }, %runtime.Source_Code_Location* %4, align 8, !dbg !2514
call void @runtime.panic([2 x i64] %40, %runtime.Source_Code_Location* %4, i8* %__.context_ptr), !dbg !2514
unreachable, !dbg !2514
if.done: ; preds = %switch.case.body, %switch.case.body1, %switch.case.body2, %switch.case.body3, %switch.case.body4, %decls
ret void, !dbg !2535
}
define internal [2 x i64] @strconv.append_bits_128([2 x i64] %0, i128 %1, i64 %2, i1 zeroext %3, i64 %4, [2 x i64] %5, i8 %6, i8* noalias nocapture nonnull %__.context_ptr) !dbg !2536 {
decls:
%7 = alloca { i8*, i64 }, align 8
call void @llvm.dbg.declare(metadata { i8*, i64 }* %8, metadata !2540, metadata !DIExpression()), !dbg !2565
%8 = alloca { i8*, i64 }, align 8
%9 = alloca %..string, align 8
call void @llvm.dbg.declare(metadata %..string* %10, metadata !2545, metadata !DIExpression()), !dbg !2566
%10 = alloca %..string, align 8
%11 = alloca [2 x i64], align 8, !dbg !2567
%12 = alloca %runtime.Source_Code_Location, align 8, !dbg !2567
call void @llvm.dbg.declare(metadata [140 x i8]* %13, metadata !2548, metadata !DIExpression()), !dbg !2570
%13 = alloca [140 x i8], align 1, !dbg !2570
%14 = alloca { i128, i8 }, align 16, !dbg !2571
%15 = alloca [2 x i64], align 8, !dbg !2572
%16 = alloca [2 x i64], align 8, !dbg !2572
%17 = alloca [2 x i64], align 8, !dbg !2573
%18 = alloca [2 x i64], align 8, !dbg !2573
%19 = alloca [2 x i64], align 8, !dbg !2574
%20 = alloca [2 x i64], align 8, !dbg !2576
%21 = alloca [2 x i64], align 8, !dbg !2577
%22 = alloca [2 x i64], align 8, !dbg !2578
%23 = alloca [2 x i64], align 8, !dbg !2579
%24 = alloca [2 x i64], align 8, !dbg !2580
%25 = alloca [2 x i64], align 8, !dbg !2583
%26 = alloca [2 x i64], align 8, !dbg !2585
%27 = alloca [2 x i64], align 8, !dbg !2586
call void @llvm.dbg.declare(metadata { i8*, i64 }* %28, metadata !2564, metadata !DIExpression()), !dbg !2587
%28 = alloca { i8*, i64 }, align 8, !dbg !2587
%29 = alloca [2 x i64], align 8, !dbg !2587
%30 = alloca { i8*, i64 }, align 8, !dbg !2587
%31 = alloca [2 x i64], align 8, !dbg !2588
%32 = alloca { i8*, i64 }, align 8, !dbg !2588
%33 = bitcast { i8*, i64 }* %7 to [2 x i64]*
store [2 x i64] %0, [2 x i64]* %33, align 8
%34 = bitcast { i8*, i64 }* %8 to i8*
%35 = bitcast { i8*, i64 }* %7 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %34, i8* align 8 %35, i64 16, i1 false)
call void @llvm.dbg.value(metadata i128 %1, metadata !2541, metadata !DIExpression()), !dbg !2589
call void @llvm.dbg.value(metadata i64 %2, metadata !2542, metadata !DIExpression()), !dbg !2589
call void @llvm.dbg.value(metadata i8 undef, metadata !2543, metadata !DIExpression()), !dbg !2589
call void @llvm.dbg.value(metadata i64 %4, metadata !2544, metadata !DIExpression()), !dbg !2589
%36 = bitcast %..string* %9 to [2 x i64]*
store [2 x i64] %5, [2 x i64]* %36, align 8
%37 = bitcast %..string* %10 to i8*
%38 = bitcast %..string* %9 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %37, i8* align 8 %38, i64 16, i1 false)
call void @llvm.dbg.value(metadata i8 %6, metadata !2546, metadata !DIExpression()), !dbg !2589
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !2547, metadata !DIExpression()), !dbg !2590
%39 = icmp slt i64 %2, 2, !dbg !2591
br i1 %39, label %if.then, label %cmp.or, !dbg !2591
cmp.or: ; preds = %decls
%40 = icmp sgt i64 %2, 32, !dbg !2591
br i1 %40, label %if.then, label %if.done, !dbg !2591
if.then: ; preds = %cmp.or, %decls
%41 = bitcast [2 x i64]* %11 to %..string*, !dbg !2567
store %..string { i8* getelementptr inbounds ([44 x i8], [44 x i8]* @"csbs$96", i64 0, i64 0), i64 43 }, %..string* %41, align 8, !dbg !2567
%42 = load [2 x i64], [2 x i64]* %11, align 8, !dbg !2567
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, i32 120, i32 3, %..string { i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"csbs$99", i64 0, i64 0), i64 15 } }, %runtime.Source_Code_Location* %12, align 8, !dbg !2567
call void @runtime.panic([2 x i64] %42, %runtime.Source_Code_Location* %12, i8* %__.context_ptr), !dbg !2567
unreachable, !dbg !2567
if.done: ; preds = %cmp.or
%43 = bitcast [140 x i8]* %13 to i8*, !dbg !2570
call void @llvm.memset.p0i8.i64(i8* %43, i8 0, i64 140, i1 false), !dbg !2570
call void @llvm.dbg.value(metadata i64 0, metadata !2553, metadata !DIExpression()), !dbg !2592
call void @llvm.dbg.value(metadata i64 140, metadata !2553, metadata !DIExpression()), !dbg !2592
call void @llvm.dbg.value(metadata i128 0, metadata !2554, metadata !DIExpression()), !dbg !2592
call void @llvm.dbg.value(metadata i8 0, metadata !2555, metadata !DIExpression()), !dbg !2592
%44 = bitcast { i128, i8 }* %14 to i8*, !dbg !2571
call void @llvm.memset.p0i8.i64(i8* %44, i8 0, i64 24, i1 false), !dbg !2571
call void @strconv.is_integer_negative_128({ i128, i8 }* %14, i128 %1, i1 %3, i64 %4, i8* %__.context_ptr), !dbg !2571
%45 = getelementptr inbounds { i128, i8 }, { i128, i8 }* %14, i32 0, i32 0, !dbg !2571
%46 = load i128, i128* %45, align 16, !dbg !2571
%47 = getelementptr inbounds { i128, i8 }, { i128, i8 }* %14, i32 0, i32 1, !dbg !2571
%48 = load i8, i8* %47, align 1, !dbg !2571
call void @llvm.dbg.value(metadata i128 %46, metadata !2554, metadata !DIExpression()), !dbg !2592
call void @llvm.dbg.value(metadata i8 %48, metadata !2555, metadata !DIExpression()), !dbg !2592
call void @llvm.dbg.value(metadata i128 0, metadata !2556, metadata !DIExpression()), !dbg !2592
%49 = sext i64 %2 to i128, !dbg !2593
call void @llvm.dbg.value(metadata i128 %49, metadata !2556, metadata !DIExpression()), !dbg !2592
br label %for.loop, !dbg !2594
for.loop: ; preds = %for.body, %if.done
%.016 = phi i64 [ 140, %if.done ], [ %52, %for.body ], !dbg !2592
%.015 = phi i128 [ %46, %if.done ], [ %54, %for.body ], !dbg !2592
call void @llvm.dbg.value(metadata i128 %.015, metadata !2554, metadata !DIExpression()), !dbg !2592
call void @llvm.dbg.value(metadata i64 %.016, metadata !2553, metadata !DIExpression()), !dbg !2592
%50 = icmp uge i128 %.015, %49, !dbg !2594
br i1 %50, label %cmp.and, label %for.done, !dbg !2594
cmp.and: ; preds = %for.loop
%51 = icmp sge i64 %.016, 0, !dbg !2594
br i1 %51, label %for.body, label %for.done, !dbg !2594
for.body: ; preds = %cmp.and
%52 = sub i64 %.016, 1, !dbg !2595
call void @llvm.dbg.value(metadata i64 %52, metadata !2553, metadata !DIExpression()), !dbg !2592
call void @llvm.dbg.value(metadata i128 0, metadata !2557, metadata !DIExpression()), !dbg !2596
%53 = urem i128 %.015, %49, !dbg !2597
call void @llvm.dbg.value(metadata i128 %53, metadata !2557, metadata !DIExpression()), !dbg !2596
%54 = udiv i128 %.015, %49, !dbg !2598
call void @llvm.dbg.value(metadata i128 %54, metadata !2554, metadata !DIExpression()), !dbg !2592
call void @llvm.dbg.value(metadata i32 0, metadata !2560, metadata !DIExpression()), !dbg !2596
%55 = trunc i128 %53 to i32, !dbg !2599
call void @llvm.dbg.value(metadata i32 %55, metadata !2560, metadata !DIExpression()), !dbg !2596
%56 = getelementptr [140 x i8], [140 x i8]* %13, i64 0, i64 %52, !dbg !2572
%57 = bitcast [2 x i64]* %15 to %..string*, !dbg !2572
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %57, align 8, !dbg !2572
%58 = load [2 x i64], [2 x i64]* %15, align 8, !dbg !2572
call void @runtime.bounds_check_error([2 x i64] %58, i32 136, i32 5, i64 %52, i64 140), !dbg !2572
%59 = getelementptr inbounds %..string, %..string* %10, i32 0, i32 0, !dbg !2572
%60 = load i8*, i8** %59, align 8, !dbg !2572
%61 = getelementptr inbounds %..string, %..string* %10, i32 0, i32 1, !dbg !2572
%62 = load i64, i64* %61, align 8, !dbg !2572
%63 = zext i32 %55 to i64, !dbg !2572
%64 = bitcast [2 x i64]* %16 to %..string*, !dbg !2572
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %64, align 8, !dbg !2572
%65 = load [2 x i64], [2 x i64]* %16, align 8, !dbg !2572
call void @runtime.bounds_check_error([2 x i64] %65, i32 136, i32 17, i64 %63, i64 %62), !dbg !2572
%66 = getelementptr i8, i8* %60, i64 %63, !dbg !2572
%67 = load i8, i8* %66, align 1, !dbg !2572
store i8 %67, i8* %56, align 1, !dbg !2572
br label %for.loop, !dbg !2594
for.done: ; preds = %cmp.and, %for.loop
%68 = sub i64 %.016, 1, !dbg !2600
call void @llvm.dbg.value(metadata i64 %68, metadata !2553, metadata !DIExpression()), !dbg !2592
%69 = getelementptr [140 x i8], [140 x i8]* %13, i64 0, i64 %68, !dbg !2573
%70 = bitcast [2 x i64]* %17 to %..string*, !dbg !2573
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %70, align 8, !dbg !2573
%71 = load [2 x i64], [2 x i64]* %17, align 8, !dbg !2573
call void @runtime.bounds_check_error([2 x i64] %71, i32 138, i32 10, i64 %68, i64 140), !dbg !2573
%72 = getelementptr inbounds %..string, %..string* %10, i32 0, i32 0, !dbg !2573
%73 = load i8*, i8** %72, align 8, !dbg !2573
%74 = getelementptr inbounds %..string, %..string* %10, i32 0, i32 1, !dbg !2573
%75 = load i64, i64* %74, align 8, !dbg !2573
%76 = urem i128 %.015, %49, !dbg !2573
%77 = trunc i128 %76 to i64, !dbg !2573
%78 = bitcast [2 x i64]* %18 to %..string*, !dbg !2573
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %78, align 8, !dbg !2573
%79 = load [2 x i64], [2 x i64]* %18, align 8, !dbg !2573
call void @runtime.bounds_check_error([2 x i64] %79, i32 138, i32 22, i64 %77, i64 %75), !dbg !2573
%80 = getelementptr i8, i8* %73, i64 %77, !dbg !2573
%81 = load i8, i8* %80, align 1, !dbg !2573
store i8 %81, i8* %69, align 1, !dbg !2573
%82 = and i8 %6, 1, !dbg !2601
%83 = icmp ne i8 %82, 0, !dbg !2601
br i1 %83, label %if.then1, label %if.done8, !dbg !2601
if.then1: ; preds = %for.done
call void @llvm.dbg.value(metadata i8 0, metadata !2561, metadata !DIExpression()), !dbg !2602
call void @llvm.dbg.value(metadata i8 1, metadata !2561, metadata !DIExpression()), !dbg !2602
%84 = sub i64 %2, 2, !dbg !2603
%85 = lshr i64 %84, 1, !dbg !2603
%86 = shl i64 %84, 63, !dbg !2603
%87 = or i64 %85, %86, !dbg !2603
switch i64 %87, label %switch.done [
i64 0, label %switch.case.body
i64 3, label %switch.case.body2
i64 4, label %switch.case.body3
i64 5, label %switch.case.body4
i64 7, label %switch.case.body5
], !dbg !2603
switch.case.body: ; preds = %if.then1
%88 = sub i64 %68, 1, !dbg !2604
call void @llvm.dbg.value(metadata i64 %88, metadata !2553, metadata !DIExpression()), !dbg !2592
%89 = getelementptr [140 x i8], [140 x i8]* %13, i64 0, i64 %88, !dbg !2574
%90 = bitcast [2 x i64]* %19 to %..string*, !dbg !2574
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %90, align 8, !dbg !2574
%91 = load [2 x i64], [2 x i64]* %19, align 8, !dbg !2574
call void @runtime.bounds_check_error([2 x i64] %91, i32 143, i32 20, i64 %88, i64 140), !dbg !2574
store i8 98, i8* %89, align 1, !dbg !2574
br label %switch.done, !dbg !2603
switch.case.body2: ; preds = %if.then1
%92 = sub i64 %68, 1, !dbg !2605
call void @llvm.dbg.value(metadata i64 %92, metadata !2553, metadata !DIExpression()), !dbg !2592
%93 = getelementptr [140 x i8], [140 x i8]* %13, i64 0, i64 %92, !dbg !2576
%94 = bitcast [2 x i64]* %20 to %..string*, !dbg !2576
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %94, align 8, !dbg !2576
%95 = load [2 x i64], [2 x i64]* %20, align 8, !dbg !2576
call void @runtime.bounds_check_error([2 x i64] %95, i32 144, i32 20, i64 %92, i64 140), !dbg !2576
store i8 111, i8* %93, align 1, !dbg !2576
br label %switch.done, !dbg !2603
switch.case.body3: ; preds = %if.then1
%96 = sub i64 %68, 1, !dbg !2606
call void @llvm.dbg.value(metadata i64 %96, metadata !2553, metadata !DIExpression()), !dbg !2592
%97 = getelementptr [140 x i8], [140 x i8]* %13, i64 0, i64 %96, !dbg !2577
%98 = bitcast [2 x i64]* %21 to %..string*, !dbg !2577
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %98, align 8, !dbg !2577
%99 = load [2 x i64], [2 x i64]* %21, align 8, !dbg !2577
call void @runtime.bounds_check_error([2 x i64] %99, i32 145, i32 20, i64 %96, i64 140), !dbg !2577
store i8 100, i8* %97, align 1, !dbg !2577
br label %switch.done, !dbg !2603
switch.case.body4: ; preds = %if.then1
%100 = sub i64 %68, 1, !dbg !2607
call void @llvm.dbg.value(metadata i64 %100, metadata !2553, metadata !DIExpression()), !dbg !2592
%101 = getelementptr [140 x i8], [140 x i8]* %13, i64 0, i64 %100, !dbg !2578
%102 = bitcast [2 x i64]* %22 to %..string*, !dbg !2578
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %102, align 8, !dbg !2578
%103 = load [2 x i64], [2 x i64]* %22, align 8, !dbg !2578
call void @runtime.bounds_check_error([2 x i64] %103, i32 146, i32 20, i64 %100, i64 140), !dbg !2578
store i8 122, i8* %101, align 1, !dbg !2578
br label %switch.done, !dbg !2603
switch.case.body5: ; preds = %if.then1
%104 = sub i64 %68, 1, !dbg !2608
call void @llvm.dbg.value(metadata i64 %104, metadata !2553, metadata !DIExpression()), !dbg !2592
%105 = getelementptr [140 x i8], [140 x i8]* %13, i64 0, i64 %104, !dbg !2579
%106 = bitcast [2 x i64]* %23 to %..string*, !dbg !2579
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %106, align 8, !dbg !2579
%107 = load [2 x i64], [2 x i64]* %23, align 8, !dbg !2579
call void @runtime.bounds_check_error([2 x i64] %107, i32 147, i32 20, i64 %104, i64 140), !dbg !2579
store i8 120, i8* %105, align 1, !dbg !2579
br label %switch.done, !dbg !2603
switch.done: ; preds = %if.then1, %switch.case.body5, %switch.case.body4, %switch.case.body3, %switch.case.body2, %switch.case.body
%.1 = phi i64 [ %104, %switch.case.body5 ], [ %100, %switch.case.body4 ], [ %96, %switch.case.body3 ], [ %92, %switch.case.body2 ], [ %88, %switch.case.body ], [ %68, %if.then1 ], !dbg !2592
%.0 = phi i8 [ 1, %switch.case.body5 ], [ 1, %switch.case.body4 ], [ 1, %switch.case.body3 ], [ 1, %switch.case.body2 ], [ 1, %switch.case.body ], [ 0, %if.then1 ], !dbg !2602
call void @llvm.dbg.value(metadata i8 %.0, metadata !2561, metadata !DIExpression()), !dbg !2602
call void @llvm.dbg.value(metadata i64 %.1, metadata !2553, metadata !DIExpression()), !dbg !2592
%108 = trunc i8 %.0 to i1, !dbg !2609
br i1 %108, label %if.then6, label %if.done8, !dbg !2609
if.then6: ; preds = %switch.done
%109 = sub i64 %.1, 1, !dbg !2610
call void @llvm.dbg.value(metadata i64 %109, metadata !2553, metadata !DIExpression()), !dbg !2592
%110 = getelementptr [140 x i8], [140 x i8]* %13, i64 0, i64 %109, !dbg !2580
%111 = bitcast [2 x i64]* %24 to %..string*, !dbg !2580
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %111, align 8, !dbg !2580
%112 = load [2 x i64], [2 x i64]* %24, align 8, !dbg !2580
call void @runtime.bounds_check_error([2 x i64] %112, i32 151, i32 12, i64 %109, i64 140), !dbg !2580
store i8 48, i8* %110, align 1, !dbg !2580
br label %if.done8, !dbg !2609
if.done8: ; preds = %switch.done, %if.then6, %for.done
%.3 = phi i64 [ %68, %for.done ], [ %109, %if.then6 ], [ %.1, %switch.done ], !dbg !2592
call void @llvm.dbg.value(metadata i64 %.3, metadata !2553, metadata !DIExpression()), !dbg !2592
%113 = icmp eq i8 1, %48, !dbg !2611
br i1 %113, label %switch.case.body9, label %switch.case.next, !dbg !2611
switch.case.next: ; preds = %if.done8
%114 = and i8 %6, 2, !dbg !2611
%115 = icmp ne i8 %114, 0, !dbg !2611
br i1 %115, label %switch.case.body11, label %switch.case.next10, !dbg !2611
switch.case.body9: ; preds = %if.done8
%116 = sub i64 %.3, 1, !dbg !2612
call void @llvm.dbg.value(metadata i64 %116, metadata !2553, metadata !DIExpression()), !dbg !2592
%117 = getelementptr [140 x i8], [140 x i8]* %13, i64 0, i64 %116, !dbg !2583
%118 = bitcast [2 x i64]* %25 to %..string*, !dbg !2583
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %118, align 8, !dbg !2583
%119 = load [2 x i64], [2 x i64]* %25, align 8, !dbg !2583
call void @runtime.bounds_check_error([2 x i64] %119, i32 157, i32 11, i64 %116, i64 140), !dbg !2583
store i8 45, i8* %117, align 1, !dbg !2583
br label %switch.done14, !dbg !2611
switch.case.next10: ; preds = %switch.case.next
%120 = and i8 %6, 4, !dbg !2611
%121 = icmp ne i8 %120, 0, !dbg !2611
br i1 %121, label %switch.case.body13, label %switch.done14, !dbg !2611
switch.case.body11: ; preds = %switch.case.next
%122 = sub i64 %.3, 1, !dbg !2613
call void @llvm.dbg.value(metadata i64 %122, metadata !2553, metadata !DIExpression()), !dbg !2592
%123 = getelementptr [140 x i8], [140 x i8]* %13, i64 0, i64 %122, !dbg !2585
%124 = bitcast [2 x i64]* %26 to %..string*, !dbg !2585
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %124, align 8, !dbg !2585
%125 = load [2 x i64], [2 x i64]* %26, align 8, !dbg !2585
call void @runtime.bounds_check_error([2 x i64] %125, i32 159, i32 11, i64 %122, i64 140), !dbg !2585
store i8 43, i8* %123, align 1, !dbg !2585
br label %switch.done14, !dbg !2611
switch.case.body13: ; preds = %switch.case.next10
%126 = sub i64 %.3, 1, !dbg !2614
call void @llvm.dbg.value(metadata i64 %126, metadata !2553, metadata !DIExpression()), !dbg !2592
%127 = getelementptr [140 x i8], [140 x i8]* %13, i64 0, i64 %126, !dbg !2586
%128 = bitcast [2 x i64]* %27 to %..string*, !dbg !2586
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %128, align 8, !dbg !2586
%129 = load [2 x i64], [2 x i64]* %27, align 8, !dbg !2586
call void @runtime.bounds_check_error([2 x i64] %129, i32 161, i32 11, i64 %126, i64 140), !dbg !2586
store i8 32, i8* %127, align 1, !dbg !2586
br label %switch.done14, !dbg !2611
switch.done14: ; preds = %switch.case.next10, %switch.case.body13, %switch.case.body11, %switch.case.body9
%.4 = phi i64 [ %116, %switch.case.body9 ], [ %122, %switch.case.body11 ], [ %126, %switch.case.body13 ], [ %.3, %switch.case.next10 ], !dbg !2592
call void @llvm.dbg.value(metadata i64 %.4, metadata !2553, metadata !DIExpression()), !dbg !2592
%130 = bitcast { i8*, i64 }* %28 to i8*, !dbg !2587
call void @llvm.memset.p0i8.i64(i8* %130, i8 0, i64 16, i1 false), !dbg !2587
%131 = bitcast [2 x i64]* %29 to %..string*, !dbg !2587
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %131, align 8, !dbg !2587
%132 = load [2 x i64], [2 x i64]* %29, align 8, !dbg !2587
call void @runtime.slice_expr_error_lo_hi([2 x i64] %132, i32 164, i32 10, i64 %.4, i64 140, i64 140), !dbg !2587
%133 = getelementptr [140 x i8], [140 x i8]* %13, i64 0, i64 0, !dbg !2587
%134 = getelementptr i8, i8* %133, i64 %.4, !dbg !2587
%135 = sub i64 140, %.4, !dbg !2587
%136 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %30, i32 0, i32 0, !dbg !2587
store i8* %134, i8** %136, align 8, !dbg !2587
%137 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %30, i32 0, i32 1, !dbg !2587
store i64 %135, i64* %137, align 8, !dbg !2587
%138 = bitcast { i8*, i64 }* %30 to i8*, !dbg !2587
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %130, i8* align 8 %138, i64 16, i1 false), !dbg !2587
%139 = bitcast { i8*, i64 }* %8 to [2 x i64]*, !dbg !2615
%140 = load [2 x i64], [2 x i64]* %139, align 8, !dbg !2615
%141 = bitcast { i8*, i64 }* %28 to [2 x i64]*, !dbg !2615
%142 = load [2 x i64], [2 x i64]* %141, align 8, !dbg !2615
%143 = call i64 @runtime.copy_slice-6928([2 x i64] %140, [2 x i64] %142), !dbg !2615
%144 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %28, i32 0, i32 1, !dbg !2588
%145 = load i64, i64* %144, align 8, !dbg !2588
%146 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %8, i32 0, i32 1, !dbg !2588
%147 = load i64, i64* %146, align 8, !dbg !2588
%148 = bitcast [2 x i64]* %31 to %..string*, !dbg !2588
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %148, align 8, !dbg !2588
%149 = load [2 x i64], [2 x i64]* %31, align 8, !dbg !2588
call void @runtime.slice_expr_error_lo_hi([2 x i64] %149, i32 166, i32 19, i64 0, i64 %145, i64 %147), !dbg !2588
%150 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %8, i32 0, i32 0, !dbg !2588
%151 = load i8*, i8** %150, align 8, !dbg !2588
%152 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %32, i32 0, i32 0, !dbg !2588
store i8* %151, i8** %152, align 8, !dbg !2588
%153 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %32, i32 0, i32 1, !dbg !2588
store i64 %145, i64* %153, align 8, !dbg !2588
%154 = bitcast { i8*, i64 }* %32 to %..string*, !dbg !2588
%155 = bitcast %..string* %154 to [2 x i64]*, !dbg !2588
%156 = load [2 x i64], [2 x i64]* %155, align 8, !dbg !2588
ret [2 x i64] %156, !dbg !2588
}
define internal [2 x i64] @os.file_size(i32 %0, i8* noalias nocapture nonnull %__.context_ptr) !dbg !2616 {
decls:
call void @llvm.dbg.declare(metadata %os.OS_Stat* %1, metadata !2622, metadata !DIExpression()), !dbg !2648
%1 = alloca %os.OS_Stat, align 8, !dbg !2648
%2 = alloca { %os.OS_Stat, i32 }, align 8, !dbg !2648
%3 = alloca { i64, i32 }, align 8, !dbg !2649
%4 = alloca { i64, i32 }, align 8, !dbg !2652
call void @llvm.dbg.value(metadata i32 %0, metadata !2620, metadata !DIExpression()), !dbg !2653
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !2621, metadata !DIExpression()), !dbg !2654
%5 = bitcast %os.OS_Stat* %1 to i8*, !dbg !2648
call void @llvm.memset.p0i8.i64(i8* %5, i8 0, i64 144, i1 false), !dbg !2648
call void @llvm.dbg.value(metadata i32 0, metadata !2647, metadata !DIExpression()), !dbg !2655
%6 = bitcast { %os.OS_Stat, i32 }* %2 to i8*, !dbg !2648
call void @llvm.memset.p0i8.i64(i8* %6, i8 0, i64 152, i1 false), !dbg !2648
call void @os._fstat-1332({ %os.OS_Stat, i32 }* %2, i32 %0, i8* %__.context_ptr), !dbg !2648
%7 = getelementptr inbounds { %os.OS_Stat, i32 }, { %os.OS_Stat, i32 }* %2, i32 0, i32 0, !dbg !2648
%8 = getelementptr inbounds { %os.OS_Stat, i32 }, { %os.OS_Stat, i32 }* %2, i32 0, i32 1, !dbg !2648
%9 = load i32, i32* %8, align 4, !dbg !2648
%10 = bitcast %os.OS_Stat* %7 to i8*, !dbg !2648
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %5, i8* align 8 %10, i64 144, i1 false), !dbg !2648
call void @llvm.dbg.value(metadata i32 %9, metadata !2647, metadata !DIExpression()), !dbg !2655
%11 = icmp ne i32 %9, 0, !dbg !2656
br i1 %11, label %if.then, label %if.done, !dbg !2656
if.then: ; preds = %decls
%12 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %3, i32 0, i32 0, !dbg !2649
%13 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %3, i32 0, i32 1, !dbg !2649
store i64 0, i64* %12, align 8, !dbg !2649
store i32 %9, i32* %13, align 4, !dbg !2649
%14 = bitcast { i64, i32 }* %3 to [2 x i64]*, !dbg !2649
%15 = load [2 x i64], [2 x i64]* %14, align 8, !dbg !2649
ret [2 x i64] %15, !dbg !2649
if.done: ; preds = %decls
%16 = getelementptr inbounds %os.OS_Stat, %os.OS_Stat* %1, i32 0, i32 8, !dbg !2652
%17 = load i64, i64* %16, align 8, !dbg !2652
%18 = icmp sgt i64 %17, 0, !dbg !2652
%19 = select i1 %18, i64 %17, i64 0, !dbg !2652
%20 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %4, i32 0, i32 0, !dbg !2652
%21 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %4, i32 0, i32 1, !dbg !2652
store i64 %19, i64* %20, align 8, !dbg !2652
store i32 0, i32* %21, align 4, !dbg !2652
%22 = bitcast { i64, i32 }* %4 to [2 x i64]*, !dbg !2652
%23 = load [2 x i64], [2 x i64]* %22, align 8, !dbg !2652
ret [2 x i64] %23, !dbg !2652
}
define dso_local i8 @runtime.__dynamic_map_hash_equal(%runtime.Map_Header* %0, [2 x i64] %1, [2 x i64] %2) !dbg !2657 {
decls:
%3 = alloca %runtime.Map_Hash, align 8
call void @llvm.dbg.declare(metadata %runtime.Map_Hash* %4, metadata !2661, metadata !DIExpression()), !dbg !2663
%4 = alloca %runtime.Map_Hash, align 8
%5 = alloca %runtime.Map_Hash, align 8
call void @llvm.dbg.declare(metadata %runtime.Map_Hash* %6, metadata !2662, metadata !DIExpression()), !dbg !2664
%6 = alloca %runtime.Map_Hash, align 8
%7 = bitcast %runtime.Map_Hash* %3 to [2 x i64]*
store [2 x i64] %1, [2 x i64]* %7, align 8
%8 = bitcast %runtime.Map_Hash* %4 to i8*
%9 = bitcast %runtime.Map_Hash* %3 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %8, i8* align 8 %9, i64 16, i1 false)
%10 = bitcast %runtime.Map_Hash* %5 to [2 x i64]*
store [2 x i64] %2, [2 x i64]* %10, align 8
%11 = bitcast %runtime.Map_Hash* %6 to i8*
%12 = bitcast %runtime.Map_Hash* %5 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %11, i8* align 8 %12, i64 16, i1 false)
%13 = getelementptr inbounds %runtime.Map_Hash, %runtime.Map_Hash* %4, i32 0, i32 0, !dbg !2665
%14 = load i64, i64* %13, align 8, !dbg !2665
%15 = getelementptr inbounds %runtime.Map_Hash, %runtime.Map_Hash* %6, i32 0, i32 0, !dbg !2665
%16 = load i64, i64* %15, align 8, !dbg !2665
%17 = icmp eq i64 %14, %16, !dbg !2665
br i1 %17, label %if.then, label %if.done, !dbg !2665
if.then: ; preds = %decls
%18 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 1, !dbg !2667
%19 = load i8 (i8*, i8*)*, i8 (i8*, i8*)** %18, align 8, !dbg !2667
%20 = getelementptr inbounds %runtime.Map_Hash, %runtime.Map_Hash* %4, i32 0, i32 1, !dbg !2667
%21 = load i8*, i8** %20, align 8, !dbg !2667
%22 = getelementptr inbounds %runtime.Map_Hash, %runtime.Map_Hash* %6, i32 0, i32 1, !dbg !2667
%23 = load i8*, i8** %22, align 8, !dbg !2667
%24 = call i8 %19(i8* %21, i8* %23), !dbg !2667
ret i8 %24, !dbg !2667
if.done: ; preds = %decls
ret i8 0, !dbg !2670
}
define dso_local void @runtime.__dynamic_map_find(%runtime.Map_Find_Result* noalias sret %agg.result, %runtime.Map_Header* %0, [2 x i64] %1, i8* noalias nocapture nonnull %__.context_ptr) !dbg !2671 {
decls:
%2 = alloca %runtime.Map_Hash, align 8
call void @llvm.dbg.declare(metadata %runtime.Map_Hash* %3, metadata !2675, metadata !DIExpression()), !dbg !2688
%3 = alloca %runtime.Map_Hash, align 8
call void @llvm.dbg.declare(metadata %runtime.Map_Find_Result* %4, metadata !2677, metadata !DIExpression()), !dbg !2689
%4 = alloca %runtime.Map_Find_Result, align 8, !dbg !2689
call void @llvm.dbg.declare(metadata %runtime.Map_Hash* %5, metadata !2687, metadata !DIExpression()), !dbg !2690
%5 = alloca %runtime.Map_Hash, align 8, !dbg !2690
%6 = alloca %runtime.Map_Hash, align 8, !dbg !2690
%7 = bitcast %runtime.Map_Hash* %2 to [2 x i64]*
store [2 x i64] %1, [2 x i64]* %7, align 8
%8 = bitcast %runtime.Map_Hash* %3 to i8*
%9 = bitcast %runtime.Map_Hash* %2 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %8, i8* align 8 %9, i64 16, i1 false)
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !2676, metadata !DIExpression()), !dbg !2691
%10 = bitcast %runtime.Map_Find_Result* %4 to i8*, !dbg !2689
call void @llvm.memset.p0i8.i64(i8* %10, i8 0, i64 24, i1 false), !dbg !2689
call void @llvm.memset.p0i8.i64(i8* align 8 %10, i8 -1, i64 24, i1 false), !dbg !2689
call void @llvm.dbg.value(metadata i64 0, metadata !2679, metadata !DIExpression()), !dbg !2692
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %11, metadata !2681, metadata !DIExpression()), !dbg !2693
%11 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 0, !dbg !2694
%12 = load %runtime.Raw_Map*, %runtime.Raw_Map** %11, align 8, !dbg !2694
%13 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %12, i32 0, i32 0, !dbg !2694
%14 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %13, i32 0, i32 1, !dbg !2694
%15 = load i64, i64* %14, align 8, !dbg !2694
call void @llvm.dbg.value(metadata i64 %15, metadata !2679, metadata !DIExpression()), !dbg !2692
%16 = icmp ugt i64 %15, 0, !dbg !2695
br i1 %16, label %if.then, label %if.done2, !dbg !2695
if.then: ; preds = %decls
%17 = getelementptr inbounds %runtime.Map_Find_Result, %runtime.Map_Find_Result* %4, i32 0, i32 0, !dbg !2696
%18 = getelementptr inbounds %runtime.Map_Hash, %runtime.Map_Hash* %3, i32 0, i32 0, !dbg !2696
%19 = load i64, i64* %18, align 8, !dbg !2696
%20 = urem i64 %19, %15, !dbg !2696
store i64 %20, i64* %17, align 8, !dbg !2696
%21 = getelementptr inbounds %runtime.Map_Find_Result, %runtime.Map_Find_Result* %4, i32 0, i32 2, !dbg !2697
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %11, metadata !2682, metadata !DIExpression()), !dbg !2698
%22 = load %runtime.Raw_Map*, %runtime.Raw_Map** %11, align 8, !dbg !2697
%23 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %22, i32 0, i32 0, !dbg !2697
%24 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %23, i32 0, i32 0, !dbg !2697
%25 = load i64*, i64** %24, align 8, !dbg !2697
%26 = getelementptr i64, i64* %25, i64 %20, !dbg !2697
%27 = load i64, i64* %26, align 8, !dbg !2697
store i64 %27, i64* %21, align 8, !dbg !2697
br label %for.loop, !dbg !2699
for.loop: ; preds = %if.done, %if.then
%28 = load i64, i64* %21, align 8, !dbg !2699
%29 = icmp sge i64 %28, 0, !dbg !2699
br i1 %29, label %for.body, label %if.done2, !dbg !2699
for.body: ; preds = %for.loop
call void @llvm.dbg.value(metadata %runtime.Map_Entry_Header* null, metadata !2684, metadata !DIExpression()), !dbg !2700
%30 = call %runtime.Map_Entry_Header* @runtime.__dynamic_map_get_entry(%runtime.Map_Header* %0, i64 %28, i8* %__.context_ptr), !dbg !2701
call void @llvm.dbg.value(metadata %runtime.Map_Entry_Header* %30, metadata !2684, metadata !DIExpression()), !dbg !2700
%31 = bitcast %runtime.Map_Hash* %5 to i8*, !dbg !2690
call void @llvm.memset.p0i8.i64(i8* %31, i8 0, i64 16, i1 false), !dbg !2690
%32 = call [2 x i64] @runtime.__get_map_hash_from_entry(%runtime.Map_Header* %0, %runtime.Map_Entry_Header* %30), !dbg !2690
%33 = bitcast %runtime.Map_Hash* %6 to [2 x i64]*, !dbg !2690
store [2 x i64] %32, [2 x i64]* %33, align 8, !dbg !2690
%34 = bitcast %runtime.Map_Hash* %6 to i8*, !dbg !2690
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %31, i8* align 8 %34, i64 16, i1 false), !dbg !2690
%35 = bitcast %runtime.Map_Hash* %5 to [2 x i64]*, !dbg !2702
%36 = load [2 x i64], [2 x i64]* %35, align 8, !dbg !2702
%37 = bitcast %runtime.Map_Hash* %3 to [2 x i64]*, !dbg !2702
%38 = load [2 x i64], [2 x i64]* %37, align 8, !dbg !2702
%39 = call i8 @runtime.__dynamic_map_hash_equal(%runtime.Map_Header* %0, [2 x i64] %36, [2 x i64] %38), !dbg !2702
%40 = trunc i8 %39 to i1, !dbg !2702
br i1 %40, label %if.then1, label %if.done, !dbg !2702
if.then1: ; preds = %for.body
%41 = bitcast %runtime.Map_Find_Result* %agg.result to i8*, !dbg !2703
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %41, i8* align 8 %10, i64 24, i1 false), !dbg !2703
ret void, !dbg !2703
if.done: ; preds = %for.body
%42 = getelementptr inbounds %runtime.Map_Find_Result, %runtime.Map_Find_Result* %4, i32 0, i32 1, !dbg !2706
%43 = load i64, i64* %21, align 8, !dbg !2706
store i64 %43, i64* %42, align 8, !dbg !2706
%44 = getelementptr inbounds %runtime.Map_Entry_Header, %runtime.Map_Entry_Header* %30, i32 0, i32 1, !dbg !2707
%45 = load i64, i64* %44, align 8, !dbg !2707
store i64 %45, i64* %21, align 8, !dbg !2707
br label %for.loop, !dbg !2699
if.done2: ; preds = %for.loop, %decls
%46 = bitcast %runtime.Map_Find_Result* %agg.result to i8*, !dbg !2708
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %46, i8* align 8 %10, i64 24, i1 false), !dbg !2708
ret void, !dbg !2708
}
define dso_local i64 @runtime.__dynamic_map_add_entry(%runtime.Map_Header* %0, [2 x i64] %1, %runtime.Source_Code_Location* %2, i8* noalias nocapture nonnull %__.context_ptr) !dbg !2709 {
decls:
%3 = alloca %runtime.Map_Hash, align 8
call void @llvm.dbg.declare(metadata %runtime.Map_Hash* %4, metadata !2713, metadata !DIExpression()), !dbg !2726
%4 = alloca %runtime.Map_Hash, align 8
%5 = bitcast %runtime.Map_Hash* %3 to [2 x i64]*
store [2 x i64] %1, [2 x i64]* %5, align 8
%6 = bitcast %runtime.Map_Hash* %4 to i8*
%7 = bitcast %runtime.Map_Hash* %3 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %6, i8* align 8 %7, i64 16, i1 false)
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !2714, metadata !DIExpression()), !dbg !2727
call void @llvm.dbg.value(metadata i64 0, metadata !2715, metadata !DIExpression()), !dbg !2728
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %8, metadata !2717, metadata !DIExpression()), !dbg !2729
%8 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 0, !dbg !2730
%9 = load %runtime.Raw_Map*, %runtime.Raw_Map** %8, align 8, !dbg !2730
%10 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %9, i32 0, i32 1, !dbg !2730
%11 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %10, i32 0, i32 1, !dbg !2730
%12 = load i64, i64* %11, align 8, !dbg !2730
call void @llvm.dbg.value(metadata i64 %12, metadata !2715, metadata !DIExpression()), !dbg !2728
call void @llvm.dbg.value(metadata i64 0, metadata !2718, metadata !DIExpression()), !dbg !2728
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %8, metadata !2717, metadata !DIExpression()), !dbg !2729
call void @llvm.dbg.declare(metadata i64* %13, metadata !2719, metadata !DIExpression()), !dbg !2729
%13 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 2, !dbg !2731
%14 = load i64, i64* %13, align 8, !dbg !2731
call void @llvm.dbg.declare(metadata i64* %15, metadata !2720, metadata !DIExpression()), !dbg !2729
%15 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 3, !dbg !2731
%16 = load i64, i64* %15, align 8, !dbg !2731
%17 = bitcast %runtime.Raw_Dynamic_Array* %10 to i8*, !dbg !2731
%18 = call i64 @runtime.__dynamic_array_append_nothing(i8* %17, i64 %14, i64 %16, %runtime.Source_Code_Location* %2, i8* %__.context_ptr), !dbg !2731
call void @llvm.dbg.value(metadata i64 %18, metadata !2718, metadata !DIExpression()), !dbg !2728
%19 = icmp ne i64 %18, %12, !dbg !2732
br i1 %19, label %if.then, label %if.done, !dbg !2732
if.then: ; preds = %decls
call void @llvm.dbg.value(metadata %runtime.Map_Entry_Header* null, metadata !2721, metadata !DIExpression()), !dbg !2733
%20 = sub i64 %18, 1, !dbg !2734
%21 = call %runtime.Map_Entry_Header* @runtime.__dynamic_map_get_entry(%runtime.Map_Header* %0, i64 %20, i8* %__.context_ptr), !dbg !2734
call void @llvm.dbg.value(metadata %runtime.Map_Entry_Header* %21, metadata !2721, metadata !DIExpression()), !dbg !2733
%22 = getelementptr inbounds %runtime.Map_Entry_Header, %runtime.Map_Entry_Header* %21, i32 0, i32 0, !dbg !2735
%23 = getelementptr inbounds %runtime.Map_Hash, %runtime.Map_Hash* %4, i32 0, i32 0, !dbg !2735
%24 = load i64, i64* %23, align 8, !dbg !2735
store i64 %24, i64* %22, align 8, !dbg !2735
%25 = ptrtoint %runtime.Map_Entry_Header* %21 to i64, !dbg !2736
call void @llvm.dbg.declare(metadata i64* %26, metadata !2724, metadata !DIExpression()), !dbg !2737
%26 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 4, !dbg !2736
%27 = load i64, i64* %26, align 8, !dbg !2736
%28 = add i64 %25, %27, !dbg !2736
%29 = inttoptr i64 %28 to i8*, !dbg !2736
%30 = getelementptr inbounds %runtime.Map_Hash, %runtime.Map_Hash* %4, i32 0, i32 1, !dbg !2736
%31 = load i8*, i8** %30, align 8, !dbg !2736
call void @llvm.dbg.declare(metadata i64* %32, metadata !2725, metadata !DIExpression()), !dbg !2737
%32 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 5, !dbg !2736
%33 = load i64, i64* %32, align 8, !dbg !2736
%34 = call i8* @runtime.mem_copy(i8* %29, i8* %31, i64 %33), !dbg !2736
%35 = getelementptr inbounds %runtime.Map_Entry_Header, %runtime.Map_Entry_Header* %21, i32 0, i32 1, !dbg !2738
store i64 -1, i64* %35, align 8, !dbg !2738
br label %if.done, !dbg !2732
if.done: ; preds = %if.then, %decls
ret i64 %12, !dbg !2739
}
define dso_local %runtime.Map_Entry_Header* @runtime.__dynamic_map_get_entry(%runtime.Map_Header* %0, i64 %1, i8* noalias nocapture nonnull %__.context_ptr) !dbg !2740 {
decls:
%2 = alloca [2 x i64], align 8, !dbg !2749
%3 = alloca %runtime.Source_Code_Location, align 8, !dbg !2749
call void @llvm.dbg.value(metadata i64 %1, metadata !2744, metadata !DIExpression()), !dbg !2750
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !2745, metadata !DIExpression()), !dbg !2751
%4 = icmp sle i64 0, %1, !dbg !2749
br i1 %4, label %logical.cmp.rhs, label %logical.cmp.done, !dbg !2749
logical.cmp.rhs: ; preds = %decls
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %5, metadata !2746, metadata !DIExpression()), !dbg !2752
%5 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 0, !dbg !2749
%6 = load %runtime.Raw_Map*, %runtime.Raw_Map** %5, align 8, !dbg !2749
%7 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %6, i32 0, i32 1, !dbg !2749
%8 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %7, i32 0, i32 1, !dbg !2749
%9 = load i64, i64* %8, align 8, !dbg !2749
%10 = icmp slt i64 %1, %9, !dbg !2749
%11 = zext i1 %10 to i8, !dbg !2749
br label %logical.cmp.done, !dbg !2749
logical.cmp.done: ; preds = %logical.cmp.rhs, %decls
%12 = phi i8 [ 0, %decls ], [ %11, %logical.cmp.rhs ], !dbg !2749
%13 = icmp ne i8 %12, 0, !dbg !2749
%14 = bitcast [2 x i64]* %2 to %..string*, !dbg !2749
%15 = bitcast %..string* %14 to i8*, !dbg !2749
call void @llvm.memset.p0i8.i64(i8* align 8 %15, i8 0, i64 16, i1 false), !dbg !2749
%16 = load [2 x i64], [2 x i64]* %2, align 8, !dbg !2749
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([67 x i8], [67 x i8]* @"csbs$90", i64 0, i64 0), i64 66 }, i32 354, i32 2, %..string { i8* getelementptr inbounds ([24 x i8], [24 x i8]* @"csbs$9a", i64 0, i64 0), i64 23 } }, %runtime.Source_Code_Location* %3, align 8, !dbg !2749
call void @runtime.assert(i1 %13, [2 x i64] %16, %runtime.Source_Code_Location* %3, i8* %__.context_ptr), !dbg !2749
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %17, metadata !2746, metadata !DIExpression()), !dbg !2752
%17 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 0, !dbg !2753
%18 = load %runtime.Raw_Map*, %runtime.Raw_Map** %17, align 8, !dbg !2753
%19 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %18, i32 0, i32 1, !dbg !2753
%20 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %19, i32 0, i32 0, !dbg !2753
%21 = load i8*, i8** %20, align 8, !dbg !2753
%22 = ptrtoint i8* %21 to i64, !dbg !2753
call void @llvm.dbg.declare(metadata i64* %23, metadata !2748, metadata !DIExpression()), !dbg !2752
%23 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 2, !dbg !2753
%24 = load i64, i64* %23, align 8, !dbg !2753
%25 = mul i64 %1, %24, !dbg !2753
%26 = add i64 %22, %25, !dbg !2753
%27 = inttoptr i64 %26 to %runtime.Map_Entry_Header*, !dbg !2753
ret %runtime.Map_Entry_Header* %27, !dbg !2753
}
; Function Attrs: nounwind
define dso_local void @runtime.__dynamic_map_copy_entry(%runtime.Map_Header* %0, %runtime.Map_Entry_Header* %1, %runtime.Map_Entry_Header* %2) #0 !dbg !2754 {
decls:
call void @llvm.dbg.value(metadata %runtime.Map_Entry_Header* %1, metadata !2758, metadata !DIExpression()), !dbg !2760
call void @llvm.dbg.value(metadata %runtime.Map_Entry_Header* %2, metadata !2759, metadata !DIExpression()), !dbg !2760
%3 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 2, !dbg !2761
%4 = load i64, i64* %3, align 8, !dbg !2761
%5 = bitcast %runtime.Map_Entry_Header* %1 to i8*, !dbg !2761
%6 = bitcast %runtime.Map_Entry_Header* %2 to i8*, !dbg !2761
%7 = call i8* @runtime.mem_copy(i8* %5, i8* %6, i64 %4), !dbg !2761
ret void, !dbg !2763
}
define internal void @os._fstat-1332({ %os.OS_Stat, i32 }* noalias sret %agg.result, i32 %0, i8* noalias nocapture nonnull %__.context_ptr) !dbg !2764 {
decls:
call void @llvm.dbg.declare(metadata %os.OS_Stat* %1, metadata !2774, metadata !DIExpression()), !dbg !2777
%1 = alloca %os.OS_Stat, align 8, !dbg !2777
call void @llvm.dbg.value(metadata i32 %0, metadata !2772, metadata !DIExpression()), !dbg !2778
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !2773, metadata !DIExpression()), !dbg !2779
%2 = bitcast %os.OS_Stat* %1 to i8*, !dbg !2777
call void @llvm.memset.p0i8.i64(i8* %2, i8 0, i64 144, i1 false), !dbg !2777
call void @llvm.dbg.value(metadata i32 0, metadata !2776, metadata !DIExpression()), !dbg !2780
%3 = call i32 @fstat(i32 %0, %os.OS_Stat* %1), !dbg !2781
call void @llvm.dbg.value(metadata i32 %3, metadata !2776, metadata !DIExpression()), !dbg !2780
%4 = icmp eq i32 %3, -1, !dbg !2782
%5 = getelementptr inbounds { %os.OS_Stat, i32 }, { %os.OS_Stat, i32 }* %agg.result, i32 0, i32 0, !dbg !2780
br i1 %4, label %if.then, label %if.done, !dbg !2782
if.then: ; preds = %decls
%6 = bitcast %os.OS_Stat* %5 to i8*, !dbg !2783
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %6, i8* align 8 %2, i64 144, i1 false), !dbg !2783
%7 = call i64 @os.get_last_error(i8* %__.context_ptr), !dbg !2783
%8 = trunc i64 %7 to i32, !dbg !2783
%9 = getelementptr inbounds { %os.OS_Stat, i32 }, { %os.OS_Stat, i32 }* %agg.result, i32 0, i32 1, !dbg !2783
store i32 %8, i32* %9, align 4, !dbg !2783
ret void, !dbg !2783
if.done: ; preds = %decls
%10 = getelementptr inbounds { %os.OS_Stat, i32 }, { %os.OS_Stat, i32 }* %agg.result, i32 0, i32 1, !dbg !2786
%11 = bitcast %os.OS_Stat* %5 to i8*, !dbg !2786
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %11, i8* align 8 %2, i64 144, i1 false), !dbg !2786
store i32 0, i32* %10, align 4, !dbg !2786
ret void, !dbg !2786
}
; Function Attrs: noreturn nounwind
define dso_local void @runtime.bounds_trap() #3 !dbg !2787 {
decls:
call void @llvm.trap(), !dbg !2790
unreachable, !dbg !2792
}
; Function Attrs: noreturn nounwind
define dso_local void @runtime.type_assertion_trap() #3 !dbg !2793 {
decls:
call void @llvm.trap(), !dbg !2794
unreachable, !dbg !2796
}
define dso_local void @runtime.bounds_check_error([2 x i64] %0, i32 %1, i32 %2, i64 %3, i64 %4) !dbg !2797 {
decls:
%5 = alloca %..string, align 8
call void @llvm.dbg.declare(metadata %..string* %6, metadata !2801, metadata !DIExpression()), !dbg !2806
%6 = alloca %..string, align 8
%7 = bitcast %..string* %5 to [2 x i64]*
store [2 x i64] %0, [2 x i64]* %7, align 8
%8 = bitcast %..string* %6 to i8*
%9 = bitcast %..string* %5 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %8, i8* align 8 %9, i64 16, i1 false)
call void @llvm.dbg.value(metadata i32 %1, metadata !2802, metadata !DIExpression()), !dbg !2807
call void @llvm.dbg.value(metadata i32 %2, metadata !2803, metadata !DIExpression()), !dbg !2807
call void @llvm.dbg.value(metadata i64 %3, metadata !2804, metadata !DIExpression()), !dbg !2807
call void @llvm.dbg.value(metadata i64 %4, metadata !2805, metadata !DIExpression()), !dbg !2807
%10 = icmp sle i64 0, %3, !dbg !2808
br i1 %10, label %cmp.and, label %if.done, !dbg !2808
cmp.and: ; preds = %decls
%11 = icmp slt i64 %3, %4, !dbg !2808
br i1 %11, label %if.then, label %if.done, !dbg !2808
if.then: ; preds = %cmp.and
ret void, !dbg !2810
if.done: ; preds = %cmp.and, %decls
%12 = bitcast %..string* %6 to [2 x i64]*, !dbg !2813
%13 = load [2 x i64], [2 x i64]* %12, align 8, !dbg !2813
call void @runtime.bounds_check_error.handle_error-0([2 x i64] %13, i32 %1, i32 %2, i64 %3, i64 %4), !dbg !2813
ret void, !dbg !2814
}
; Function Attrs: noreturn
define dso_local void @runtime.slice_handle_error([2 x i64] %0, i32 %1, i32 %2, i64 %3, i64 %4, i64 %5) #1 !dbg !2815 {
decls:
%6 = alloca %..string, align 8
call void @llvm.dbg.declare(metadata %..string* undef, metadata !2819, metadata !DIExpression()), !dbg !2825
%7 = alloca %runtime.Source_Code_Location, align 8, !dbg !2826
%8 = alloca [2 x i64], align 8, !dbg !2828
%9 = alloca { i64, i64 }, align 8, !dbg !2828
%10 = alloca [2 x i64], align 8, !dbg !2829
%11 = alloca { i64, i64 }, align 8, !dbg !2829
%12 = alloca [2 x i64], align 8, !dbg !2830
%13 = alloca { i64, i64 }, align 8, !dbg !2830
%14 = alloca { i64, i64 }, align 8, !dbg !2831
%15 = bitcast %..string* %6 to [2 x i64]*
store [2 x i64] %0, [2 x i64]* %15, align 8
%16 = bitcast %..string* %6 to i8*
%17 = bitcast %runtime.Source_Code_Location* %7 to %..string*
%18 = bitcast %..string* %17 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %18, i8* align 8 %16, i64 16, i1 false)
call void @llvm.dbg.value(metadata i32 %1, metadata !2820, metadata !DIExpression()), !dbg !2832
call void @llvm.dbg.value(metadata i32 %2, metadata !2821, metadata !DIExpression()), !dbg !2832
call void @llvm.dbg.value(metadata i64 %3, metadata !2822, metadata !DIExpression()), !dbg !2832
call void @llvm.dbg.value(metadata i64 %4, metadata !2823, metadata !DIExpression()), !dbg !2832
call void @llvm.dbg.value(metadata i64 %5, metadata !2824, metadata !DIExpression()), !dbg !2832
%19 = getelementptr inbounds %runtime.Source_Code_Location, %runtime.Source_Code_Location* %7, i32 0, i32 0, !dbg !2826
%20 = bitcast %..string* %19 to i8*, !dbg !2826
%21 = getelementptr i8, i8* %20, i64 16, !dbg !2826
call void @llvm.memset.p0i8.i64(i8* align 8 %21, i8 0, i64 24, i1 false), !dbg !2826
%22 = getelementptr inbounds %runtime.Source_Code_Location, %runtime.Source_Code_Location* %7, i32 0, i32 1, !dbg !2826
store i32 %1, i32* %22, align 4, !dbg !2826
%23 = getelementptr inbounds %runtime.Source_Code_Location, %runtime.Source_Code_Location* %7, i32 0, i32 2, !dbg !2826
store i32 %2, i32* %23, align 4, !dbg !2826
call void @runtime.print_caller_location(%runtime.Source_Code_Location* %7), !dbg !2826
%24 = bitcast [2 x i64]* %8 to %..string*, !dbg !2828
store %..string { i8* getelementptr inbounds ([25 x i8], [25 x i8]* @"csbs$9b", i64 0, i64 0), i64 24 }, %..string* %24, align 8, !dbg !2828
%25 = load [2 x i64], [2 x i64]* %8, align 8, !dbg !2828
%26 = call [2 x i64] @runtime.print_string([2 x i64] %25), !dbg !2828
%27 = bitcast { i64, i64 }* %9 to [2 x i64]*, !dbg !2828
store [2 x i64] %26, [2 x i64]* %27, align 8, !dbg !2828
call void @runtime.print_i64(i64 %3), !dbg !2833
%28 = bitcast [2 x i64]* %10 to %..string*, !dbg !2829
store %..string { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"csbs$9c", i64 0, i64 0), i64 1 }, %..string* %28, align 8, !dbg !2829
%29 = load [2 x i64], [2 x i64]* %10, align 8, !dbg !2829
%30 = call [2 x i64] @runtime.print_string([2 x i64] %29), !dbg !2829
%31 = bitcast { i64, i64 }* %11 to [2 x i64]*, !dbg !2829
store [2 x i64] %30, [2 x i64]* %31, align 8, !dbg !2829
call void @runtime.print_i64(i64 %4), !dbg !2834
%32 = bitcast [2 x i64]* %12 to %..string*, !dbg !2830
store %..string { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"csbs$9c", i64 0, i64 0), i64 1 }, %..string* %32, align 8, !dbg !2830
%33 = load [2 x i64], [2 x i64]* %12, align 8, !dbg !2830
%34 = call [2 x i64] @runtime.print_string([2 x i64] %33), !dbg !2830
%35 = bitcast { i64, i64 }* %13 to [2 x i64]*, !dbg !2830
store [2 x i64] %34, [2 x i64]* %35, align 8, !dbg !2830
call void @runtime.print_i64(i64 %5), !dbg !2835
%36 = call [2 x i64] @runtime.print_byte(i8 10), !dbg !2831
%37 = bitcast { i64, i64 }* %14 to [2 x i64]*, !dbg !2831
store [2 x i64] %36, [2 x i64]* %37, align 8, !dbg !2831
call void @runtime.bounds_trap(), !dbg !2836
unreachable, !dbg !2836
}
; Function Attrs: noreturn
define dso_local void @runtime.multi_pointer_slice_handle_error([2 x i64] %0, i32 %1, i32 %2, i64 %3, i64 %4) #1 !dbg !2837 {
decls:
%5 = alloca %..string, align 8
call void @llvm.dbg.declare(metadata %..string* undef, metadata !2840, metadata !DIExpression()), !dbg !2845
%6 = alloca %runtime.Source_Code_Location, align 8, !dbg !2846
%7 = alloca [2 x i64], align 8, !dbg !2848
%8 = alloca { i64, i64 }, align 8, !dbg !2848
%9 = alloca [2 x i64], align 8, !dbg !2849
%10 = alloca { i64, i64 }, align 8, !dbg !2849
%11 = alloca { i64, i64 }, align 8, !dbg !2850
%12 = bitcast %..string* %5 to [2 x i64]*
store [2 x i64] %0, [2 x i64]* %12, align 8
%13 = bitcast %..string* %5 to i8*
%14 = bitcast %runtime.Source_Code_Location* %6 to %..string*
%15 = bitcast %..string* %14 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %15, i8* align 8 %13, i64 16, i1 false)
call void @llvm.dbg.value(metadata i32 %1, metadata !2841, metadata !DIExpression()), !dbg !2851
call void @llvm.dbg.value(metadata i32 %2, metadata !2842, metadata !DIExpression()), !dbg !2851
call void @llvm.dbg.value(metadata i64 %3, metadata !2843, metadata !DIExpression()), !dbg !2851
call void @llvm.dbg.value(metadata i64 %4, metadata !2844, metadata !DIExpression()), !dbg !2851
%16 = getelementptr inbounds %runtime.Source_Code_Location, %runtime.Source_Code_Location* %6, i32 0, i32 0, !dbg !2846
%17 = bitcast %..string* %16 to i8*, !dbg !2846
%18 = getelementptr i8, i8* %17, i64 16, !dbg !2846
call void @llvm.memset.p0i8.i64(i8* align 8 %18, i8 0, i64 24, i1 false), !dbg !2846
%19 = getelementptr inbounds %runtime.Source_Code_Location, %runtime.Source_Code_Location* %6, i32 0, i32 1, !dbg !2846
store i32 %1, i32* %19, align 4, !dbg !2846
%20 = getelementptr inbounds %runtime.Source_Code_Location, %runtime.Source_Code_Location* %6, i32 0, i32 2, !dbg !2846
store i32 %2, i32* %20, align 4, !dbg !2846
call void @runtime.print_caller_location(%runtime.Source_Code_Location* %6), !dbg !2846
%21 = bitcast [2 x i64]* %7 to %..string*, !dbg !2848
store %..string { i8* getelementptr inbounds ([25 x i8], [25 x i8]* @"csbs$9b", i64 0, i64 0), i64 24 }, %..string* %21, align 8, !dbg !2848
%22 = load [2 x i64], [2 x i64]* %7, align 8, !dbg !2848
%23 = call [2 x i64] @runtime.print_string([2 x i64] %22), !dbg !2848
%24 = bitcast { i64, i64 }* %8 to [2 x i64]*, !dbg !2848
store [2 x i64] %23, [2 x i64]* %24, align 8, !dbg !2848
call void @runtime.print_i64(i64 %3), !dbg !2852
%25 = bitcast [2 x i64]* %9 to %..string*, !dbg !2849
store %..string { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"csbs$9c", i64 0, i64 0), i64 1 }, %..string* %25, align 8, !dbg !2849
%26 = load [2 x i64], [2 x i64]* %9, align 8, !dbg !2849
%27 = call [2 x i64] @runtime.print_string([2 x i64] %26), !dbg !2849
%28 = bitcast { i64, i64 }* %10 to [2 x i64]*, !dbg !2849
store [2 x i64] %27, [2 x i64]* %28, align 8, !dbg !2849
call void @runtime.print_i64(i64 %4), !dbg !2853
%29 = call [2 x i64] @runtime.print_byte(i8 10), !dbg !2850
%30 = bitcast { i64, i64 }* %11 to [2 x i64]*, !dbg !2850
store [2 x i64] %29, [2 x i64]* %30, align 8, !dbg !2850
call void @runtime.bounds_trap(), !dbg !2854
unreachable, !dbg !2854
}
define dso_local void @runtime.multi_pointer_slice_expr_error([2 x i64] %0, i32 %1, i32 %2, i64 %3, i64 %4) !dbg !2855 {
decls:
%5 = alloca %..string, align 8
call void @llvm.dbg.declare(metadata %..string* %6, metadata !2857, metadata !DIExpression()), !dbg !2862
%6 = alloca %..string, align 8
%7 = bitcast %..string* %5 to [2 x i64]*
store [2 x i64] %0, [2 x i64]* %7, align 8
%8 = bitcast %..string* %6 to i8*
%9 = bitcast %..string* %5 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %8, i8* align 8 %9, i64 16, i1 false)
call void @llvm.dbg.value(metadata i32 %1, metadata !2858, metadata !DIExpression()), !dbg !2863
call void @llvm.dbg.value(metadata i32 %2, metadata !2859, metadata !DIExpression()), !dbg !2863
call void @llvm.dbg.value(metadata i64 %3, metadata !2860, metadata !DIExpression()), !dbg !2863
call void @llvm.dbg.value(metadata i64 %4, metadata !2861, metadata !DIExpression()), !dbg !2863
%10 = icmp sle i64 %3, %4, !dbg !2864
br i1 %10, label %if.then, label %if.done, !dbg !2864
if.then: ; preds = %decls
ret void, !dbg !2866
if.done: ; preds = %decls
%11 = bitcast %..string* %6 to [2 x i64]*, !dbg !2869
%12 = load [2 x i64], [2 x i64]* %11, align 8, !dbg !2869
call void @runtime.multi_pointer_slice_handle_error([2 x i64] %12, i32 %1, i32 %2, i64 %3, i64 %4), !dbg !2869
unreachable, !dbg !2869
}
define dso_local void @runtime.slice_expr_error_hi([2 x i64] %0, i32 %1, i32 %2, i64 %3, i64 %4) !dbg !2870 {
decls:
%5 = alloca %..string, align 8
call void @llvm.dbg.declare(metadata %..string* %6, metadata !2872, metadata !DIExpression()), !dbg !2877
%6 = alloca %..string, align 8
%7 = bitcast %..string* %5 to [2 x i64]*
store [2 x i64] %0, [2 x i64]* %7, align 8
%8 = bitcast %..string* %6 to i8*
%9 = bitcast %..string* %5 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %8, i8* align 8 %9, i64 16, i1 false)
call void @llvm.dbg.value(metadata i32 %1, metadata !2873, metadata !DIExpression()), !dbg !2878
call void @llvm.dbg.value(metadata i32 %2, metadata !2874, metadata !DIExpression()), !dbg !2878
call void @llvm.dbg.value(metadata i64 %3, metadata !2875, metadata !DIExpression()), !dbg !2878
call void @llvm.dbg.value(metadata i64 %4, metadata !2876, metadata !DIExpression()), !dbg !2878
%10 = icmp sle i64 0, %3, !dbg !2879
br i1 %10, label %cmp.and, label %if.done, !dbg !2879
cmp.and: ; preds = %decls
%11 = icmp sle i64 %3, %4, !dbg !2879
br i1 %11, label %if.then, label %if.done, !dbg !2879
if.then: ; preds = %cmp.and
ret void, !dbg !2881
if.done: ; preds = %cmp.and, %decls
%12 = bitcast %..string* %6 to [2 x i64]*, !dbg !2884
%13 = load [2 x i64], [2 x i64]* %12, align 8, !dbg !2884
call void @runtime.slice_handle_error([2 x i64] %13, i32 %1, i32 %2, i64 0, i64 %3, i64 %4), !dbg !2884
unreachable, !dbg !2884
}
define dso_local void @runtime.slice_expr_error_lo_hi([2 x i64] %0, i32 %1, i32 %2, i64 %3, i64 %4, i64 %5) !dbg !2885 {
decls:
%6 = alloca %..string, align 8
call void @llvm.dbg.declare(metadata %..string* %7, metadata !2888, metadata !DIExpression()), !dbg !2894
%7 = alloca %..string, align 8
%8 = bitcast %..string* %6 to [2 x i64]*
store [2 x i64] %0, [2 x i64]* %8, align 8
%9 = bitcast %..string* %7 to i8*
%10 = bitcast %..string* %6 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %9, i8* align 8 %10, i64 16, i1 false)
call void @llvm.dbg.value(metadata i32 %1, metadata !2889, metadata !DIExpression()), !dbg !2895
call void @llvm.dbg.value(metadata i32 %2, metadata !2890, metadata !DIExpression()), !dbg !2895
call void @llvm.dbg.value(metadata i64 %3, metadata !2891, metadata !DIExpression()), !dbg !2895
call void @llvm.dbg.value(metadata i64 %4, metadata !2892, metadata !DIExpression()), !dbg !2895
call void @llvm.dbg.value(metadata i64 %5, metadata !2893, metadata !DIExpression()), !dbg !2895
%11 = icmp sle i64 0, %3, !dbg !2896
br i1 %11, label %cmp.and, label %if.done, !dbg !2896
cmp.and: ; preds = %decls
%12 = icmp sle i64 %3, %5, !dbg !2896
br i1 %12, label %cmp.and1, label %if.done, !dbg !2896
cmp.and1: ; preds = %cmp.and
%13 = icmp sle i64 %3, %4, !dbg !2896
br i1 %13, label %cmp.and2, label %if.done, !dbg !2896
cmp.and2: ; preds = %cmp.and1
%14 = icmp sle i64 %4, %5, !dbg !2896
br i1 %14, label %if.then, label %if.done, !dbg !2896
if.then: ; preds = %cmp.and2
ret void, !dbg !2898
if.done: ; preds = %cmp.and2, %cmp.and1, %cmp.and, %decls
%15 = bitcast %..string* %7 to [2 x i64]*, !dbg !2901
%16 = load [2 x i64], [2 x i64]* %15, align 8, !dbg !2901
call void @runtime.slice_handle_error([2 x i64] %16, i32 %1, i32 %2, i64 %3, i64 %4, i64 %5), !dbg !2901
unreachable, !dbg !2901
}
define internal i8* @os.heap_alloc(i64 %0, i8* noalias nocapture nonnull %__.context_ptr) !dbg !2902 {
decls:
%1 = alloca [2 x i64], align 8, !dbg !2908
%2 = alloca %runtime.Source_Code_Location, align 8, !dbg !2908
call void @llvm.dbg.value(metadata i64 %0, metadata !2906, metadata !DIExpression()), !dbg !2910
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !2907, metadata !DIExpression()), !dbg !2911
%3 = icmp sge i64 %0, 0, !dbg !2908
%4 = bitcast [2 x i64]* %1 to %..string*, !dbg !2908
%5 = bitcast %..string* %4 to i8*, !dbg !2908
call void @llvm.memset.p0i8.i64(i8* align 8 %5, i8 0, i64 16, i1 false), !dbg !2908
%6 = load [2 x i64], [2 x i64]* %1, align 8, !dbg !2908
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([50 x i8], [50 x i8]* @"csbs$91", i64 0, i64 0), i64 49 }, i32 542, i32 2, %..string { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"csbs$9d", i64 0, i64 0), i64 10 } }, %runtime.Source_Code_Location* %2, align 8, !dbg !2908
call void @runtime.assert(i1 %3, [2 x i64] %6, %runtime.Source_Code_Location* %2, i8* %__.context_ptr), !dbg !2908
%7 = call i8* @calloc(i64 1, i64 %0), !dbg !2912
ret i8* %7, !dbg !2912
}
define internal [2 x i64] @strconv.append_float([2 x i64] %0, double %1, i8 %2, i64 %3, i64 %4, i8* noalias nocapture nonnull %__.context_ptr) !dbg !2913 {
decls:
%5 = alloca { i8*, i64 }, align 8
call void @llvm.dbg.declare(metadata { i8*, i64 }* %6, metadata !2918, metadata !DIExpression()), !dbg !2924
%6 = alloca { i8*, i64 }, align 8
%7 = alloca { i8*, i64 }, align 8, !dbg !2925
%8 = bitcast { i8*, i64 }* %5 to [2 x i64]*
store [2 x i64] %0, [2 x i64]* %8, align 8
%9 = bitcast { i8*, i64 }* %6 to i8*
%10 = bitcast { i8*, i64 }* %5 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %9, i8* align 8 %10, i64 16, i1 false)
call void @llvm.dbg.value(metadata double %1, metadata !2919, metadata !DIExpression()), !dbg !2927
call void @llvm.dbg.value(metadata i8 %2, metadata !2920, metadata !DIExpression()), !dbg !2927
call void @llvm.dbg.value(metadata i64 %3, metadata !2921, metadata !DIExpression()), !dbg !2927
call void @llvm.dbg.value(metadata i64 %4, metadata !2922, metadata !DIExpression()), !dbg !2927
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !2923, metadata !DIExpression()), !dbg !2928
%11 = bitcast { i8*, i64 }* %6 to [2 x i64]*, !dbg !2925
%12 = load [2 x i64], [2 x i64]* %11, align 8, !dbg !2925
%13 = call [2 x i64] @strconv.generic_ftoa([2 x i64] %12, double %1, i8 %2, i64 %3, i64 %4, i8* %__.context_ptr), !dbg !2925
%14 = bitcast { i8*, i64 }* %7 to [2 x i64]*, !dbg !2925
store [2 x i64] %13, [2 x i64]* %14, align 8, !dbg !2925
%15 = bitcast { i8*, i64 }* %7 to %..string*, !dbg !2925
%16 = bitcast %..string* %15 to [2 x i64]*, !dbg !2925
%17 = load [2 x i64], [2 x i64]* %16, align 8, !dbg !2925
ret [2 x i64] %17, !dbg !2925
}
define dso_local void @runtime.type_assertion_check(i1 zeroext %0, [2 x i64] %1, i32 %2, i32 %3, i64 %4, i64 %5) !dbg !2929 {
decls:
%6 = alloca %..string, align 8
call void @llvm.dbg.declare(metadata %..string* %7, metadata !2934, metadata !DIExpression()), !dbg !2939
%7 = alloca %..string, align 8
call void @llvm.dbg.value(metadata i8 undef, metadata !2933, metadata !DIExpression()), !dbg !2940
%8 = bitcast %..string* %6 to [2 x i64]*
store [2 x i64] %1, [2 x i64]* %8, align 8
%9 = bitcast %..string* %7 to i8*
%10 = bitcast %..string* %6 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %9, i8* align 8 %10, i64 16, i1 false)
call void @llvm.dbg.value(metadata i32 %2, metadata !2935, metadata !DIExpression()), !dbg !2940
call void @llvm.dbg.value(metadata i32 %3, metadata !2936, metadata !DIExpression()), !dbg !2940
call void @llvm.dbg.value(metadata i64 %4, metadata !2937, metadata !DIExpression()), !dbg !2940
call void @llvm.dbg.value(metadata i64 %5, metadata !2938, metadata !DIExpression()), !dbg !2940
br i1 %0, label %if.then, label %if.done, !dbg !2941
if.then: ; preds = %decls
ret void, !dbg !2943
if.done: ; preds = %decls
%11 = bitcast %..string* %7 to [2 x i64]*, !dbg !2946
%12 = load [2 x i64], [2 x i64]* %11, align 8, !dbg !2946
call void @runtime.type_assertion_check.handle_error-0([2 x i64] %12, i32 %2, i32 %3, i64 %4, i64 %5), !dbg !2946
unreachable
}
define dso_local void @runtime.type_assertion_check2(i1 zeroext %0, [2 x i64] %1, i32 %2, i32 %3, i64 %4, i64 %5, i8* %6) !dbg !2947 {
decls:
%7 = alloca %..string, align 8
call void @llvm.dbg.declare(metadata %..string* %8, metadata !2952, metadata !DIExpression()), !dbg !2958
%8 = alloca %..string, align 8
call void @llvm.dbg.value(metadata i8 undef, metadata !2951, metadata !DIExpression()), !dbg !2959
%9 = bitcast %..string* %7 to [2 x i64]*
store [2 x i64] %1, [2 x i64]* %9, align 8
%10 = bitcast %..string* %8 to i8*
%11 = bitcast %..string* %7 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %10, i8* align 8 %11, i64 16, i1 false)
call void @llvm.dbg.value(metadata i32 %2, metadata !2953, metadata !DIExpression()), !dbg !2959
call void @llvm.dbg.value(metadata i32 %3, metadata !2954, metadata !DIExpression()), !dbg !2959
call void @llvm.dbg.value(metadata i64 %4, metadata !2955, metadata !DIExpression()), !dbg !2959
call void @llvm.dbg.value(metadata i64 %5, metadata !2956, metadata !DIExpression()), !dbg !2959
call void @llvm.dbg.value(metadata i8* %6, metadata !2957, metadata !DIExpression()), !dbg !2959
br i1 %0, label %if.then, label %if.done, !dbg !2960
if.then: ; preds = %decls
ret void, !dbg !2962
if.done: ; preds = %decls
%12 = bitcast %..string* %8 to [2 x i64]*, !dbg !2965
%13 = load [2 x i64], [2 x i64]* %12, align 8, !dbg !2965
call void @runtime.type_assertion_check2.handle_error-1([2 x i64] %13, i32 %2, i32 %3, i64 %4, i64 %5, i8* %6), !dbg !2965
ret void, !dbg !2966
}
define internal i8* @os.heap_resize(i8* %0, i64 %1, i8* noalias nocapture nonnull %__.context_ptr) !dbg !2967 {
decls:
call void @llvm.dbg.value(metadata i8* %0, metadata !2971, metadata !DIExpression()), !dbg !2974
call void @llvm.dbg.value(metadata i64 %1, metadata !2972, metadata !DIExpression()), !dbg !2974
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !2973, metadata !DIExpression()), !dbg !2975
%2 = call i8* @realloc(i8* %0, i64 %1), !dbg !2976
ret i8* %2, !dbg !2976
}
define internal void @os.heap_free(i8* %0, i8* noalias nocapture nonnull %__.context_ptr) !dbg !2978 {
decls:
call void @llvm.dbg.value(metadata i8* %0, metadata !2982, metadata !DIExpression()), !dbg !2984
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !2983, metadata !DIExpression()), !dbg !2985
call void @free(i8* %0), !dbg !2986
ret void, !dbg !2985
}
; Function Attrs: alwaysinline
define dso_local void @runtime.make_slice_error_loc(%runtime.Source_Code_Location* %0, i64 %1) #4 !dbg !2988 {
decls:
%2 = alloca [2 x i64], align 8, !dbg !2993
%3 = alloca { i64, i64 }, align 8, !dbg !2993
%4 = alloca { i64, i64 }, align 8, !dbg !3000
call void @llvm.dbg.value(metadata i64 %1, metadata !2992, metadata !DIExpression()), !dbg !3001
%5 = icmp sle i64 0, %1, !dbg !3002
br i1 %5, label %if.then, label %if.done, !dbg !3002
if.then: ; preds = %decls
ret void, !dbg !3003
if.done: ; preds = %decls
%6 = bitcast [2 x i64]* %2 to i8*, !dbg !3006
call void @llvm.lifetime.start.p0i8(i64 16, i8* %6), !dbg !3006
%7 = bitcast { i64, i64 }* %3 to i8*, !dbg !3006
call void @llvm.lifetime.start.p0i8(i64 16, i8* %7), !dbg !3006
%8 = bitcast { i64, i64 }* %4 to i8*, !dbg !3006
call void @llvm.lifetime.start.p0i8(i64 16, i8* %8), !dbg !3006
call void @llvm.dbg.value(metadata i64 %1, metadata !2997, metadata !DIExpression()), !dbg !3006
call void @runtime.print_caller_location(%runtime.Source_Code_Location* %0), !dbg !3007
%9 = bitcast [2 x i64]* %2 to %..string*, !dbg !2993
store %..string { i8* getelementptr inbounds ([33 x i8], [33 x i8]* @"csbs$111", i64 0, i64 0), i64 32 }, %..string* %9, align 8, !dbg !2993
%10 = load [2 x i64], [2 x i64]* %2, align 8, !dbg !2993
%11 = call [2 x i64] @runtime.print_string([2 x i64] %10), !dbg !2993
%12 = bitcast { i64, i64 }* %3 to [2 x i64]*, !dbg !2993
store [2 x i64] %11, [2 x i64]* %12, align 8, !dbg !2993
call void @runtime.print_i64(i64 %1), !dbg !3008
%13 = call [2 x i64] @runtime.print_byte(i8 10), !dbg !3000
%14 = bitcast { i64, i64 }* %4 to [2 x i64]*, !dbg !3000
store [2 x i64] %13, [2 x i64]* %14, align 8, !dbg !3000
call void @runtime.bounds_trap(), !dbg !3009
unreachable, !dbg !3009
runtime.make_slice_error_loc.handle_error-0.exit: ; No predecessors!
ret void, !dbg !3010
}
; Function Attrs: alwaysinline
define dso_local void @runtime.make_dynamic_array_error_loc(%runtime.Source_Code_Location* %0, i64 %1, i64 %2) #4 !dbg !3011 {
decls:
%3 = alloca [2 x i64], align 8, !dbg !3017
%4 = alloca { i64, i64 }, align 8, !dbg !3017
%5 = alloca { i64, i64 }, align 8, !dbg !3025
%6 = alloca { i64, i64 }, align 8, !dbg !3026
call void @llvm.dbg.value(metadata i64 %1, metadata !3015, metadata !DIExpression()), !dbg !3027
call void @llvm.dbg.value(metadata i64 %2, metadata !3016, metadata !DIExpression()), !dbg !3027
%7 = icmp sle i64 0, %1, !dbg !3028
br i1 %7, label %cmp.and, label %if.done, !dbg !3028
cmp.and: ; preds = %decls
%8 = icmp sle i64 %1, %2, !dbg !3028
br i1 %8, label %if.then, label %if.done, !dbg !3028
if.then: ; preds = %cmp.and
ret void, !dbg !3029
if.done: ; preds = %cmp.and, %decls
%9 = bitcast [2 x i64]* %3 to i8*, !dbg !3032
call void @llvm.lifetime.start.p0i8(i64 16, i8* %9), !dbg !3032
%10 = bitcast { i64, i64 }* %4 to i8*, !dbg !3032
call void @llvm.lifetime.start.p0i8(i64 16, i8* %10), !dbg !3032
%11 = bitcast { i64, i64 }* %5 to i8*, !dbg !3032
call void @llvm.lifetime.start.p0i8(i64 16, i8* %11), !dbg !3032
%12 = bitcast { i64, i64 }* %6 to i8*, !dbg !3032
call void @llvm.lifetime.start.p0i8(i64 16, i8* %12), !dbg !3032
call void @llvm.dbg.value(metadata i64 %1, metadata !3021, metadata !DIExpression()), !dbg !3032
call void @llvm.dbg.value(metadata i64 %2, metadata !3022, metadata !DIExpression()), !dbg !3032
call void @runtime.print_caller_location(%runtime.Source_Code_Location* %0), !dbg !3033
%13 = bitcast [2 x i64]* %3 to %..string*, !dbg !3017
store %..string { i8* getelementptr inbounds ([45 x i8], [45 x i8]* @"csbs$112", i64 0, i64 0), i64 44 }, %..string* %13, align 8, !dbg !3017
%14 = load [2 x i64], [2 x i64]* %3, align 8, !dbg !3017
%15 = call [2 x i64] @runtime.print_string([2 x i64] %14), !dbg !3017
%16 = bitcast { i64, i64 }* %4 to [2 x i64]*, !dbg !3017
store [2 x i64] %15, [2 x i64]* %16, align 8, !dbg !3017
call void @runtime.print_i64(i64 %1), !dbg !3034
%17 = call [2 x i64] @runtime.print_byte(i8 58), !dbg !3025
%18 = bitcast { i64, i64 }* %5 to [2 x i64]*, !dbg !3025
store [2 x i64] %17, [2 x i64]* %18, align 8, !dbg !3025
call void @runtime.print_i64(i64 %2), !dbg !3035
%19 = call [2 x i64] @runtime.print_byte(i8 10), !dbg !3026
%20 = bitcast { i64, i64 }* %6 to [2 x i64]*, !dbg !3026
store [2 x i64] %19, [2 x i64]* %20, align 8, !dbg !3026
call void @runtime.bounds_trap(), !dbg !3036
unreachable, !dbg !3036
runtime.make_dynamic_array_error_loc.handle_error-0.exit: ; No predecessors!
ret void, !dbg !3037
}
; Function Attrs: alwaysinline
define dso_local void @runtime.bounds_check_error_loc(%runtime.Source_Code_Location* %0, i64 %1, i64 %2) #4 !dbg !3038 {
decls:
%3 = alloca %..string, align 8
%4 = alloca %..string, align 8
call void @llvm.dbg.value(metadata i64 %1, metadata !3040, metadata !DIExpression()), !dbg !3046
call void @llvm.dbg.value(metadata i64 %2, metadata !3041, metadata !DIExpression()), !dbg !3046
call void @llvm.dbg.declare(metadata %..string* %5, metadata !3042, metadata !DIExpression()), !dbg !3047
%5 = getelementptr inbounds %runtime.Source_Code_Location, %runtime.Source_Code_Location* %0, i32 0, i32 0, !dbg !3048
call void @llvm.dbg.declare(metadata i32* %6, metadata !3044, metadata !DIExpression()), !dbg !3047
%6 = getelementptr inbounds %runtime.Source_Code_Location, %runtime.Source_Code_Location* %0, i32 0, i32 1, !dbg !3048
%7 = load i32, i32* %6, align 4, !dbg !3048
call void @llvm.dbg.declare(metadata i32* %8, metadata !3045, metadata !DIExpression()), !dbg !3047
%8 = getelementptr inbounds %runtime.Source_Code_Location, %runtime.Source_Code_Location* %0, i32 0, i32 2, !dbg !3048
%9 = load i32, i32* %8, align 4, !dbg !3048
%10 = bitcast %..string* %5 to [2 x i64]*, !dbg !3048
%11 = load [2 x i64], [2 x i64]* %10, align 8, !dbg !3048
%12 = bitcast %..string* %3 to i8*, !dbg !3049
call void @llvm.lifetime.start.p0i8(i64 16, i8* %12), !dbg !3049
%13 = bitcast %..string* %4 to i8*, !dbg !3049
call void @llvm.lifetime.start.p0i8(i64 16, i8* %13), !dbg !3049
call void @llvm.dbg.declare(metadata !112, metadata !2801, metadata !DIExpression()), !dbg !3049
%14 = bitcast %..string* %3 to [2 x i64]*
store [2 x i64] %11, [2 x i64]* %14, align 8
%15 = bitcast %..string* %4 to i8*
%16 = bitcast %..string* %3 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %15, i8* align 8 %16, i64 16, i1 false)
call void @llvm.dbg.value(metadata i32 %7, metadata !2802, metadata !DIExpression()), !dbg !3051
call void @llvm.dbg.value(metadata i32 %9, metadata !2803, metadata !DIExpression()), !dbg !3051
call void @llvm.dbg.value(metadata i64 %1, metadata !2804, metadata !DIExpression()), !dbg !3051
call void @llvm.dbg.value(metadata i64 %2, metadata !2805, metadata !DIExpression()), !dbg !3051
%17 = icmp sle i64 0, %1, !dbg !3052
br i1 %17, label %cmp.and.i, label %if.done.i, !dbg !3052
cmp.and.i: ; preds = %decls
%18 = icmp slt i64 %1, %2, !dbg !3052
br i1 %18, label %if.then.i, label %if.done.i, !dbg !3052
if.then.i: ; preds = %cmp.and.i
%19 = bitcast %..string* %3 to i8*, !dbg !3053
call void @llvm.lifetime.end.p0i8(i64 16, i8* %19), !dbg !3053
%20 = bitcast %..string* %4 to i8*, !dbg !3053
call void @llvm.lifetime.end.p0i8(i64 16, i8* %20), !dbg !3053
br label %runtime.bounds_check_error.exit, !dbg !3053
if.done.i: ; preds = %cmp.and.i, %decls
%21 = bitcast %..string* %4 to [2 x i64]*, !dbg !3054
%22 = load [2 x i64], [2 x i64]* %21, align 8, !dbg !3054
call void @runtime.bounds_check_error.handle_error-0([2 x i64] %22, i32 %7, i32 %9, i64 %1, i64 %2), !dbg !3054
%23 = bitcast %..string* %3 to i8*, !dbg !3055
call void @llvm.lifetime.end.p0i8(i64 16, i8* %23), !dbg !3055
%24 = bitcast %..string* %4 to i8*, !dbg !3055
call void @llvm.lifetime.end.p0i8(i64 16, i8* %24), !dbg !3055
br label %runtime.bounds_check_error.exit, !dbg !3055
runtime.bounds_check_error.exit: ; preds = %if.done.i, %if.then.i
ret void, !dbg !3056
}
; Function Attrs: nounwind
define internal %runtime.Type_Info* @reflect.type_info_base(%runtime.Type_Info* %0, i8* noalias nocapture nonnull %__.context_ptr) #0 !dbg !3057 {
decls:
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Named* %1, metadata !3064, metadata !DIExpression()), !dbg !3068
%1 = alloca %runtime.Type_Info_Named, align 8, !dbg !3069
call void @llvm.dbg.value(metadata %runtime.Type_Info* %0, metadata !3060, metadata !DIExpression()), !dbg !3070
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !3061, metadata !DIExpression()), !dbg !3071
%2 = icmp eq %runtime.Type_Info* %0, null, !dbg !3072
br i1 %2, label %if.then, label %for.body, !dbg !3072
if.then: ; preds = %for.body, %decls
%merge = phi %runtime.Type_Info* [ null, %decls ], [ %.0, %for.body ]
ret %runtime.Type_Info* %merge, !dbg !3073
for.body: ; preds = %decls, %typeswitch.body
%.0 = phi %runtime.Type_Info* [ %9, %typeswitch.body ], [ %0, %decls ], !dbg !3076
call void @llvm.dbg.value(metadata %runtime.Type_Info* %.0, metadata !3062, metadata !DIExpression()), !dbg !3076
%3 = getelementptr inbounds %runtime.Type_Info, %runtime.Type_Info* %.0, i32 0, i32 4, !dbg !3069
%4 = bitcast { [0 x i64], [120 x i8], i64 }* %3 to i8*, !dbg !3069
%5 = getelementptr inbounds { [0 x i64], [120 x i8], i64 }, { [0 x i64], [120 x i8], i64 }* %3, i32 0, i32 2, !dbg !3069
%6 = load i64, i64* %5, align 8, !dbg !3069
%cond = icmp eq i64 %6, 1, !dbg !3069
br i1 %cond, label %typeswitch.body, label %if.then, !dbg !3069
typeswitch.body: ; preds = %for.body
%7 = bitcast %runtime.Type_Info_Named* %1 to i8*, !dbg !3069
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %7, i8* align 8 %4, i64 80, i1 false), !dbg !3069
%8 = getelementptr inbounds %runtime.Type_Info_Named, %runtime.Type_Info_Named* %1, i32 0, i32 1, !dbg !3077
%9 = load %runtime.Type_Info*, %runtime.Type_Info** %8, align 8, !dbg !3077
call void @llvm.dbg.value(metadata %runtime.Type_Info* %9, metadata !3062, metadata !DIExpression()), !dbg !3076
br label %for.body, !dbg !3078
}
; Function Attrs: alwaysinline nounwind
define dso_local i8 @runtime.is_power_of_two_int(i64 %0, i8* noalias nocapture nonnull %__.context_ptr) #2 !dbg !1269 {
decls:
call void @llvm.dbg.value(metadata i64 %0, metadata !1268, metadata !DIExpression()), !dbg !3079
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !1271, metadata !DIExpression()), !dbg !3080
%1 = icmp sle i64 %0, 0, !dbg !3081
br i1 %1, label %if.then, label %if.done, !dbg !3081
if.then: ; preds = %decls
ret i8 0, !dbg !3082
if.done: ; preds = %decls
%2 = sub i64 %0, 1, !dbg !3083
%3 = and i64 %0, %2, !dbg !3083
%4 = icmp eq i64 %3, 0, !dbg !3083
%5 = zext i1 %4 to i8, !dbg !3083
ret i8 %5, !dbg !3083
}
; Function Attrs: alwaysinline
define dso_local i64 @runtime.align_forward_int(i64 %0, i64 %1, i8* noalias nocapture nonnull %__.context_ptr) #4 !dbg !1240 {
decls:
%2 = alloca %..string, align 8
%3 = alloca %..string, align 8
%4 = alloca [2 x i64], align 8, !dbg !3084
%5 = alloca %runtime.Source_Code_Location, align 8, !dbg !3084
call void @llvm.dbg.value(metadata i64 %0, metadata !1244, metadata !DIExpression()), !dbg !3085
call void @llvm.dbg.value(metadata i64 %1, metadata !1245, metadata !DIExpression()), !dbg !3085
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1246, metadata !DIExpression()), !dbg !3086
call void @llvm.dbg.value(metadata i64 %1, metadata !1268, metadata !DIExpression()), !dbg !3087
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !1271, metadata !DIExpression()), !dbg !3089
%6 = icmp sle i64 %1, 0, !dbg !3090
br i1 %6, label %if.then.i, label %if.done.i, !dbg !3090
if.then.i: ; preds = %decls
br label %runtime.is_power_of_two_int.exit, !dbg !3091
if.done.i: ; preds = %decls
%7 = sub i64 %1, 1, !dbg !3092
%8 = and i64 %1, %7, !dbg !3092
%9 = icmp eq i64 %8, 0, !dbg !3092
%10 = zext i1 %9 to i8, !dbg !3092
br label %runtime.is_power_of_two_int.exit, !dbg !3092
runtime.is_power_of_two_int.exit: ; preds = %if.done.i, %if.then.i
%11 = phi i8 [ 0, %if.then.i ], [ %10, %if.done.i ]
%12 = icmp ne i8 %11, 0, !dbg !3084
%13 = bitcast [2 x i64]* %4 to %..string*, !dbg !3084
%14 = bitcast %..string* %13 to i8*, !dbg !3084
call void @llvm.memset.p0i8.i64(i8* align 8 %14, i8 0, i64 16, i1 false), !dbg !3084
%15 = load [2 x i64], [2 x i64]* %4, align 8, !dbg !3084
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$9e", i64 0, i64 0), i64 54 }, i32 65, i32 2, %..string { i8* getelementptr inbounds ([18 x i8], [18 x i8]* @"csbs$9f", i64 0, i64 0), i64 17 } }, %runtime.Source_Code_Location* %5, align 8, !dbg !3084
%16 = bitcast %..string* %2 to i8*, !dbg !3093
call void @llvm.lifetime.start.p0i8(i64 16, i8* %16), !dbg !3093
%17 = bitcast %..string* %3 to i8*, !dbg !3093
call void @llvm.lifetime.start.p0i8(i64 16, i8* %17), !dbg !3093
call void @llvm.dbg.declare(metadata !112, metadata !1135, metadata !DIExpression()), !dbg !3093
call void @llvm.dbg.value(metadata i8 undef, metadata !1134, metadata !DIExpression()), !dbg !3095
%18 = bitcast %..string* %2 to [2 x i64]*
store [2 x i64] %15, [2 x i64]* %18, align 8, !noalias !3096
%19 = bitcast %..string* %3 to i8*
%20 = bitcast %..string* %2 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %19, i8* align 8 %20, i64 16, i1 false), !noalias !3096
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1136, metadata !DIExpression()), !dbg !3099
br i1 %12, label %runtime.assert.exit, label %if.then.i1, !dbg !3100
if.then.i1: ; preds = %runtime.is_power_of_two_int.exit
%21 = bitcast %..string* %3 to [2 x i64]*, !dbg !3101
%22 = load [2 x i64], [2 x i64]* %21, align 8, !dbg !3101, !noalias !3096
call void @"runtime.assert$anon-8"([2 x i64] %22, %runtime.Source_Code_Location* %5, i8* %__.context_ptr), !dbg !3101
unreachable
runtime.assert.exit: ; preds = %runtime.is_power_of_two_int.exit
%23 = bitcast %..string* %2 to i8*, !dbg !3099
call void @llvm.lifetime.end.p0i8(i64 16, i8* %23), !dbg !3099
%24 = bitcast %..string* %3 to i8*, !dbg !3099
call void @llvm.lifetime.end.p0i8(i64 16, i8* %24), !dbg !3099
call void @llvm.dbg.value(metadata i64 %0, metadata !1247, metadata !DIExpression()), !dbg !3102
call void @llvm.dbg.value(metadata i64 0, metadata !1248, metadata !DIExpression()), !dbg !3102
%25 = sub i64 %1, 1, !dbg !3103
%26 = and i64 %0, %25, !dbg !3103
call void @llvm.dbg.value(metadata i64 %26, metadata !1248, metadata !DIExpression()), !dbg !3102
%27 = icmp ne i64 %26, 0, !dbg !3104
%28 = sub i64 %1, %26, !dbg !3104
%29 = add i64 %0, %28, !dbg !3104
%.0 = select i1 %27, i64 %29, i64 %0, !dbg !3104
call void @llvm.dbg.value(metadata i64 %.0, metadata !1247, metadata !DIExpression()), !dbg !3102
ret i64 %.0, !dbg !3105
}
; Function Attrs: alwaysinline nounwind
define dso_local i8 @runtime.is_power_of_two_uintptr(i64 %0, i8* noalias nocapture nonnull %__.context_ptr) #2 !dbg !1304 {
decls:
call void @llvm.dbg.value(metadata i64 %0, metadata !1303, metadata !DIExpression()), !dbg !3106
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !1308, metadata !DIExpression()), !dbg !3107
%1 = icmp ule i64 %0, 0, !dbg !3108
br i1 %1, label %if.then, label %if.done, !dbg !3108
if.then: ; preds = %decls
ret i8 0, !dbg !3109
if.done: ; preds = %decls
%2 = sub i64 %0, 1, !dbg !3110
%3 = and i64 %0, %2, !dbg !3110
%4 = icmp eq i64 %3, 0, !dbg !3110
%5 = zext i1 %4 to i8, !dbg !3110
ret i8 %5, !dbg !3110
}
; Function Attrs: alwaysinline
define dso_local i64 @runtime.align_forward_uintptr(i64 %0, i64 %1, i8* noalias nocapture nonnull %__.context_ptr) #4 !dbg !1224 {
decls:
%2 = alloca %..string, align 8
%3 = alloca %..string, align 8
%4 = alloca [2 x i64], align 8, !dbg !3111
%5 = alloca %runtime.Source_Code_Location, align 8, !dbg !3111
call void @llvm.dbg.value(metadata i64 %0, metadata !1228, metadata !DIExpression()), !dbg !3112
call void @llvm.dbg.value(metadata i64 %1, metadata !1229, metadata !DIExpression()), !dbg !3112
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1230, metadata !DIExpression()), !dbg !3113
call void @llvm.dbg.value(metadata i64 %1, metadata !1303, metadata !DIExpression()), !dbg !3114
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !1308, metadata !DIExpression()), !dbg !3116
%6 = icmp ule i64 %1, 0, !dbg !3117
br i1 %6, label %if.then.i, label %if.done.i, !dbg !3117
if.then.i: ; preds = %decls
br label %runtime.is_power_of_two_uintptr.exit, !dbg !3118
if.done.i: ; preds = %decls
%7 = sub i64 %1, 1, !dbg !3119
%8 = and i64 %1, %7, !dbg !3119
%9 = icmp eq i64 %8, 0, !dbg !3119
%10 = zext i1 %9 to i8, !dbg !3119
br label %runtime.is_power_of_two_uintptr.exit, !dbg !3119
runtime.is_power_of_two_uintptr.exit: ; preds = %if.done.i, %if.then.i
%11 = phi i8 [ 0, %if.then.i ], [ %10, %if.done.i ]
%12 = icmp ne i8 %11, 0, !dbg !3111
%13 = bitcast [2 x i64]* %4 to %..string*, !dbg !3111
%14 = bitcast %..string* %13 to i8*, !dbg !3111
call void @llvm.memset.p0i8.i64(i8* align 8 %14, i8 0, i64 16, i1 false), !dbg !3111
%15 = load [2 x i64], [2 x i64]* %4, align 8, !dbg !3111
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$9e", i64 0, i64 0), i64 54 }, i32 83, i32 2, %..string { i8* getelementptr inbounds ([22 x i8], [22 x i8]* @"csbs$a0", i64 0, i64 0), i64 21 } }, %runtime.Source_Code_Location* %5, align 8, !dbg !3111
%16 = bitcast %..string* %2 to i8*, !dbg !3120
call void @llvm.lifetime.start.p0i8(i64 16, i8* %16), !dbg !3120
%17 = bitcast %..string* %3 to i8*, !dbg !3120
call void @llvm.lifetime.start.p0i8(i64 16, i8* %17), !dbg !3120
call void @llvm.dbg.declare(metadata !112, metadata !1135, metadata !DIExpression()), !dbg !3120
call void @llvm.dbg.value(metadata i8 undef, metadata !1134, metadata !DIExpression()), !dbg !3122
%18 = bitcast %..string* %2 to [2 x i64]*
store [2 x i64] %15, [2 x i64]* %18, align 8, !noalias !3123
%19 = bitcast %..string* %3 to i8*
%20 = bitcast %..string* %2 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %19, i8* align 8 %20, i64 16, i1 false), !noalias !3123
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1136, metadata !DIExpression()), !dbg !3126
br i1 %12, label %runtime.assert.exit, label %if.then.i1, !dbg !3127
if.then.i1: ; preds = %runtime.is_power_of_two_uintptr.exit
%21 = bitcast %..string* %3 to [2 x i64]*, !dbg !3128
%22 = load [2 x i64], [2 x i64]* %21, align 8, !dbg !3128, !noalias !3123
call void @"runtime.assert$anon-8"([2 x i64] %22, %runtime.Source_Code_Location* %5, i8* %__.context_ptr), !dbg !3128
unreachable
runtime.assert.exit: ; preds = %runtime.is_power_of_two_uintptr.exit
%23 = bitcast %..string* %2 to i8*, !dbg !3126
call void @llvm.lifetime.end.p0i8(i64 16, i8* %23), !dbg !3126
%24 = bitcast %..string* %3 to i8*, !dbg !3126
call void @llvm.lifetime.end.p0i8(i64 16, i8* %24), !dbg !3126
call void @llvm.dbg.value(metadata i64 %0, metadata !1231, metadata !DIExpression()), !dbg !3129
call void @llvm.dbg.value(metadata i64 0, metadata !1232, metadata !DIExpression()), !dbg !3129
%25 = sub i64 %1, 1, !dbg !3130
%26 = and i64 %0, %25, !dbg !3130
call void @llvm.dbg.value(metadata i64 %26, metadata !1232, metadata !DIExpression()), !dbg !3129
%27 = icmp ne i64 %26, 0, !dbg !3131
%28 = sub i64 %1, %26, !dbg !3131
%29 = add i64 %0, %28, !dbg !3131
%.0 = select i1 %27, i64 %29, i64 %0, !dbg !3131
call void @llvm.dbg.value(metadata i64 %.0, metadata !1231, metadata !DIExpression()), !dbg !3129
ret i64 %.0, !dbg !3132
}
; Function Attrs: nounwind
define dso_local i8* @runtime.mem_zero(i8* %0, i64 %1) #0 !dbg !3133 {
decls:
call void @llvm.dbg.value(metadata i8* %0, metadata !3135, metadata !DIExpression()), !dbg !3137
call void @llvm.dbg.value(metadata i64 %1, metadata !3136, metadata !DIExpression()), !dbg !3137
%2 = icmp eq i8* %0, null, !dbg !3138
br i1 %2, label %if.then, label %if.done, !dbg !3138
if.then: ; preds = %if.done, %decls
%merge = phi i8* [ null, %decls ], [ %0, %if.done ]
ret i8* %merge, !dbg !3140
if.done: ; preds = %decls
%3 = icmp slt i64 %1, 0, !dbg !3143
br i1 %3, label %if.then, label %if.done2, !dbg !3143
if.done2: ; preds = %if.done
call void @llvm.memset.p0i8.i64(i8* %0, i8 0, i64 %1, i1 false), !dbg !3144
ret i8* %0, !dbg !3145
}
; Function Attrs: nounwind
define dso_local i8* @runtime.mem_copy(i8* %0, i8* %1, i64 %2) #0 !dbg !3146 {
decls:
call void @llvm.dbg.value(metadata i8* %0, metadata !3150, metadata !DIExpression()), !dbg !3153
call void @llvm.dbg.value(metadata i8* %1, metadata !3151, metadata !DIExpression()), !dbg !3153
call void @llvm.dbg.value(metadata i64 %2, metadata !3152, metadata !DIExpression()), !dbg !3153
%3 = icmp eq i8* %1, null, !dbg !3154
br i1 %3, label %if.then, label %if.done, !dbg !3154
if.then: ; preds = %decls
ret i8* %0, !dbg !3156
if.done: ; preds = %decls
call void @llvm.memmove.p0i8.p0i8.i64(i8* %0, i8* %1, i64 %2, i1 false), !dbg !3159
ret i8* %0, !dbg !3160
}
; Function Attrs: alwaysinline
define dso_local void @runtime.mem_alloc_bytes({ { i8*, i64 }, i8 }* noalias sret %agg.result, i64 %0, i64 %1, [2 x i64] %2, %runtime.Source_Code_Location* %3, i8* noalias nocapture nonnull %__.context_ptr) #4 !dbg !1211 {
decls:
%4 = alloca %runtime.Allocator, align 8
call void @llvm.dbg.declare(metadata %runtime.Allocator* %5, metadata !1217, metadata !DIExpression()), !dbg !3161
%5 = alloca %runtime.Allocator, align 8
%6 = alloca { { i8*, i64 }, i8 }, align 8, !dbg !3162
call void @llvm.dbg.value(metadata i64 %0, metadata !1215, metadata !DIExpression()), !dbg !3163
call void @llvm.dbg.value(metadata i64 %1, metadata !1216, metadata !DIExpression()), !dbg !3163
%7 = bitcast %runtime.Allocator* %4 to [2 x i64]*
store [2 x i64] %2, [2 x i64]* %7, align 8
%8 = bitcast %runtime.Allocator* %5 to i8*
%9 = bitcast %runtime.Allocator* %4 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %8, i8* align 8 %9, i64 16, i1 false)
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1218, metadata !DIExpression()), !dbg !3164
%10 = icmp eq i64 %0, 0, !dbg !3165
br i1 %10, label %if.then, label %if.done, !dbg !3165
if.then: ; preds = %decls
%11 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 0, !dbg !3166
%12 = bitcast { i8*, i64 }* %11 to i8*, !dbg !3166
call void @llvm.memset.p0i8.i64(i8* align 8 %12, i8 0, i64 17, i1 false), !dbg !3166
ret void, !dbg !3166
if.done: ; preds = %decls
%13 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %5, i32 0, i32 0, !dbg !3167
%14 = load i8*, i8** %13, align 8, !dbg !3167
%15 = icmp eq i8* %14, null, !dbg !3167
br i1 %15, label %if.then1, label %if.done2, !dbg !3167
if.then1: ; preds = %if.done
%16 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 0, !dbg !3168
%17 = bitcast { i8*, i64 }* %16 to i8*, !dbg !3168
call void @llvm.memset.p0i8.i64(i8* align 8 %17, i8 0, i64 17, i1 false), !dbg !3168
ret void, !dbg !3168
if.done2: ; preds = %if.done
%18 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %5, i32 0, i32 1, !dbg !3162
%19 = load i8*, i8** %18, align 8, !dbg !3162
%20 = bitcast { { i8*, i64 }, i8 }* %6 to i8*, !dbg !3162
call void @llvm.memset.p0i8.i64(i8* %20, i8 0, i64 24, i1 false), !dbg !3162
%21 = bitcast i8* %14 to void ({ { i8*, i64 }, i8 }*, i8*, i8, i64, i64, i8*, i64, %runtime.Source_Code_Location*, i8*)*, !dbg !3162
call void %21({ { i8*, i64 }, i8 }* %6, i8* %19, i8 0, i64 %0, i64 %1, i8* null, i64 0, %runtime.Source_Code_Location* %3, i8* %__.context_ptr) #4, !dbg !3162
%22 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %6, i32 0, i32 0, !dbg !3162
%23 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %6, i32 0, i32 1, !dbg !3162
%24 = load i8, i8* %23, align 1, !dbg !3162
%25 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 0, !dbg !3162
%26 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 1, !dbg !3162
%27 = bitcast { i8*, i64 }* %25 to i8*, !dbg !3162
%28 = bitcast { i8*, i64 }* %22 to i8*, !dbg !3162
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %27, i8* align 8 %28, i64 16, i1 false), !dbg !3162
store i8 %24, i8* %26, align 1, !dbg !3162
ret void, !dbg !3162
}
; Function Attrs: alwaysinline
define dso_local i8 @runtime.mem_free(i8* %0, [2 x i64] %1, %runtime.Source_Code_Location* %2, i8* noalias nocapture nonnull %__.context_ptr) #4 !dbg !1419 {
decls:
%3 = alloca %runtime.Allocator, align 8
call void @llvm.dbg.declare(metadata %runtime.Allocator* %4, metadata !1424, metadata !DIExpression()), !dbg !3169
%4 = alloca %runtime.Allocator, align 8
%5 = alloca { { i8*, i64 }, i8 }, align 8, !dbg !3170
call void @llvm.dbg.value(metadata i8* %0, metadata !1423, metadata !DIExpression()), !dbg !3171
%6 = bitcast %runtime.Allocator* %3 to [2 x i64]*
store [2 x i64] %1, [2 x i64]* %6, align 8
%7 = bitcast %runtime.Allocator* %4 to i8*
%8 = bitcast %runtime.Allocator* %3 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %7, i8* align 8 %8, i64 16, i1 false)
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1425, metadata !DIExpression()), !dbg !3172
%9 = icmp eq i8* %0, null, !dbg !3173
br i1 %9, label %if.then, label %if.done, !dbg !3173
if.then: ; preds = %if.done, %decls
ret i8 0, !dbg !3174
if.done: ; preds = %decls
%10 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %4, i32 0, i32 0, !dbg !3175
%11 = load i8*, i8** %10, align 8, !dbg !3175
%12 = icmp eq i8* %11, null, !dbg !3175
br i1 %12, label %if.then, label %if.done2, !dbg !3175
if.done2: ; preds = %if.done
call void @llvm.dbg.value(metadata i8 0, metadata !1426, metadata !DIExpression()), !dbg !3176
%13 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %4, i32 0, i32 1, !dbg !3170
%14 = load i8*, i8** %13, align 8, !dbg !3170
%15 = bitcast { { i8*, i64 }, i8 }* %5 to i8*, !dbg !3170
call void @llvm.memset.p0i8.i64(i8* %15, i8 0, i64 24, i1 false), !dbg !3170
%16 = bitcast i8* %11 to void ({ { i8*, i64 }, i8 }*, i8*, i8, i64, i64, i8*, i64, %runtime.Source_Code_Location*, i8*)*, !dbg !3170
call void %16({ { i8*, i64 }, i8 }* %5, i8* %14, i8 1, i64 0, i64 0, i8* %0, i64 0, %runtime.Source_Code_Location* %2, i8* %__.context_ptr) #4, !dbg !3170
%17 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %5, i32 0, i32 1, !dbg !3170
%18 = load i8, i8* %17, align 1, !dbg !3170
call void @llvm.dbg.value(metadata i8 %18, metadata !1426, metadata !DIExpression()), !dbg !3176
ret i8 %18, !dbg !3177
}
; Function Attrs: alwaysinline
define dso_local [2 x i64] @runtime.mem_resize(i8* %0, i64 %1, i64 %2, i64 %3, [2 x i64] %4, %runtime.Source_Code_Location* %5, i8* noalias nocapture nonnull %__.context_ptr) #4 !dbg !3178 {
decls:
%6 = alloca { i8*, i64 }, align 8
%7 = alloca { i8*, i64 }, align 8
%8 = alloca %runtime.Raw_Slice, align 8, !dbg !3196
%9 = alloca %runtime.Allocator, align 8
call void @llvm.dbg.declare(metadata %runtime.Allocator* %10, metadata !3190, metadata !DIExpression()), !dbg !3205
%10 = alloca %runtime.Allocator, align 8
call void @llvm.dbg.declare(metadata { i8*, i64 }* %11, metadata !3194, metadata !DIExpression()), !dbg !3206
%11 = alloca { i8*, i64 }, align 8, !dbg !3206
%12 = alloca { i8*, i8 }, align 8, !dbg !3207
%13 = alloca { { i8*, i64 }, i8 }, align 8, !dbg !3209
%14 = alloca { { i8*, i64 }, i8 }, align 8, !dbg !3210
%15 = alloca { { i8*, i64 }, i8 }, align 8, !dbg !3211
%16 = alloca { i8*, i8 }, align 8, !dbg !3212
call void @llvm.dbg.value(metadata i8* %0, metadata !3186, metadata !DIExpression()), !dbg !3213
call void @llvm.dbg.value(metadata i64 %1, metadata !3187, metadata !DIExpression()), !dbg !3213
call void @llvm.dbg.value(metadata i64 %2, metadata !3188, metadata !DIExpression()), !dbg !3213
call void @llvm.dbg.value(metadata i64 %3, metadata !3189, metadata !DIExpression()), !dbg !3213
%17 = bitcast %runtime.Allocator* %9 to [2 x i64]*
store [2 x i64] %4, [2 x i64]* %17, align 8
%18 = bitcast %runtime.Allocator* %10 to i8*
%19 = bitcast %runtime.Allocator* %9 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %18, i8* align 8 %19, i64 16, i1 false)
call void @llvm.dbg.value(metadata i8* null, metadata !3191, metadata !DIExpression()), !dbg !3213
call void @llvm.dbg.value(metadata i8 0, metadata !3192, metadata !DIExpression()), !dbg !3213
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !3193, metadata !DIExpression()), !dbg !3214
%20 = bitcast { i8*, i64 }* %11 to i8*, !dbg !3206
call void @llvm.memset.p0i8.i64(i8* %20, i8 0, i64 16, i1 false), !dbg !3206
%21 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %10, i32 0, i32 0, !dbg !3215
%22 = load i8*, i8** %21, align 8, !dbg !3215
%23 = icmp eq i8* %22, null, !dbg !3215
br i1 %23, label %switch.case.body, label %switch.case.next, !dbg !3215
switch.case.next: ; preds = %decls
%24 = icmp eq i64 %2, 0, !dbg !3215
br i1 %24, label %switch.case.body2, label %switch.case.next1, !dbg !3215
switch.case.body: ; preds = %decls
call void @llvm.dbg.value(metadata i8* null, metadata !3191, metadata !DIExpression()), !dbg !3213
call void @llvm.dbg.value(metadata i8 0, metadata !3192, metadata !DIExpression()), !dbg !3213
%25 = getelementptr inbounds { i8*, i8 }, { i8*, i8 }* %12, i32 0, i32 0, !dbg !3207
%26 = getelementptr inbounds { i8*, i8 }, { i8*, i8 }* %12, i32 0, i32 1, !dbg !3207
store i8* null, i8** %25, align 8, !dbg !3207
store i8 0, i8* %26, align 1, !dbg !3207
%27 = bitcast { i8*, i8 }* %12 to [2 x i64]*, !dbg !3207
%28 = load [2 x i64], [2 x i64]* %27, align 8, !dbg !3207
ret [2 x i64] %28, !dbg !3207
switch.case.next1: ; preds = %switch.case.next
%29 = icmp eq i8* %0, null, !dbg !3215
%30 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %10, i32 0, i32 1, !dbg !3216
%31 = load i8*, i8** %30, align 8, !dbg !3216
br i1 %29, label %switch.case.body4, label %switch.default.body, !dbg !3215
switch.case.body2: ; preds = %switch.case.next
%32 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %10, i32 0, i32 1, !dbg !3209
%33 = load i8*, i8** %32, align 8, !dbg !3209
%34 = bitcast { { i8*, i64 }, i8 }* %13 to i8*, !dbg !3209
call void @llvm.memset.p0i8.i64(i8* %34, i8 0, i64 24, i1 false), !dbg !3209
%35 = bitcast i8* %22 to void ({ { i8*, i64 }, i8 }*, i8*, i8, i64, i64, i8*, i64, %runtime.Source_Code_Location*, i8*)*, !dbg !3209
call void %35({ { i8*, i64 }, i8 }* %13, i8* %33, i8 1, i64 0, i64 0, i8* %0, i64 0, %runtime.Source_Code_Location* %5, i8* %__.context_ptr) #4, !dbg !3209
%36 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %13, i32 0, i32 0, !dbg !3209
%37 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %13, i32 0, i32 1, !dbg !3209
%38 = load i8, i8* %37, align 1, !dbg !3209
%39 = bitcast { i8*, i64 }* %36 to i8*, !dbg !3209
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %20, i8* align 8 %39, i64 16, i1 false), !dbg !3209
call void @llvm.dbg.value(metadata i8 %38, metadata !3192, metadata !DIExpression()), !dbg !3213
br label %switch.done, !dbg !3215
switch.case.body4: ; preds = %switch.case.next1
%40 = bitcast { { i8*, i64 }, i8 }* %14 to i8*, !dbg !3210
call void @llvm.memset.p0i8.i64(i8* %40, i8 0, i64 24, i1 false), !dbg !3210
%41 = bitcast i8* %22 to void ({ { i8*, i64 }, i8 }*, i8*, i8, i64, i64, i8*, i64, %runtime.Source_Code_Location*, i8*)*, !dbg !3210
call void %41({ { i8*, i64 }, i8 }* %14, i8* %31, i8 0, i64 %2, i64 %3, i8* null, i64 0, %runtime.Source_Code_Location* %5, i8* %__.context_ptr) #4, !dbg !3210
%42 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %14, i32 0, i32 0, !dbg !3210
%43 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %14, i32 0, i32 1, !dbg !3210
%44 = load i8, i8* %43, align 1, !dbg !3210
%45 = bitcast { i8*, i64 }* %42 to i8*, !dbg !3210
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %20, i8* align 8 %45, i64 16, i1 false), !dbg !3210
call void @llvm.dbg.value(metadata i8 %44, metadata !3192, metadata !DIExpression()), !dbg !3213
br label %switch.done, !dbg !3215
switch.default.body: ; preds = %switch.case.next1
%46 = bitcast { { i8*, i64 }, i8 }* %15 to i8*, !dbg !3211
call void @llvm.memset.p0i8.i64(i8* %46, i8 0, i64 24, i1 false), !dbg !3211
%47 = bitcast i8* %22 to void ({ { i8*, i64 }, i8 }*, i8*, i8, i64, i64, i8*, i64, %runtime.Source_Code_Location*, i8*)*, !dbg !3211
call void %47({ { i8*, i64 }, i8 }* %15, i8* %31, i8 3, i64 %2, i64 %3, i8* %0, i64 %1, %runtime.Source_Code_Location* %5, i8* %__.context_ptr) #4, !dbg !3211
%48 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %15, i32 0, i32 0, !dbg !3211
%49 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %15, i32 0, i32 1, !dbg !3211
%50 = load i8, i8* %49, align 1, !dbg !3211
%51 = bitcast { i8*, i64 }* %48 to i8*, !dbg !3211
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %20, i8* align 8 %51, i64 16, i1 false), !dbg !3211
call void @llvm.dbg.value(metadata i8 %50, metadata !3192, metadata !DIExpression()), !dbg !3213
br label %switch.done, !dbg !3215
switch.done: ; preds = %switch.default.body, %switch.case.body4, %switch.case.body2
%.0 = phi i8 [ %38, %switch.case.body2 ], [ %44, %switch.case.body4 ], [ %50, %switch.default.body ], !dbg !3216
call void @llvm.dbg.value(metadata i8 %.0, metadata !3192, metadata !DIExpression()), !dbg !3213
%52 = bitcast { i8*, i64 }* %11 to [2 x i64]*, !dbg !3217
%53 = load [2 x i64], [2 x i64]* %52, align 8, !dbg !3217
%54 = bitcast { i8*, i64 }* %6 to i8*, !dbg !3218
call void @llvm.lifetime.start.p0i8(i64 16, i8* %54), !dbg !3218
%55 = bitcast { i8*, i64 }* %7 to i8*, !dbg !3218
call void @llvm.lifetime.start.p0i8(i64 16, i8* %55), !dbg !3218
%56 = bitcast %runtime.Raw_Slice* %8 to i8*, !dbg !3218
call void @llvm.lifetime.start.p0i8(i64 16, i8* %56), !dbg !3218
call void @llvm.dbg.declare(metadata !112, metadata !3202, metadata !DIExpression()), !dbg !3218
%57 = bitcast { i8*, i64 }* %6 to [2 x i64]*
store [2 x i64] %53, [2 x i64]* %57, align 8
%58 = bitcast { i8*, i64 }* %7 to i8*
%59 = bitcast { i8*, i64 }* %6 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %58, i8* align 8 %59, i64 16, i1 false)
call void @llvm.dbg.value(metadata i8* null, metadata !3203, metadata !DIExpression()), !dbg !3219
%60 = bitcast { i8*, i64 }* %7 to %runtime.Raw_Slice*, !dbg !3196
%61 = bitcast %runtime.Raw_Slice* %8 to i8*, !dbg !3196
%62 = bitcast %runtime.Raw_Slice* %60 to i8*, !dbg !3196
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %61, i8* align 8 %62, i64 16, i1 false), !dbg !3196
%63 = getelementptr inbounds %runtime.Raw_Slice, %runtime.Raw_Slice* %8, i32 0, i32 0, !dbg !3196
%64 = load i8*, i8** %63, align 8, !dbg !3196
call void @llvm.dbg.value(metadata i8* %64, metadata !3203, metadata !DIExpression()), !dbg !3219
%65 = bitcast { i8*, i64 }* %6 to i8*, !dbg !3220
call void @llvm.lifetime.end.p0i8(i64 16, i8* %65), !dbg !3220
%66 = bitcast { i8*, i64 }* %7 to i8*, !dbg !3220
call void @llvm.lifetime.end.p0i8(i64 16, i8* %66), !dbg !3220
%67 = bitcast %runtime.Raw_Slice* %8 to i8*, !dbg !3220
call void @llvm.lifetime.end.p0i8(i64 16, i8* %67), !dbg !3220
call void @llvm.dbg.value(metadata i8* %64, metadata !3191, metadata !DIExpression()), !dbg !3213
call void @llvm.dbg.value(metadata i8* %64, metadata !3191, metadata !DIExpression()), !dbg !3213
call void @llvm.dbg.value(metadata i8 %.0, metadata !3192, metadata !DIExpression()), !dbg !3213
%68 = getelementptr inbounds { i8*, i8 }, { i8*, i8 }* %16, i32 0, i32 0, !dbg !3212
%69 = getelementptr inbounds { i8*, i8 }, { i8*, i8 }* %16, i32 0, i32 1, !dbg !3212
store i8* %64, i8** %68, align 8, !dbg !3212
store i8 %.0, i8* %69, align 1, !dbg !3212
%70 = bitcast { i8*, i8 }* %16 to [2 x i64]*, !dbg !3212
%71 = load [2 x i64], [2 x i64]* %70, align 8, !dbg !3212
ret [2 x i64] %71, !dbg !3212
}
; Function Attrs: nounwind
define dso_local i8 @runtime.memory_equal(i8* %0, i8* %1, i64 %2) #0 !dbg !3221 {
decls:
call void @llvm.dbg.value(metadata i8* %0, metadata !3225, metadata !DIExpression()), !dbg !3228
call void @llvm.dbg.value(metadata i8* %1, metadata !3226, metadata !DIExpression()), !dbg !3228
call void @llvm.dbg.value(metadata i64 %2, metadata !3227, metadata !DIExpression()), !dbg !3228
%3 = call i64 @runtime.memory_compare(i8* %0, i8* %1, i64 %2), !dbg !3229
%4 = icmp eq i64 %3, 0, !dbg !3229
%5 = zext i1 %4 to i8, !dbg !3229
ret i8 %5, !dbg !3229
}
; Function Attrs: nounwind
define dso_local i64 @runtime.memory_compare(i8* %0, i8* %1, i64 %2) #0 !dbg !3231 {
decls:
call void @llvm.dbg.value(metadata i8* %0, metadata !3235, metadata !DIExpression()), !dbg !3260
call void @llvm.dbg.value(metadata i8* %1, metadata !3236, metadata !DIExpression()), !dbg !3260
call void @llvm.dbg.value(metadata i64 %2, metadata !3237, metadata !DIExpression()), !dbg !3260
%3 = icmp eq i8* %0, %1, !dbg !3261
br i1 %3, label %switch.case.body, label %switch.case.next, !dbg !3261
switch.case.next: ; preds = %decls
%4 = icmp eq i8* %0, null, !dbg !3261
br i1 %4, label %switch.case.body, label %switch.case.next1, !dbg !3261
switch.case.body: ; preds = %for.loop15, %switch.case.next1, %switch.case.next, %if.then17, %if.then8, %decls
%merge = phi i64 [ 0, %decls ], [ %., %if.then8 ], [ %.27, %if.then17 ], [ -1, %switch.case.next ], [ 1, %switch.case.next1 ], [ 0, %for.loop15 ]
ret i64 %merge, !dbg !3262
switch.case.next1: ; preds = %switch.case.next
%5 = icmp eq i8* %1, null, !dbg !3261
br i1 %5, label %switch.case.body, label %switch.done, !dbg !3261
switch.done: ; preds = %switch.case.next1
call void @llvm.dbg.value(metadata i64 0, metadata !3238, metadata !DIExpression()), !dbg !3264
%6 = ptrtoint i8* %0 to i64, !dbg !3265
call void @llvm.dbg.value(metadata i64 %6, metadata !3238, metadata !DIExpression()), !dbg !3264
call void @llvm.dbg.value(metadata i64 0, metadata !3240, metadata !DIExpression()), !dbg !3264
%7 = ptrtoint i8* %1 to i64, !dbg !3266
call void @llvm.dbg.value(metadata i64 %7, metadata !3240, metadata !DIExpression()), !dbg !3264
call void @llvm.dbg.value(metadata i64 %2, metadata !3241, metadata !DIExpression()), !dbg !3264
call void @llvm.dbg.value(metadata i64 0, metadata !3242, metadata !DIExpression()), !dbg !3264
%8 = udiv i64 %2, 8, !dbg !3267
%9 = add i64 %8, 1, !dbg !3267
call void @llvm.dbg.value(metadata i64 %9, metadata !3242, metadata !DIExpression()), !dbg !3264
call void @llvm.dbg.value(metadata i64 0, metadata !3243, metadata !DIExpression()), !dbg !3264
%10 = mul i64 %8, 8, !dbg !3268
call void @llvm.dbg.value(metadata i64 %10, metadata !3243, metadata !DIExpression()), !dbg !3264
call void @llvm.dbg.value(metadata i64 0, metadata !3244, metadata !DIExpression()), !dbg !3264
%11 = icmp ult i64 %2, 8, !dbg !3269
%spec.select = select i1 %11, i64 0, i64 %9, !dbg !3269
call void @llvm.dbg.value(metadata i64 %spec.select, metadata !3242, metadata !DIExpression()), !dbg !3264
br label %for.loop, !dbg !3270
for.loop: ; preds = %for.post13, %switch.done
%.025 = phi i64 [ 0, %switch.done ], [ %36, %for.post13 ], !dbg !3264
call void @llvm.dbg.value(metadata i64 %.025, metadata !3244, metadata !DIExpression()), !dbg !3264
%12 = icmp ult i64 %.025, %spec.select, !dbg !3270
br i1 %12, label %for.body, label %for.loop15, !dbg !3270
for.body: ; preds = %for.loop
call void @llvm.dbg.value(metadata i64 0, metadata !3245, metadata !DIExpression()), !dbg !3271
%13 = mul i64 %.025, 8, !dbg !3272
%14 = add i64 %6, %13, !dbg !3272
%15 = inttoptr i64 %14 to i64*, !dbg !3272
%16 = load i64, i64* %15, align 8, !dbg !3272
call void @llvm.dbg.value(metadata i64 %16, metadata !3245, metadata !DIExpression()), !dbg !3271
call void @llvm.dbg.value(metadata i64 0, metadata !3248, metadata !DIExpression()), !dbg !3271
%17 = add i64 %7, %13, !dbg !3273
%18 = inttoptr i64 %17 to i64*, !dbg !3273
%19 = load i64, i64* %18, align 8, !dbg !3273
call void @llvm.dbg.value(metadata i64 %19, metadata !3248, metadata !DIExpression()), !dbg !3271
%20 = xor i64 %16, %19, !dbg !3274
%21 = icmp ne i64 %20, 0, !dbg !3274
br i1 %21, label %for.loop6, label %for.post13, !dbg !3274
for.loop6: ; preds = %for.body, %for.post
%.026 = phi i64 [ %35, %for.post ], [ %13, %for.body ], !dbg !3275
call void @llvm.dbg.value(metadata i64 %.026, metadata !3249, metadata !DIExpression()), !dbg !3276
%22 = icmp ult i64 %.026, %2, !dbg !3277
br i1 %22, label %for.body7, label %for.post13, !dbg !3277
for.body7: ; preds = %for.loop6
call void @llvm.dbg.value(metadata i8 0, metadata !3253, metadata !DIExpression()), !dbg !3278
%23 = add i64 %6, %.026, !dbg !3279
%24 = inttoptr i64 %23 to i8*, !dbg !3279
%25 = load i8, i8* %24, align 1, !dbg !3279
call void @llvm.dbg.value(metadata i8 %25, metadata !3253, metadata !DIExpression()), !dbg !3278
call void @llvm.dbg.value(metadata i8 0, metadata !3255, metadata !DIExpression()), !dbg !3278
%26 = add i64 %7, %.026, !dbg !3280
%27 = inttoptr i64 %26 to i8*, !dbg !3280
%28 = load i8, i8* %27, align 1, !dbg !3280
call void @llvm.dbg.value(metadata i8 %28, metadata !3255, metadata !DIExpression()), !dbg !3278
%29 = xor i8 %25, %28, !dbg !3281
%30 = icmp ne i8 %29, 0, !dbg !3281
br i1 %30, label %if.then8, label %for.post, !dbg !3281
if.then8: ; preds = %for.body7
%31 = zext i8 %25 to i64, !dbg !3282
%32 = zext i8 %28 to i64, !dbg !3282
%33 = sub i64 %31, %32, !dbg !3282
%34 = icmp slt i64 %33, 0, !dbg !3282
%. = select i1 %34, i64 -1, i64 1, !dbg !3282
br label %switch.case.body
for.post: ; preds = %for.body7
%35 = add i64 %.026, 1, !dbg !3285
call void @llvm.dbg.value(metadata i64 %35, metadata !3249, metadata !DIExpression()), !dbg !3276
br label %for.loop6, !dbg !3277
for.post13: ; preds = %for.body, %for.loop6
%36 = add i64 %.025, 1, !dbg !3286
call void @llvm.dbg.value(metadata i64 %36, metadata !3244, metadata !DIExpression()), !dbg !3264
br label %for.loop, !dbg !3270
for.loop15: ; preds = %for.loop, %for.post22
%.024 = phi i64 [ %50, %for.post22 ], [ %10, %for.loop ], !dbg !3264
call void @llvm.dbg.value(metadata i64 %.024, metadata !3243, metadata !DIExpression()), !dbg !3264
%37 = icmp ult i64 %.024, %2, !dbg !3287
br i1 %37, label %for.body16, label %switch.case.body, !dbg !3287
for.body16: ; preds = %for.loop15
call void @llvm.dbg.value(metadata i8 0, metadata !3256, metadata !DIExpression()), !dbg !3288
%38 = add i64 %6, %.024, !dbg !3289
%39 = inttoptr i64 %38 to i8*, !dbg !3289
%40 = load i8, i8* %39, align 1, !dbg !3289
call void @llvm.dbg.value(metadata i8 %40, metadata !3256, metadata !DIExpression()), !dbg !3288
call void @llvm.dbg.value(metadata i8 0, metadata !3259, metadata !DIExpression()), !dbg !3288
%41 = add i64 %7, %.024, !dbg !3290
%42 = inttoptr i64 %41 to i8*, !dbg !3290
%43 = load i8, i8* %42, align 1, !dbg !3290
call void @llvm.dbg.value(metadata i8 %43, metadata !3259, metadata !DIExpression()), !dbg !3288
%44 = xor i8 %40, %43, !dbg !3291
%45 = icmp ne i8 %44, 0, !dbg !3291
br i1 %45, label %if.then17, label %for.post22, !dbg !3291
if.then17: ; preds = %for.body16
%46 = zext i8 %40 to i64, !dbg !3292
%47 = zext i8 %43 to i64, !dbg !3292
%48 = sub i64 %46, %47, !dbg !3292
%49 = icmp slt i64 %48, 0, !dbg !3292
%.27 = select i1 %49, i64 -1, i64 1, !dbg !3292
br label %switch.case.body
for.post22: ; preds = %for.body16
%50 = add i64 %.024, 1, !dbg !3295
call void @llvm.dbg.value(metadata i64 %50, metadata !3243, metadata !DIExpression()), !dbg !3264
br label %for.loop15, !dbg !3287
}
; Function Attrs: nounwind
define dso_local i64 @runtime.memory_compare_zero(i8* %0, i64 %1) #0 !dbg !3296 {
decls:
call void @llvm.dbg.value(metadata i8* %0, metadata !3300, metadata !DIExpression()), !dbg !3320
call void @llvm.dbg.value(metadata i64 %1, metadata !3301, metadata !DIExpression()), !dbg !3320
call void @llvm.dbg.value(metadata i64 0, metadata !3302, metadata !DIExpression()), !dbg !3321
%2 = ptrtoint i8* %0 to i64, !dbg !3322
call void @llvm.dbg.value(metadata i64 %2, metadata !3302, metadata !DIExpression()), !dbg !3321
call void @llvm.dbg.value(metadata i64 %1, metadata !3304, metadata !DIExpression()), !dbg !3321
call void @llvm.dbg.value(metadata i64 0, metadata !3305, metadata !DIExpression()), !dbg !3321
%3 = udiv i64 %1, 8, !dbg !3323
%4 = add i64 %3, 1, !dbg !3323
call void @llvm.dbg.value(metadata i64 %4, metadata !3305, metadata !DIExpression()), !dbg !3321
call void @llvm.dbg.value(metadata i64 0, metadata !3306, metadata !DIExpression()), !dbg !3321
%5 = mul i64 %3, 8, !dbg !3324
call void @llvm.dbg.value(metadata i64 %5, metadata !3306, metadata !DIExpression()), !dbg !3321
call void @llvm.dbg.value(metadata i64 0, metadata !3307, metadata !DIExpression()), !dbg !3321
%6 = icmp ult i64 %1, 8, !dbg !3325
%.0 = select i1 %6, i64 0, i64 %4, !dbg !3325
call void @llvm.dbg.value(metadata i64 %.0, metadata !3305, metadata !DIExpression()), !dbg !3321
br label %for.loop, !dbg !3326
for.loop: ; preds = %for.post9, %decls
%.021 = phi i64 [ 0, %decls ], [ %19, %for.post9 ], !dbg !3321
call void @llvm.dbg.value(metadata i64 %.021, metadata !3307, metadata !DIExpression()), !dbg !3321
%7 = icmp ult i64 %.021, %.0, !dbg !3326
br i1 %7, label %for.body, label %for.loop11, !dbg !3326
for.body: ; preds = %for.loop
call void @llvm.dbg.value(metadata i64 0, metadata !3308, metadata !DIExpression()), !dbg !3327
%8 = mul i64 %.021, 8, !dbg !3328
%9 = add i64 %2, %8, !dbg !3328
%10 = inttoptr i64 %9 to i64*, !dbg !3328
%11 = load i64, i64* %10, align 8, !dbg !3328
call void @llvm.dbg.value(metadata i64 %11, metadata !3308, metadata !DIExpression()), !dbg !3327
%12 = icmp ne i64 %11, 0, !dbg !3329
br i1 %12, label %for.loop2, label %for.post9, !dbg !3329
for.loop2: ; preds = %for.body, %for.post
%.022 = phi i64 [ %18, %for.post ], [ %8, %for.body ], !dbg !3330
call void @llvm.dbg.value(metadata i64 %.022, metadata !3311, metadata !DIExpression()), !dbg !3331
%13 = icmp ult i64 %.022, %1, !dbg !3332
br i1 %13, label %for.body3, label %for.post9, !dbg !3332
for.body3: ; preds = %for.loop2
call void @llvm.dbg.value(metadata i8 0, metadata !3315, metadata !DIExpression()), !dbg !3333
%14 = add i64 %2, %.022, !dbg !3334
%15 = inttoptr i64 %14 to i8*, !dbg !3334
%16 = load i8, i8* %15, align 1, !dbg !3334
call void @llvm.dbg.value(metadata i8 %16, metadata !3315, metadata !DIExpression()), !dbg !3333
%17 = icmp ne i8 %16, 0, !dbg !3335
br i1 %17, label %if.then4, label %for.post, !dbg !3335
if.then4: ; preds = %for.body3
br label %if.done6, !dbg !3336
if.done6: ; preds = %for.loop11, %if.then13, %if.then4
%merge = phi i64 [ 1, %if.then13 ], [ 1, %if.then4 ], [ 0, %for.loop11 ]
ret i64 %merge, !dbg !3336
for.post: ; preds = %for.body3
%18 = add i64 %.022, 1, !dbg !3339
call void @llvm.dbg.value(metadata i64 %18, metadata !3311, metadata !DIExpression()), !dbg !3331
br label %for.loop2, !dbg !3332
for.post9: ; preds = %for.body, %for.loop2
%19 = add i64 %.021, 1, !dbg !3340
call void @llvm.dbg.value(metadata i64 %19, metadata !3307, metadata !DIExpression()), !dbg !3321
br label %for.loop, !dbg !3326
for.loop11: ; preds = %for.loop, %for.post18
%.020 = phi i64 [ %25, %for.post18 ], [ %5, %for.loop ], !dbg !3321
call void @llvm.dbg.value(metadata i64 %.020, metadata !3306, metadata !DIExpression()), !dbg !3321
%20 = icmp ult i64 %.020, %1, !dbg !3341
br i1 %20, label %for.body12, label %if.done6, !dbg !3341
for.body12: ; preds = %for.loop11
call void @llvm.dbg.value(metadata i8 0, metadata !3317, metadata !DIExpression()), !dbg !3342
%21 = add i64 %2, %.020, !dbg !3343
%22 = inttoptr i64 %21 to i8*, !dbg !3343
%23 = load i8, i8* %22, align 1, !dbg !3343
call void @llvm.dbg.value(metadata i8 %23, metadata !3317, metadata !DIExpression()), !dbg !3342
%24 = icmp ne i8 %23, 0, !dbg !3344
br i1 %24, label %if.then13, label %for.post18, !dbg !3344
if.then13: ; preds = %for.body12
br label %if.done6, !dbg !3345
for.post18: ; preds = %for.body12
%25 = add i64 %.020, 1, !dbg !3348
call void @llvm.dbg.value(metadata i64 %25, metadata !3306, metadata !DIExpression()), !dbg !3321
br label %for.loop11, !dbg !3341
}
; Function Attrs: nounwind
define dso_local i8 @runtime.string_eq([2 x i64] %0, [2 x i64] %1) #0 !dbg !3349 {
decls:
%2 = alloca %..string, align 8
call void @llvm.dbg.declare(metadata %..string* %3, metadata !3353, metadata !DIExpression()), !dbg !3361
%3 = alloca %..string, align 8
%4 = alloca %..string, align 8
call void @llvm.dbg.declare(metadata %..string* %5, metadata !3354, metadata !DIExpression()), !dbg !3362
%5 = alloca %..string, align 8
call void @llvm.dbg.declare(metadata %runtime.Raw_String* %6, metadata !3355, metadata !DIExpression()), !dbg !3363
%6 = alloca %runtime.Raw_String, align 8, !dbg !3363
call void @llvm.dbg.declare(metadata %runtime.Raw_String* %7, metadata !3360, metadata !DIExpression()), !dbg !3364
%7 = alloca %runtime.Raw_String, align 8, !dbg !3364
%8 = bitcast %..string* %2 to [2 x i64]*
store [2 x i64] %0, [2 x i64]* %8, align 8
%9 = bitcast %..string* %3 to i8*
%10 = bitcast %..string* %2 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %9, i8* align 8 %10, i64 16, i1 false)
%11 = bitcast %..string* %4 to [2 x i64]*
store [2 x i64] %1, [2 x i64]* %11, align 8
%12 = bitcast %..string* %5 to i8*
%13 = bitcast %..string* %4 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %12, i8* align 8 %13, i64 16, i1 false)
%14 = bitcast %runtime.Raw_String* %6 to i8*, !dbg !3363
call void @llvm.memset.p0i8.i64(i8* %14, i8 0, i64 16, i1 false), !dbg !3363
%15 = bitcast %..string* %3 to %runtime.Raw_String*, !dbg !3363
%16 = bitcast %runtime.Raw_String* %15 to i8*, !dbg !3363
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %14, i8* align 8 %16, i64 16, i1 false), !dbg !3363
%17 = bitcast %runtime.Raw_String* %7 to i8*, !dbg !3364
call void @llvm.memset.p0i8.i64(i8* %17, i8 0, i64 16, i1 false), !dbg !3364
%18 = bitcast %..string* %5 to %runtime.Raw_String*, !dbg !3364
%19 = bitcast %runtime.Raw_String* %18 to i8*, !dbg !3364
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %17, i8* align 8 %19, i64 16, i1 false), !dbg !3364
%20 = getelementptr inbounds %runtime.Raw_String, %runtime.Raw_String* %6, i32 0, i32 1, !dbg !3365
%21 = load i64, i64* %20, align 8, !dbg !3365
%22 = getelementptr inbounds %runtime.Raw_String, %runtime.Raw_String* %7, i32 0, i32 1, !dbg !3365
%23 = load i64, i64* %22, align 8, !dbg !3365
%24 = icmp ne i64 %21, %23, !dbg !3365
br i1 %24, label %switch.case.body, label %switch.case.next, !dbg !3365
switch.case.next: ; preds = %decls
%25 = icmp eq i64 %21, 0, !dbg !3365
br i1 %25, label %switch.case.body, label %switch.case.next1, !dbg !3365
switch.case.body: ; preds = %switch.case.next1, %switch.case.next, %decls
%merge = phi i8 [ 0, %decls ], [ 1, %switch.case.next ], [ 1, %switch.case.next1 ]
ret i8 %merge, !dbg !3366
switch.case.next1: ; preds = %switch.case.next
%26 = getelementptr inbounds %runtime.Raw_String, %runtime.Raw_String* %6, i32 0, i32 0, !dbg !3365
%27 = load i8*, i8** %26, align 8, !dbg !3365
%28 = getelementptr inbounds %runtime.Raw_String, %runtime.Raw_String* %7, i32 0, i32 0, !dbg !3365
%29 = load i8*, i8** %28, align 8, !dbg !3365
%30 = icmp eq i8* %27, %29, !dbg !3365
br i1 %30, label %switch.case.body, label %switch.done, !dbg !3365
switch.done: ; preds = %switch.case.next1
%31 = bitcast %..string* %3 to [2 x i64]*, !dbg !3368
%32 = load [2 x i64], [2 x i64]* %31, align 8, !dbg !3368
%33 = bitcast %..string* %5 to [2 x i64]*, !dbg !3368
%34 = load [2 x i64], [2 x i64]* %33, align 8, !dbg !3368
%35 = call i64 @runtime.string_cmp([2 x i64] %32, [2 x i64] %34), !dbg !3368
%36 = icmp eq i64 %35, 0, !dbg !3368
%37 = zext i1 %36 to i8, !dbg !3368
ret i8 %37, !dbg !3368
}
; Function Attrs: nounwind
define dso_local i64 @runtime.string_cmp([2 x i64] %0, [2 x i64] %1) #0 !dbg !3369 {
decls:
%2 = alloca %..string, align 8
call void @llvm.dbg.declare(metadata %..string* %3, metadata !3373, metadata !DIExpression()), !dbg !3378
%3 = alloca %..string, align 8
%4 = alloca %..string, align 8
call void @llvm.dbg.declare(metadata %..string* %5, metadata !3374, metadata !DIExpression()), !dbg !3379
%5 = alloca %..string, align 8
call void @llvm.dbg.declare(metadata %runtime.Raw_String* %6, metadata !3375, metadata !DIExpression()), !dbg !3380
%6 = alloca %runtime.Raw_String, align 8, !dbg !3380
call void @llvm.dbg.declare(metadata %runtime.Raw_String* %7, metadata !3377, metadata !DIExpression()), !dbg !3381
%7 = alloca %runtime.Raw_String, align 8, !dbg !3381
%8 = bitcast %..string* %2 to [2 x i64]*
store [2 x i64] %0, [2 x i64]* %8, align 8
%9 = bitcast %..string* %3 to i8*
%10 = bitcast %..string* %2 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %9, i8* align 8 %10, i64 16, i1 false)
%11 = bitcast %..string* %4 to [2 x i64]*
store [2 x i64] %1, [2 x i64]* %11, align 8
%12 = bitcast %..string* %5 to i8*
%13 = bitcast %..string* %4 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %12, i8* align 8 %13, i64 16, i1 false)
%14 = bitcast %runtime.Raw_String* %6 to i8*, !dbg !3380
call void @llvm.memset.p0i8.i64(i8* %14, i8 0, i64 16, i1 false), !dbg !3380
%15 = bitcast %..string* %3 to %runtime.Raw_String*, !dbg !3380
%16 = bitcast %runtime.Raw_String* %15 to i8*, !dbg !3380
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %14, i8* align 8 %16, i64 16, i1 false), !dbg !3380
%17 = bitcast %runtime.Raw_String* %7 to i8*, !dbg !3381
call void @llvm.memset.p0i8.i64(i8* %17, i8 0, i64 16, i1 false), !dbg !3381
%18 = bitcast %..string* %5 to %runtime.Raw_String*, !dbg !3381
%19 = bitcast %runtime.Raw_String* %18 to i8*, !dbg !3381
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %17, i8* align 8 %19, i64 16, i1 false), !dbg !3381
%20 = getelementptr inbounds %runtime.Raw_String, %runtime.Raw_String* %6, i32 0, i32 0, !dbg !3382
%21 = load i8*, i8** %20, align 8, !dbg !3382
%22 = getelementptr inbounds %runtime.Raw_String, %runtime.Raw_String* %7, i32 0, i32 0, !dbg !3382
%23 = load i8*, i8** %22, align 8, !dbg !3382
%24 = getelementptr inbounds %runtime.Raw_String, %runtime.Raw_String* %6, i32 0, i32 1, !dbg !3382
%25 = load i64, i64* %24, align 8, !dbg !3382
%26 = getelementptr inbounds %runtime.Raw_String, %runtime.Raw_String* %7, i32 0, i32 1, !dbg !3382
%27 = load i64, i64* %26, align 8, !dbg !3382
%28 = icmp slt i64 %25, %27, !dbg !3382
%29 = select i1 %28, i64 %25, i64 %27, !dbg !3382
%30 = call i64 @runtime.memory_compare(i8* %21, i8* %23, i64 %29), !dbg !3382
ret i64 %30, !dbg !3382
}
; Function Attrs: alwaysinline nounwind
define dso_local i8 @runtime.string_ne([2 x i64] %0, [2 x i64] %1) #2 !dbg !3383 {
decls:
%2 = alloca %..string, align 8
%3 = alloca %..string, align 8
%4 = alloca %..string, align 8
%5 = alloca %..string, align 8
%6 = alloca %runtime.Raw_String, align 8, !dbg !3387
%7 = alloca %runtime.Raw_String, align 8, !dbg !3390
%8 = alloca %..string, align 8
call void @llvm.dbg.declare(metadata %..string* %9, metadata !3385, metadata !DIExpression()), !dbg !3391
%9 = alloca %..string, align 8
%10 = alloca %..string, align 8
call void @llvm.dbg.declare(metadata %..string* %11, metadata !3386, metadata !DIExpression()), !dbg !3392
%11 = alloca %..string, align 8
%12 = bitcast %..string* %8 to [2 x i64]*
store [2 x i64] %0, [2 x i64]* %12, align 8
%13 = bitcast %..string* %9 to i8*
%14 = bitcast %..string* %8 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %13, i8* align 8 %14, i64 16, i1 false)
%15 = bitcast %..string* %10 to [2 x i64]*
store [2 x i64] %1, [2 x i64]* %15, align 8
%16 = bitcast %..string* %11 to i8*
%17 = bitcast %..string* %10 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %16, i8* align 8 %17, i64 16, i1 false)
%18 = bitcast %..string* %9 to [2 x i64]*, !dbg !3393
%19 = load [2 x i64], [2 x i64]* %18, align 8, !dbg !3393
%20 = bitcast %..string* %11 to [2 x i64]*, !dbg !3393
%21 = load [2 x i64], [2 x i64]* %20, align 8, !dbg !3393
%22 = bitcast %..string* %2 to i8*, !dbg !3394
call void @llvm.lifetime.start.p0i8(i64 16, i8* %22), !dbg !3394
%23 = bitcast %..string* %3 to i8*, !dbg !3394
call void @llvm.lifetime.start.p0i8(i64 16, i8* %23), !dbg !3394
%24 = bitcast %..string* %4 to i8*, !dbg !3394
call void @llvm.lifetime.start.p0i8(i64 16, i8* %24), !dbg !3394
%25 = bitcast %..string* %5 to i8*, !dbg !3394
call void @llvm.lifetime.start.p0i8(i64 16, i8* %25), !dbg !3394
%26 = bitcast %runtime.Raw_String* %6 to i8*, !dbg !3394
call void @llvm.lifetime.start.p0i8(i64 16, i8* %26), !dbg !3394
%27 = bitcast %runtime.Raw_String* %7 to i8*, !dbg !3394
call void @llvm.lifetime.start.p0i8(i64 16, i8* %27), !dbg !3394
call void @llvm.dbg.declare(metadata !112, metadata !3353, metadata !DIExpression()), !dbg !3394
call void @llvm.dbg.declare(metadata !112, metadata !3354, metadata !DIExpression()), !dbg !3395
call void @llvm.dbg.declare(metadata !112, metadata !3355, metadata !DIExpression()), !dbg !3387
call void @llvm.dbg.declare(metadata !112, metadata !3360, metadata !DIExpression()), !dbg !3390
%28 = bitcast %..string* %2 to [2 x i64]*
store [2 x i64] %19, [2 x i64]* %28, align 8
%29 = bitcast %..string* %3 to i8*
%30 = bitcast %..string* %2 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %29, i8* align 8 %30, i64 16, i1 false)
%31 = bitcast %..string* %4 to [2 x i64]*
store [2 x i64] %21, [2 x i64]* %31, align 8
%32 = bitcast %..string* %5 to i8*
%33 = bitcast %..string* %4 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %32, i8* align 8 %33, i64 16, i1 false)
%34 = bitcast %runtime.Raw_String* %6 to i8*, !dbg !3387
call void @llvm.memset.p0i8.i64(i8* %34, i8 0, i64 16, i1 false), !dbg !3387
%35 = bitcast %..string* %3 to %runtime.Raw_String*, !dbg !3387
%36 = bitcast %runtime.Raw_String* %35 to i8*, !dbg !3387
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %34, i8* align 8 %36, i64 16, i1 false), !dbg !3387
%37 = bitcast %runtime.Raw_String* %7 to i8*, !dbg !3390
call void @llvm.memset.p0i8.i64(i8* %37, i8 0, i64 16, i1 false), !dbg !3390
%38 = bitcast %..string* %5 to %runtime.Raw_String*, !dbg !3390
%39 = bitcast %runtime.Raw_String* %38 to i8*, !dbg !3390
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %37, i8* align 8 %39, i64 16, i1 false), !dbg !3390
%40 = getelementptr inbounds %runtime.Raw_String, %runtime.Raw_String* %6, i32 0, i32 1, !dbg !3396
%41 = load i64, i64* %40, align 8, !dbg !3396
%42 = getelementptr inbounds %runtime.Raw_String, %runtime.Raw_String* %7, i32 0, i32 1, !dbg !3396
%43 = load i64, i64* %42, align 8, !dbg !3396
%44 = icmp ne i64 %41, %43, !dbg !3396
br i1 %44, label %switch.case.body.i, label %switch.case.next.i, !dbg !3396
switch.case.next.i: ; preds = %decls
%45 = icmp eq i64 %41, 0, !dbg !3396
br i1 %45, label %switch.case.body.i, label %switch.case.next1.i, !dbg !3396
switch.case.body.i: ; preds = %switch.case.next1.i, %switch.case.next.i, %decls
%merge.i = phi i8 [ 0, %decls ], [ 1, %switch.case.next.i ], [ 1, %switch.case.next1.i ]
%46 = bitcast %..string* %2 to i8*, !dbg !3397
call void @llvm.lifetime.end.p0i8(i64 16, i8* %46), !dbg !3397
%47 = bitcast %..string* %3 to i8*, !dbg !3397
call void @llvm.lifetime.end.p0i8(i64 16, i8* %47), !dbg !3397
%48 = bitcast %..string* %4 to i8*, !dbg !3397
call void @llvm.lifetime.end.p0i8(i64 16, i8* %48), !dbg !3397
%49 = bitcast %..string* %5 to i8*, !dbg !3397
call void @llvm.lifetime.end.p0i8(i64 16, i8* %49), !dbg !3397
%50 = bitcast %runtime.Raw_String* %6 to i8*, !dbg !3397
call void @llvm.lifetime.end.p0i8(i64 16, i8* %50), !dbg !3397
%51 = bitcast %runtime.Raw_String* %7 to i8*, !dbg !3397
call void @llvm.lifetime.end.p0i8(i64 16, i8* %51), !dbg !3397
br label %runtime.string_eq.exit, !dbg !3397
switch.case.next1.i: ; preds = %switch.case.next.i
%52 = getelementptr inbounds %runtime.Raw_String, %runtime.Raw_String* %6, i32 0, i32 0, !dbg !3396
%53 = load i8*, i8** %52, align 8, !dbg !3396
%54 = getelementptr inbounds %runtime.Raw_String, %runtime.Raw_String* %7, i32 0, i32 0, !dbg !3396
%55 = load i8*, i8** %54, align 8, !dbg !3396
%56 = icmp eq i8* %53, %55, !dbg !3396
br i1 %56, label %switch.case.body.i, label %switch.done.i, !dbg !3396
switch.done.i: ; preds = %switch.case.next1.i
%57 = bitcast %..string* %3 to [2 x i64]*, !dbg !3398
%58 = load [2 x i64], [2 x i64]* %57, align 8, !dbg !3398
%59 = bitcast %..string* %5 to [2 x i64]*, !dbg !3398
%60 = load [2 x i64], [2 x i64]* %59, align 8, !dbg !3398
%61 = call i64 @runtime.string_cmp([2 x i64] %58, [2 x i64] %60), !dbg !3398
%62 = icmp eq i64 %61, 0, !dbg !3398
%63 = zext i1 %62 to i8, !dbg !3398
%64 = bitcast %..string* %2 to i8*, !dbg !3398
call void @llvm.lifetime.end.p0i8(i64 16, i8* %64), !dbg !3398
%65 = bitcast %..string* %3 to i8*, !dbg !3398
call void @llvm.lifetime.end.p0i8(i64 16, i8* %65), !dbg !3398
%66 = bitcast %..string* %4 to i8*, !dbg !3398
call void @llvm.lifetime.end.p0i8(i64 16, i8* %66), !dbg !3398
%67 = bitcast %..string* %5 to i8*, !dbg !3398
call void @llvm.lifetime.end.p0i8(i64 16, i8* %67), !dbg !3398
%68 = bitcast %runtime.Raw_String* %6 to i8*, !dbg !3398
call void @llvm.lifetime.end.p0i8(i64 16, i8* %68), !dbg !3398
%69 = bitcast %runtime.Raw_String* %7 to i8*, !dbg !3398
call void @llvm.lifetime.end.p0i8(i64 16, i8* %69), !dbg !3398
br label %runtime.string_eq.exit, !dbg !3398
runtime.string_eq.exit: ; preds = %switch.done.i, %switch.case.body.i
%70 = phi i8 [ %merge.i, %switch.case.body.i ], [ %63, %switch.done.i ]
%71 = icmp eq i8 %70, 0, !dbg !3393
%72 = zext i1 %71 to i8, !dbg !3393
ret i8 %72, !dbg !3393
}
; Function Attrs: nounwind
define internal [2 x i64] @os.stream_from_handle(i32 %0, i8* noalias nocapture nonnull %__.context_ptr) #0 !dbg !3399 {
decls:
call void @llvm.dbg.declare(metadata %io.Stream* %1, metadata !3405, metadata !DIExpression()), !dbg !3407
%1 = alloca %io.Stream, align 8, !dbg !3407
call void @llvm.dbg.value(metadata i32 %0, metadata !3403, metadata !DIExpression()), !dbg !3408
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !3404, metadata !DIExpression()), !dbg !3409
%2 = bitcast %io.Stream* %1 to i8*, !dbg !3407
call void @llvm.memset.p0i8.i64(i8* %2, i8 0, i64 16, i1 false), !dbg !3407
%3 = getelementptr inbounds %io.Stream, %io.Stream* %1, i32 0, i32 1, !dbg !3410
%4 = sext i32 %0 to i64, !dbg !3410
%5 = inttoptr i64 %4 to i8*, !dbg !3410
store i8* %5, i8** %3, align 8, !dbg !3410
%6 = getelementptr inbounds %io.Stream, %io.Stream* %1, i32 0, i32 0, !dbg !3411
%7 = load %io.Stream_VTable*, %io.Stream_VTable** @os._file_stream_vtable-1513, align 8, !dbg !3411
store %io.Stream_VTable* %7, %io.Stream_VTable** %6, align 8, !dbg !3411
%8 = bitcast %io.Stream* %1 to [2 x i64]*, !dbg !3412
%9 = load [2 x i64], [2 x i64]* %8, align 8, !dbg !3412
ret [2 x i64] %9, !dbg !3412
}
define internal i64 @strings._write_byte-1512([2 x i64] %0, i8 %1, i8* noalias nocapture nonnull %__.context_ptr) !dbg !3413 {
decls:
%2 = alloca %io.Writer, align 8
call void @llvm.dbg.declare(metadata %io.Writer* %3, metadata !3417, metadata !DIExpression()), !dbg !3422
%3 = alloca %io.Writer, align 8
%4 = bitcast %io.Writer* %2 to [2 x i64]*
store [2 x i64] %0, [2 x i64]* %4, align 8
%5 = bitcast %io.Writer* %3 to i8*
%6 = bitcast %io.Writer* %2 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %5, i8* align 8 %6, i64 16, i1 false)
call void @llvm.dbg.value(metadata i8 %1, metadata !3418, metadata !DIExpression()), !dbg !3423
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !3419, metadata !DIExpression()), !dbg !3424
call void @llvm.dbg.value(metadata i32 0, metadata !3420, metadata !DIExpression()), !dbg !3425
%7 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !3426
%8 = load [2 x i64], [2 x i64]* %7, align 8, !dbg !3426
%9 = call i32 @io.write_byte_to_writer([2 x i64] %8, i8 %1, i8* %__.context_ptr), !dbg !3426
call void @llvm.dbg.value(metadata i32 %9, metadata !3420, metadata !DIExpression()), !dbg !3425
%10 = icmp eq i32 %9, 0, !dbg !3427
%11 = select i1 %10, i64 1, i64 0, !dbg !3427
ret i64 %11, !dbg !3427
}
define internal i64 @strings.write_quoted_rune([2 x i64] %0, i32 %1, i8* noalias nocapture nonnull %__.context_ptr) !dbg !3428 {
decls:
%2 = alloca %io.Writer, align 8
call void @llvm.dbg.declare(metadata %io.Writer* %3, metadata !3432, metadata !DIExpression()), !dbg !3440
%3 = alloca %io.Writer, align 8
call void @llvm.dbg.declare(metadata [4 x i8]* %4, metadata !3438, metadata !DIExpression()), !dbg !3441
%4 = alloca [4 x i8], align 1, !dbg !3441
%5 = alloca { [4 x i8], i64 }, align 8, !dbg !3441
%6 = alloca [2 x i64], align 8, !dbg !3442
%7 = alloca [2 x i64], align 8, !dbg !3445
%8 = bitcast %io.Writer* %2 to [2 x i64]*
store [2 x i64] %0, [2 x i64]* %8, align 8
%9 = bitcast %io.Writer* %3 to i8*
%10 = bitcast %io.Writer* %2 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %9, i8* align 8 %10, i64 16, i1 false)
call void @llvm.dbg.value(metadata i32 %1, metadata !3433, metadata !DIExpression()), !dbg !3446
call void @llvm.dbg.value(metadata i64 0, metadata !3434, metadata !DIExpression()), !dbg !3446
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !3435, metadata !DIExpression()), !dbg !3447
call void @llvm.dbg.value(metadata i8 39, metadata !3436, metadata !DIExpression()), !dbg !3448
%11 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !3449
%12 = load [2 x i64], [2 x i64]* %11, align 8, !dbg !3449
%13 = call i64 @strings._write_byte-1512([2 x i64] %12, i8 39, i8* %__.context_ptr), !dbg !3449
call void @llvm.dbg.value(metadata i64 %13, metadata !3434, metadata !DIExpression()), !dbg !3446
%14 = bitcast [4 x i8]* %4 to i8*, !dbg !3441
call void @llvm.memset.p0i8.i64(i8* %14, i8 0, i64 4, i1 false), !dbg !3441
call void @llvm.dbg.value(metadata i64 0, metadata !3439, metadata !DIExpression()), !dbg !3448
%15 = call [2 x i64] @utf8.encode_rune(i32 %1, i8* %__.context_ptr), !dbg !3441
%16 = bitcast { [4 x i8], i64 }* %5 to [2 x i64]*, !dbg !3441
store [2 x i64] %15, [2 x i64]* %16, align 8, !dbg !3441
%17 = getelementptr inbounds { [4 x i8], i64 }, { [4 x i8], i64 }* %5, i32 0, i32 0, !dbg !3441
%18 = getelementptr inbounds { [4 x i8], i64 }, { [4 x i8], i64 }* %5, i32 0, i32 1, !dbg !3441
%19 = load i64, i64* %18, align 8, !dbg !3441
%20 = bitcast [4 x i8]* %17 to i8*, !dbg !3441
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %14, i8* align 1 %20, i64 4, i1 false), !dbg !3441
call void @llvm.dbg.value(metadata i64 %19, metadata !3439, metadata !DIExpression()), !dbg !3448
%21 = icmp eq i64 %19, 1, !dbg !3450
br i1 %21, label %cmp.and, label %if.else, !dbg !3450
cmp.and: ; preds = %decls
%22 = icmp eq i32 %1, 65533, !dbg !3450
br i1 %22, label %if.then, label %if.else, !dbg !3450
if.then: ; preds = %cmp.and
%23 = load [2 x i64], [2 x i64]* %11, align 8, !dbg !3451
%24 = call i64 @strings._write_byte-1512([2 x i64] %23, i8 92, i8* %__.context_ptr), !dbg !3451
%25 = add i64 %13, %24, !dbg !3451
call void @llvm.dbg.value(metadata i64 %25, metadata !3434, metadata !DIExpression()), !dbg !3446
%26 = load [2 x i64], [2 x i64]* %11, align 8, !dbg !3452
%27 = call i64 @strings._write_byte-1512([2 x i64] %26, i8 120, i8* %__.context_ptr), !dbg !3452
%28 = add i64 %25, %27, !dbg !3452
call void @llvm.dbg.value(metadata i64 %28, metadata !3434, metadata !DIExpression()), !dbg !3446
%29 = load i8*, i8** getelementptr inbounds (%..string, %..string* @strings.DIGITS_LOWER-1532, i64 0, i32 0), align 8, !dbg !3442
%30 = load i64, i64* getelementptr inbounds (%..string, %..string* @strings.DIGITS_LOWER-1532, i64 0, i32 1), align 8, !dbg !3442
%31 = getelementptr [4 x i8], [4 x i8]* %4, i64 0, i64 0, !dbg !3442
%32 = load i8, i8* %31, align 1, !dbg !3442
%33 = lshr i8 %32, 4, !dbg !3442
%34 = zext i8 %33 to i64, !dbg !3442
%35 = bitcast [2 x i64]* %6 to %..string*, !dbg !3442
store %..string { i8* getelementptr inbounds ([54 x i8], [54 x i8]* @"csbs$a1", i64 0, i64 0), i64 53 }, %..string* %35, align 8, !dbg !3442
%36 = load [2 x i64], [2 x i64]* %6, align 8, !dbg !3442
call void @runtime.bounds_check_error([2 x i64] %36, i32 179, i32 39, i64 %34, i64 %30), !dbg !3442
%37 = getelementptr i8, i8* %29, i64 %34, !dbg !3442
%38 = load i8, i8* %37, align 1, !dbg !3442
%39 = load [2 x i64], [2 x i64]* %11, align 8, !dbg !3442
%40 = call i64 @strings._write_byte-1512([2 x i64] %39, i8 %38, i8* %__.context_ptr), !dbg !3442
%41 = add i64 %28, %40, !dbg !3442
call void @llvm.dbg.value(metadata i64 %41, metadata !3434, metadata !DIExpression()), !dbg !3446
%42 = load i8*, i8** getelementptr inbounds (%..string, %..string* @strings.DIGITS_LOWER-1532, i64 0, i32 0), align 8, !dbg !3445
%43 = load i64, i64* getelementptr inbounds (%..string, %..string* @strings.DIGITS_LOWER-1532, i64 0, i32 1), align 8, !dbg !3445
%44 = load i8, i8* %31, align 1, !dbg !3445
%45 = and i8 %44, 15, !dbg !3445
%46 = zext i8 %45 to i64, !dbg !3445
%47 = bitcast [2 x i64]* %7 to %..string*, !dbg !3445
store %..string { i8* getelementptr inbounds ([54 x i8], [54 x i8]* @"csbs$a1", i64 0, i64 0), i64 53 }, %..string* %47, align 8, !dbg !3445
%48 = load [2 x i64], [2 x i64]* %7, align 8, !dbg !3445
call void @runtime.bounds_check_error([2 x i64] %48, i32 180, i32 39, i64 %46, i64 %43), !dbg !3445
%49 = getelementptr i8, i8* %42, i64 %46, !dbg !3445
%50 = load i8, i8* %49, align 1, !dbg !3445
%51 = load [2 x i64], [2 x i64]* %11, align 8, !dbg !3445
%52 = call i64 @strings._write_byte-1512([2 x i64] %51, i8 %50, i8* %__.context_ptr), !dbg !3445
%53 = add i64 %41, %52, !dbg !3445
call void @llvm.dbg.value(metadata i64 %53, metadata !3434, metadata !DIExpression()), !dbg !3446
br label %if.done, !dbg !3450
if.else: ; preds = %cmp.and, %decls
%54 = load [2 x i64], [2 x i64]* %11, align 8, !dbg !3453
%55 = call i64 @strings.write_escaped_rune_writer([2 x i64] %54, i32 %1, i8 39, i1 false, i8* %__.context_ptr), !dbg !3453
%56 = add i64 %13, %55, !dbg !3453
call void @llvm.dbg.value(metadata i64 %56, metadata !3434, metadata !DIExpression()), !dbg !3446
br label %if.done, !dbg !3450
if.done: ; preds = %if.else, %if.then
%.0 = phi i64 [ %53, %if.then ], [ %56, %if.else ], !dbg !3455
call void @llvm.dbg.value(metadata i64 %.0, metadata !3434, metadata !DIExpression()), !dbg !3446
%57 = load [2 x i64], [2 x i64]* %11, align 8, !dbg !3456
%58 = call i64 @strings._write_byte-1512([2 x i64] %57, i8 39, i8* %__.context_ptr), !dbg !3456
%59 = add i64 %.0, %58, !dbg !3456
call void @llvm.dbg.value(metadata i64 %59, metadata !3434, metadata !DIExpression()), !dbg !3446
call void @llvm.dbg.value(metadata i64 %59, metadata !3434, metadata !DIExpression()), !dbg !3446
ret i64 %59, !dbg !3457
}
define internal i64 @strings.write_string_writer([2 x i64] %0, [2 x i64] %1, i8* noalias nocapture nonnull %__.context_ptr) !dbg !3458 {
decls:
%2 = alloca %io.Writer, align 8
call void @llvm.dbg.declare(metadata %io.Writer* %3, metadata !3462, metadata !DIExpression()), !dbg !3466
%3 = alloca %io.Writer, align 8
%4 = alloca %..string, align 8
call void @llvm.dbg.declare(metadata %..string* %5, metadata !3463, metadata !DIExpression()), !dbg !3467
%5 = alloca %..string, align 8
%6 = alloca { i64, i32 }, align 8, !dbg !3468
%7 = bitcast %io.Writer* %2 to [2 x i64]*
store [2 x i64] %0, [2 x i64]* %7, align 8
%8 = bitcast %io.Writer* %3 to i8*
%9 = bitcast %io.Writer* %2 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %8, i8* align 8 %9, i64 16, i1 false)
%10 = bitcast %..string* %4 to [2 x i64]*
store [2 x i64] %1, [2 x i64]* %10, align 8
%11 = bitcast %..string* %5 to i8*
%12 = bitcast %..string* %4 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %11, i8* align 8 %12, i64 16, i1 false)
call void @llvm.dbg.value(metadata i64 0, metadata !3464, metadata !DIExpression()), !dbg !3470
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !3465, metadata !DIExpression()), !dbg !3471
%13 = bitcast %..string* %5 to { i8*, i64 }*, !dbg !3468
%14 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !3468
%15 = load [2 x i64], [2 x i64]* %14, align 8, !dbg !3468
%16 = bitcast { i8*, i64 }* %13 to [2 x i64]*, !dbg !3468
%17 = load [2 x i64], [2 x i64]* %16, align 8, !dbg !3468
%18 = call [2 x i64] @io.write([2 x i64] %15, [2 x i64] %17, i8* %__.context_ptr), !dbg !3468
%19 = bitcast { i64, i32 }* %6 to [2 x i64]*, !dbg !3468
store [2 x i64] %18, [2 x i64]* %19, align 8, !dbg !3468
%20 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %6, i32 0, i32 0, !dbg !3468
%21 = load i64, i64* %20, align 8, !dbg !3468
call void @llvm.dbg.value(metadata i64 %21, metadata !3464, metadata !DIExpression()), !dbg !3470
ret i64 %21, !dbg !3472
}
; Function Attrs: nounwind
define dso_local i64 @runtime.cstring_len(i8* %0) #0 !dbg !3473 {
decls:
call void @llvm.dbg.value(metadata i8* %0, metadata !3477, metadata !DIExpression()), !dbg !3481
call void @llvm.dbg.value(metadata i64 0, metadata !3478, metadata !DIExpression()), !dbg !3482
%1 = ptrtoint i8* %0 to i64, !dbg !3483
call void @llvm.dbg.value(metadata i64 %1, metadata !3478, metadata !DIExpression()), !dbg !3482
call void @llvm.dbg.value(metadata i64 %1, metadata !3480, metadata !DIExpression()), !dbg !3482
br label %for.loop, !dbg !3484
for.loop: ; preds = %for.body, %decls
%.0 = phi i64 [ %1, %decls ], [ %6, %for.body ], !dbg !3482
call void @llvm.dbg.value(metadata i64 %.0, metadata !3480, metadata !DIExpression()), !dbg !3482
%2 = icmp ne i64 %.0, 0, !dbg !3484
br i1 %2, label %cmp.and, label %for.done, !dbg !3484
cmp.and: ; preds = %for.loop
%3 = inttoptr i64 %.0 to i8*, !dbg !3484
%4 = load i8, i8* %3, align 1, !dbg !3484
%5 = icmp ne i8 %4, 0, !dbg !3484
br i1 %5, label %for.body, label %for.done, !dbg !3484
for.body: ; preds = %cmp.and
%6 = add i64 %.0, 1, !dbg !3485
call void @llvm.dbg.value(metadata i64 %6, metadata !3480, metadata !DIExpression()), !dbg !3482
br label %for.loop, !dbg !3484
for.done: ; preds = %cmp.and, %for.loop
%7 = sub i64 %.0, %1, !dbg !3488
ret i64 %7, !dbg !3488
}
; Function Attrs: nounwind
define dso_local [2 x i64] @runtime.cstring_to_string(i8* %0) #0 !dbg !3489 {
decls:
%1 = alloca [2 x i64], align 8, !dbg !3497
%2 = alloca %runtime.Raw_String, align 8, !dbg !3500
call void @llvm.dbg.value(metadata i8* %0, metadata !3493, metadata !DIExpression()), !dbg !3501
%3 = icmp eq i8* %0, null, !dbg !3502
br i1 %3, label %if.then, label %if.done, !dbg !3502
if.then: ; preds = %decls
%4 = bitcast [2 x i64]* %1 to %..string*, !dbg !3497
%5 = bitcast %..string* %4 to i8*, !dbg !3497
call void @llvm.memset.p0i8.i64(i8* align 8 %5, i8 0, i64 16, i1 false), !dbg !3497
%6 = load [2 x i64], [2 x i64]* %1, align 8, !dbg !3497
ret [2 x i64] %6, !dbg !3497
if.done: ; preds = %decls
call void @llvm.dbg.value(metadata i8* null, metadata !3494, metadata !DIExpression()), !dbg !3503
call void @llvm.dbg.value(metadata i8* %0, metadata !3494, metadata !DIExpression()), !dbg !3503
call void @llvm.dbg.value(metadata i64 0, metadata !3496, metadata !DIExpression()), !dbg !3503
%7 = call i64 @runtime.cstring_len(i8* %0), !dbg !3504
call void @llvm.dbg.value(metadata i64 %7, metadata !3496, metadata !DIExpression()), !dbg !3503
%8 = bitcast %runtime.Raw_String* %2 to i8*, !dbg !3500
call void @llvm.memset.p0i8.i64(i8* align 8 %8, i8 0, i64 16, i1 false), !dbg !3500
%9 = getelementptr inbounds %runtime.Raw_String, %runtime.Raw_String* %2, i32 0, i32 0, !dbg !3500
store i8* %0, i8** %9, align 8, !dbg !3500
%10 = getelementptr inbounds %runtime.Raw_String, %runtime.Raw_String* %2, i32 0, i32 1, !dbg !3500
store i64 %7, i64* %10, align 8, !dbg !3500
%11 = bitcast %runtime.Raw_String* %2 to %..string*, !dbg !3500
%12 = bitcast %..string* %11 to [2 x i64]*, !dbg !3500
%13 = load [2 x i64], [2 x i64]* %12, align 8, !dbg !3500
ret [2 x i64] %13, !dbg !3500
}
define internal i64 @strings.write_quoted_string_writer([2 x i64] %0, [2 x i64] %1, i8 %2, i8* noalias nocapture nonnull %__.context_ptr) !dbg !3505 {
decls:
%3 = alloca { i8*, i64 }, align 8
%4 = alloca { i8*, i64 }, align 8
%5 = alloca { i32, i64 }, align 8, !dbg !3520
%6 = alloca [2 x i64], align 8, !dbg !3555
%7 = alloca [2 x i64], align 8, !dbg !3556
%8 = alloca [2 x i64], align 8, !dbg !3557
%9 = alloca { i32, i64 }, align 8, !dbg !3557
%10 = alloca %utf8.Accept_Range, align 1, !dbg !3558
%11 = alloca [2 x i64], align 8, !dbg !3558
%12 = alloca { i32, i64 }, align 8, !dbg !3559
%13 = alloca [2 x i64], align 8, !dbg !3562
%14 = alloca { i32, i64 }, align 8, !dbg !3563
%15 = alloca { i32, i64 }, align 8, !dbg !3566
%16 = alloca [2 x i64], align 8, !dbg !3569
%17 = alloca { i32, i64 }, align 8, !dbg !3570
%18 = alloca { i32, i64 }, align 8, !dbg !3573
%19 = alloca [2 x i64], align 8, !dbg !3576
%20 = alloca { i32, i64 }, align 8, !dbg !3577
%21 = alloca { i32, i64 }, align 8, !dbg !3580
%22 = alloca %..string, align 8
%23 = alloca %..string, align 8
%24 = alloca { i32, i64 }, align 8, !dbg !3581
%25 = alloca { i32, i64 }, align 8, !dbg !3581
%26 = alloca %io.Writer, align 8
call void @llvm.dbg.declare(metadata %io.Writer* %27, metadata !3509, metadata !DIExpression()), !dbg !3582
%27 = alloca %io.Writer, align 8
%28 = alloca %..string, align 8
call void @llvm.dbg.declare(metadata %..string* %29, metadata !3510, metadata !DIExpression()), !dbg !3583
%29 = alloca %..string, align 8
call void @llvm.dbg.declare(metadata %..string* %30, metadata !3517, metadata !DIExpression()), !dbg !3584
%30 = alloca %..string, align 8, !dbg !3585
%31 = alloca [2 x i64], align 8, !dbg !3586
%32 = alloca { i32, i64 }, align 8, !dbg !3587
%33 = alloca [2 x i64], align 8, !dbg !3588
%34 = alloca [2 x i64], align 8, !dbg !3588
%35 = alloca [2 x i64], align 8, !dbg !3591
%36 = alloca [2 x i64], align 8, !dbg !3591
%37 = alloca [2 x i64], align 8, !dbg !3592
%38 = alloca %..string, align 8, !dbg !3592
%39 = bitcast %io.Writer* %26 to [2 x i64]*
store [2 x i64] %0, [2 x i64]* %39, align 8
%40 = bitcast %io.Writer* %27 to i8*
%41 = bitcast %io.Writer* %26 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %40, i8* align 8 %41, i64 16, i1 false)
%42 = bitcast %..string* %28 to [2 x i64]*
store [2 x i64] %1, [2 x i64]* %42, align 8
%43 = bitcast %..string* %29 to i8*
%44 = bitcast %..string* %28 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %43, i8* align 8 %44, i64 16, i1 false)
call void @llvm.dbg.value(metadata i8 %2, metadata !3511, metadata !DIExpression()), !dbg !3593
call void @llvm.dbg.value(metadata i64 0, metadata !3512, metadata !DIExpression()), !dbg !3593
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !3513, metadata !DIExpression()), !dbg !3594
%45 = bitcast %io.Writer* %27 to [2 x i64]*, !dbg !3595
%46 = load [2 x i64], [2 x i64]* %45, align 8, !dbg !3595
%47 = call i64 @strings._write_byte-1512([2 x i64] %46, i8 %2, i8* %__.context_ptr), !dbg !3595
call void @llvm.dbg.value(metadata i64 %47, metadata !3512, metadata !DIExpression()), !dbg !3593
call void @llvm.dbg.value(metadata i64 0, metadata !3514, metadata !DIExpression()), !dbg !3596
%48 = bitcast %..string* %30 to i8*, !dbg !3585
%49 = getelementptr i8, i8* %48, i64 16, !dbg !3585
call void @llvm.memset.p0i8.i64(i8* align 8 %49, i8 0, i64 0, i1 false), !dbg !3585
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %48, i8* align 8 %43, i64 16, i1 false), !dbg !3585
br label %for.loop, !dbg !3597
for.loop: ; preds = %for.post, %decls
%.03 = phi i64 [ %47, %decls ], [ %.1, %for.post ], !dbg !3598
call void @llvm.dbg.value(metadata i64 %.03, metadata !3512, metadata !DIExpression()), !dbg !3593
%50 = getelementptr inbounds %..string, %..string* %30, i32 0, i32 1, !dbg !3597
%51 = load i64, i64* %50, align 8, !dbg !3597
%52 = icmp sgt i64 %51, 0, !dbg !3597
br i1 %52, label %for.body, label %for.done, !dbg !3597
for.body: ; preds = %for.loop
call void @llvm.dbg.value(metadata i32 0, metadata !3518, metadata !DIExpression()), !dbg !3599
%53 = getelementptr inbounds %..string, %..string* %30, i32 0, i32 0, !dbg !3586
%54 = load i8*, i8** %53, align 8, !dbg !3586
%55 = bitcast [2 x i64]* %31 to %..string*, !dbg !3586
store %..string { i8* getelementptr inbounds ([54 x i8], [54 x i8]* @"csbs$a1", i64 0, i64 0), i64 53 }, %..string* %55, align 8, !dbg !3586
%56 = load [2 x i64], [2 x i64]* %31, align 8, !dbg !3586
call void @runtime.bounds_check_error([2 x i64] %56, i32 239, i32 15, i64 0, i64 %51), !dbg !3586
%57 = load i8, i8* %54, align 1, !dbg !3586
%58 = zext i8 %57 to i32, !dbg !3586
call void @llvm.dbg.value(metadata i32 %58, metadata !3518, metadata !DIExpression()), !dbg !3599
call void @llvm.dbg.value(metadata i64 1, metadata !3514, metadata !DIExpression()), !dbg !3596
%59 = icmp sge i32 %58, 128, !dbg !3600
br i1 %59, label %if.then, label %if.done, !dbg !3600
if.then: ; preds = %for.body
%60 = bitcast %..string* %30 to [2 x i64]*, !dbg !3587
%61 = load [2 x i64], [2 x i64]* %60, align 8, !dbg !3587
%62 = bitcast %..string* %22 to i8*, !dbg !3601
call void @llvm.lifetime.start.p0i8(i64 16, i8* %62), !dbg !3601
%63 = bitcast %..string* %23 to i8*, !dbg !3601
call void @llvm.lifetime.start.p0i8(i64 16, i8* %63), !dbg !3601
%64 = bitcast { i32, i64 }* %24 to i8*, !dbg !3601
call void @llvm.lifetime.start.p0i8(i64 16, i8* %64), !dbg !3601
%65 = bitcast { i32, i64 }* %25 to i8*, !dbg !3601
call void @llvm.lifetime.start.p0i8(i64 16, i8* %65), !dbg !3601
call void @llvm.dbg.declare(metadata !112, metadata !3550, metadata !DIExpression()), !dbg !3601
%66 = bitcast %..string* %22 to [2 x i64]*
store [2 x i64] %61, [2 x i64]* %66, align 8
%67 = bitcast %..string* %23 to i8*
%68 = bitcast %..string* %22 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %67, i8* align 8 %68, i64 16, i1 false)
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !3551, metadata !DIExpression()), !dbg !3602
%69 = bitcast %..string* %23 to { i8*, i64 }*, !dbg !3581
%70 = bitcast { i8*, i64 }* %69 to [2 x i64]*, !dbg !3581
%71 = load [2 x i64], [2 x i64]* %70, align 8, !dbg !3581
%72 = bitcast { i8*, i64 }* %3 to i8*, !dbg !3603
call void @llvm.lifetime.start.p0i8(i64 16, i8* %72), !dbg !3603
%73 = bitcast { i8*, i64 }* %4 to i8*, !dbg !3603
call void @llvm.lifetime.start.p0i8(i64 16, i8* %73), !dbg !3603
%74 = bitcast { i32, i64 }* %5 to i8*, !dbg !3603
call void @llvm.lifetime.start.p0i8(i64 16, i8* %74), !dbg !3603
%75 = bitcast [2 x i64]* %6 to i8*, !dbg !3603
call void @llvm.lifetime.start.p0i8(i64 16, i8* %75), !dbg !3603
%76 = bitcast [2 x i64]* %7 to i8*, !dbg !3603
call void @llvm.lifetime.start.p0i8(i64 16, i8* %76), !dbg !3603
%77 = bitcast [2 x i64]* %8 to i8*, !dbg !3603
call void @llvm.lifetime.start.p0i8(i64 16, i8* %77), !dbg !3603
%78 = bitcast { i32, i64 }* %9 to i8*, !dbg !3603
call void @llvm.lifetime.start.p0i8(i64 16, i8* %78), !dbg !3603
%79 = bitcast %utf8.Accept_Range* %10 to i8*, !dbg !3603
call void @llvm.lifetime.start.p0i8(i64 2, i8* %79), !dbg !3603
%80 = bitcast [2 x i64]* %11 to i8*, !dbg !3603
call void @llvm.lifetime.start.p0i8(i64 16, i8* %80), !dbg !3603
%81 = bitcast { i32, i64 }* %12 to i8*, !dbg !3603
call void @llvm.lifetime.start.p0i8(i64 16, i8* %81), !dbg !3603
%82 = bitcast [2 x i64]* %13 to i8*, !dbg !3603
call void @llvm.lifetime.start.p0i8(i64 16, i8* %82), !dbg !3603
%83 = bitcast { i32, i64 }* %14 to i8*, !dbg !3603
call void @llvm.lifetime.start.p0i8(i64 16, i8* %83), !dbg !3603
%84 = bitcast { i32, i64 }* %15 to i8*, !dbg !3603
call void @llvm.lifetime.start.p0i8(i64 16, i8* %84), !dbg !3603
%85 = bitcast [2 x i64]* %16 to i8*, !dbg !3603
call void @llvm.lifetime.start.p0i8(i64 16, i8* %85), !dbg !3603
%86 = bitcast { i32, i64 }* %17 to i8*, !dbg !3603
call void @llvm.lifetime.start.p0i8(i64 16, i8* %86), !dbg !3603
%87 = bitcast { i32, i64 }* %18 to i8*, !dbg !3603
call void @llvm.lifetime.start.p0i8(i64 16, i8* %87), !dbg !3603
%88 = bitcast [2 x i64]* %19 to i8*, !dbg !3603
call void @llvm.lifetime.start.p0i8(i64 16, i8* %88), !dbg !3603
%89 = bitcast { i32, i64 }* %20 to i8*, !dbg !3603
call void @llvm.lifetime.start.p0i8(i64 16, i8* %89), !dbg !3603
%90 = bitcast { i32, i64 }* %21 to i8*, !dbg !3603
call void @llvm.lifetime.start.p0i8(i64 16, i8* %90), !dbg !3603
call void @llvm.dbg.declare(metadata !112, metadata !3531, metadata !DIExpression()), !dbg !3603
call void @llvm.dbg.declare(metadata !112, metadata !3540, metadata !DIExpression()), !dbg !3558
%91 = bitcast { i8*, i64 }* %3 to [2 x i64]*
store [2 x i64] %71, [2 x i64]* %91, align 8
%92 = bitcast { i8*, i64 }* %4 to i8*
%93 = bitcast { i8*, i64 }* %3 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %92, i8* align 8 %93, i64 16, i1 false)
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !3532, metadata !DIExpression()), !dbg !3604
call void @llvm.dbg.value(metadata i64 0, metadata !3533, metadata !DIExpression()), !dbg !3605
%94 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %4, i32 0, i32 1, !dbg !3606
%95 = load i64, i64* %94, align 8, !dbg !3606
call void @llvm.dbg.value(metadata i64 %95, metadata !3533, metadata !DIExpression()), !dbg !3605
%96 = icmp slt i64 %95, 1, !dbg !3607
br i1 %96, label %if.then.i.i, label %if.done.i.i, !dbg !3607
if.then.i.i: ; preds = %if.then
%97 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %5, i32 0, i32 0, !dbg !3520
%98 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %5, i32 0, i32 1, !dbg !3520
store i32 65533, i32* %97, align 4, !dbg !3520
store i64 0, i64* %98, align 8, !dbg !3520
%99 = bitcast { i32, i64 }* %5 to [2 x i64]*, !dbg !3520
%100 = load [2 x i64], [2 x i64]* %99, align 8, !dbg !3520
%101 = bitcast { i8*, i64 }* %3 to i8*, !dbg !3520
call void @llvm.lifetime.end.p0i8(i64 16, i8* %101), !dbg !3520
%102 = bitcast { i8*, i64 }* %4 to i8*, !dbg !3520
call void @llvm.lifetime.end.p0i8(i64 16, i8* %102), !dbg !3520
%103 = bitcast { i32, i64 }* %5 to i8*, !dbg !3520
call void @llvm.lifetime.end.p0i8(i64 16, i8* %103), !dbg !3520
%104 = bitcast [2 x i64]* %6 to i8*, !dbg !3520
call void @llvm.lifetime.end.p0i8(i64 16, i8* %104), !dbg !3520
%105 = bitcast [2 x i64]* %7 to i8*, !dbg !3520
call void @llvm.lifetime.end.p0i8(i64 16, i8* %105), !dbg !3520
%106 = bitcast [2 x i64]* %8 to i8*, !dbg !3520
call void @llvm.lifetime.end.p0i8(i64 16, i8* %106), !dbg !3520
%107 = bitcast { i32, i64 }* %9 to i8*, !dbg !3520
call void @llvm.lifetime.end.p0i8(i64 16, i8* %107), !dbg !3520
%108 = bitcast %utf8.Accept_Range* %10 to i8*, !dbg !3520
call void @llvm.lifetime.end.p0i8(i64 2, i8* %108), !dbg !3520
%109 = bitcast [2 x i64]* %11 to i8*, !dbg !3520
call void @llvm.lifetime.end.p0i8(i64 16, i8* %109), !dbg !3520
%110 = bitcast { i32, i64 }* %12 to i8*, !dbg !3520
call void @llvm.lifetime.end.p0i8(i64 16, i8* %110), !dbg !3520
%111 = bitcast [2 x i64]* %13 to i8*, !dbg !3520
call void @llvm.lifetime.end.p0i8(i64 16, i8* %111), !dbg !3520
%112 = bitcast { i32, i64 }* %14 to i8*, !dbg !3520
call void @llvm.lifetime.end.p0i8(i64 16, i8* %112), !dbg !3520
%113 = bitcast { i32, i64 }* %15 to i8*, !dbg !3520
call void @llvm.lifetime.end.p0i8(i64 16, i8* %113), !dbg !3520
%114 = bitcast [2 x i64]* %16 to i8*, !dbg !3520
call void @llvm.lifetime.end.p0i8(i64 16, i8* %114), !dbg !3520
%115 = bitcast { i32, i64 }* %17 to i8*, !dbg !3520
call void @llvm.lifetime.end.p0i8(i64 16, i8* %115), !dbg !3520
%116 = bitcast { i32, i64 }* %18 to i8*, !dbg !3520
call void @llvm.lifetime.end.p0i8(i64 16, i8* %116), !dbg !3520
%117 = bitcast [2 x i64]* %19 to i8*, !dbg !3520
call void @llvm.lifetime.end.p0i8(i64 16, i8* %117), !dbg !3520
%118 = bitcast { i32, i64 }* %20 to i8*, !dbg !3520
call void @llvm.lifetime.end.p0i8(i64 16, i8* %118), !dbg !3520
%119 = bitcast { i32, i64 }* %21 to i8*, !dbg !3520
call void @llvm.lifetime.end.p0i8(i64 16, i8* %119), !dbg !3520
br label %utf8.decode_rune_in_string.exit, !dbg !3520
if.done.i.i: ; preds = %if.then
call void @llvm.dbg.value(metadata i8 0, metadata !3534, metadata !DIExpression()), !dbg !3605
%120 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %4, i32 0, i32 0, !dbg !3555
%121 = load i8*, i8** %120, align 8, !dbg !3555
%122 = bitcast [2 x i64]* %6 to %..string*, !dbg !3555
store %..string { i8* getelementptr inbounds ([56 x i8], [56 x i8]* @"csbs$7c", i64 0, i64 0), i64 55 }, %..string* %122, align 8, !dbg !3555
%123 = load [2 x i64], [2 x i64]* %6, align 8, !dbg !3555
call void @runtime.bounds_check_error([2 x i64] %123, i32 101, i32 10, i64 0, i64 %95), !dbg !3555
%124 = load i8, i8* %121, align 1, !dbg !3555
call void @llvm.dbg.value(metadata i8 %124, metadata !3534, metadata !DIExpression()), !dbg !3605
call void @llvm.dbg.value(metadata i8 0, metadata !3535, metadata !DIExpression()), !dbg !3605
%125 = zext i8 %124 to i64, !dbg !3556
%126 = getelementptr [256 x i8], [256 x i8]* @utf8.accept_sizes, i64 0, i64 %125, !dbg !3556
%127 = bitcast [2 x i64]* %7 to %..string*, !dbg !3556
store %..string { i8* getelementptr inbounds ([56 x i8], [56 x i8]* @"csbs$7c", i64 0, i64 0), i64 55 }, %..string* %127, align 8, !dbg !3556
%128 = load [2 x i64], [2 x i64]* %7, align 8, !dbg !3556
call void @runtime.bounds_check_error([2 x i64] %128, i32 102, i32 20, i64 %125, i64 256), !dbg !3556
%129 = load i8, i8* %126, align 1, !dbg !3556
call void @llvm.dbg.value(metadata i8 %129, metadata !3535, metadata !DIExpression()), !dbg !3605
%130 = icmp uge i8 %129, -16, !dbg !3608
br i1 %130, label %if.then1.i.i, label %if.done2.i.i, !dbg !3608
if.then1.i.i: ; preds = %if.done.i.i
call void @llvm.dbg.value(metadata i32 0, metadata !3536, metadata !DIExpression()), !dbg !3609
%131 = zext i8 %129 to i32, !dbg !3610
%132 = shl i32 %131, 31, !dbg !3610
%133 = ashr i32 %132, 31, !dbg !3610
call void @llvm.dbg.value(metadata i32 %133, metadata !3536, metadata !DIExpression()), !dbg !3609
%134 = load i8*, i8** %120, align 8, !dbg !3557
%135 = load i64, i64* %94, align 8, !dbg !3557
%136 = bitcast [2 x i64]* %8 to %..string*, !dbg !3557
store %..string { i8* getelementptr inbounds ([56 x i8], [56 x i8]* @"csbs$7c", i64 0, i64 0), i64 55 }, %..string* %136, align 8, !dbg !3557
%137 = load [2 x i64], [2 x i64]* %8, align 8, !dbg !3557
call void @runtime.bounds_check_error([2 x i64] %137, i32 105, i32 17, i64 0, i64 %135), !dbg !3557
%138 = load i8, i8* %134, align 1, !dbg !3557
%139 = zext i8 %138 to i32, !dbg !3557
%140 = xor i32 %133, -1, !dbg !3557
%141 = and i32 %139, %140, !dbg !3557
%142 = and i32 65533, %133, !dbg !3557
%143 = or i32 %141, %142, !dbg !3557
%144 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %9, i32 0, i32 0, !dbg !3557
%145 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %9, i32 0, i32 1, !dbg !3557
store i32 %143, i32* %144, align 4, !dbg !3557
store i64 1, i64* %145, align 8, !dbg !3557
%146 = bitcast { i32, i64 }* %9 to [2 x i64]*, !dbg !3557
%147 = load [2 x i64], [2 x i64]* %146, align 8, !dbg !3557
%148 = bitcast { i8*, i64 }* %3 to i8*, !dbg !3557
call void @llvm.lifetime.end.p0i8(i64 16, i8* %148), !dbg !3557
%149 = bitcast { i8*, i64 }* %4 to i8*, !dbg !3557
call void @llvm.lifetime.end.p0i8(i64 16, i8* %149), !dbg !3557
%150 = bitcast { i32, i64 }* %5 to i8*, !dbg !3557
call void @llvm.lifetime.end.p0i8(i64 16, i8* %150), !dbg !3557
%151 = bitcast [2 x i64]* %6 to i8*, !dbg !3557
call void @llvm.lifetime.end.p0i8(i64 16, i8* %151), !dbg !3557
%152 = bitcast [2 x i64]* %7 to i8*, !dbg !3557
call void @llvm.lifetime.end.p0i8(i64 16, i8* %152), !dbg !3557
%153 = bitcast [2 x i64]* %8 to i8*, !dbg !3557
call void @llvm.lifetime.end.p0i8(i64 16, i8* %153), !dbg !3557
%154 = bitcast { i32, i64 }* %9 to i8*, !dbg !3557
call void @llvm.lifetime.end.p0i8(i64 16, i8* %154), !dbg !3557
%155 = bitcast %utf8.Accept_Range* %10 to i8*, !dbg !3557
call void @llvm.lifetime.end.p0i8(i64 2, i8* %155), !dbg !3557
%156 = bitcast [2 x i64]* %11 to i8*, !dbg !3557
call void @llvm.lifetime.end.p0i8(i64 16, i8* %156), !dbg !3557
%157 = bitcast { i32, i64 }* %12 to i8*, !dbg !3557
call void @llvm.lifetime.end.p0i8(i64 16, i8* %157), !dbg !3557
%158 = bitcast [2 x i64]* %13 to i8*, !dbg !3557
call void @llvm.lifetime.end.p0i8(i64 16, i8* %158), !dbg !3557
%159 = bitcast { i32, i64 }* %14 to i8*, !dbg !3557
call void @llvm.lifetime.end.p0i8(i64 16, i8* %159), !dbg !3557
%160 = bitcast { i32, i64 }* %15 to i8*, !dbg !3557
call void @llvm.lifetime.end.p0i8(i64 16, i8* %160), !dbg !3557
%161 = bitcast [2 x i64]* %16 to i8*, !dbg !3557
call void @llvm.lifetime.end.p0i8(i64 16, i8* %161), !dbg !3557
%162 = bitcast { i32, i64 }* %17 to i8*, !dbg !3557
call void @llvm.lifetime.end.p0i8(i64 16, i8* %162), !dbg !3557
%163 = bitcast { i32, i64 }* %18 to i8*, !dbg !3557
call void @llvm.lifetime.end.p0i8(i64 16, i8* %163), !dbg !3557
%164 = bitcast [2 x i64]* %19 to i8*, !dbg !3557
call void @llvm.lifetime.end.p0i8(i64 16, i8* %164), !dbg !3557
%165 = bitcast { i32, i64 }* %20 to i8*, !dbg !3557
call void @llvm.lifetime.end.p0i8(i64 16, i8* %165), !dbg !3557
%166 = bitcast { i32, i64 }* %21 to i8*, !dbg !3557
call void @llvm.lifetime.end.p0i8(i64 16, i8* %166), !dbg !3557
br label %utf8.decode_rune_in_string.exit, !dbg !3557
if.done2.i.i: ; preds = %if.done.i.i
call void @llvm.dbg.value(metadata i8 0, metadata !3539, metadata !DIExpression()), !dbg !3605
%167 = and i8 %129, 7, !dbg !3611
call void @llvm.dbg.value(metadata i8 %167, metadata !3539, metadata !DIExpression()), !dbg !3605
%168 = bitcast %utf8.Accept_Range* %10 to i8*, !dbg !3558
call void @llvm.memset.p0i8.i64(i8* %168, i8 0, i64 2, i1 false), !dbg !3558
%169 = lshr i8 %129, 4, !dbg !3558
%170 = zext i8 %169 to i64, !dbg !3558
%171 = getelementptr [5 x %utf8.Accept_Range], [5 x %utf8.Accept_Range]* @utf8.accept_ranges, i64 0, i64 %170, !dbg !3558
%172 = bitcast [2 x i64]* %11 to %..string*, !dbg !3558
store %..string { i8* getelementptr inbounds ([56 x i8], [56 x i8]* @"csbs$7c", i64 0, i64 0), i64 55 }, %..string* %172, align 8, !dbg !3558
%173 = load [2 x i64], [2 x i64]* %11, align 8, !dbg !3558
call void @runtime.bounds_check_error([2 x i64] %173, i32 108, i32 26, i64 %170, i64 5), !dbg !3558
%174 = bitcast %utf8.Accept_Range* %171 to i8*, !dbg !3558
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %168, i8* align 1 %174, i64 2, i1 false), !dbg !3558
%175 = zext i8 %167 to i64, !dbg !3612
%176 = icmp slt i64 %95, %175, !dbg !3612
br i1 %176, label %if.then3.i.i, label %if.done4.i.i, !dbg !3612
if.then3.i.i: ; preds = %if.done2.i.i
%177 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %12, i32 0, i32 0, !dbg !3559
%178 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %12, i32 0, i32 1, !dbg !3559
store i32 65533, i32* %177, align 4, !dbg !3559
store i64 1, i64* %178, align 8, !dbg !3559
%179 = bitcast { i32, i64 }* %12 to [2 x i64]*, !dbg !3559
%180 = load [2 x i64], [2 x i64]* %179, align 8, !dbg !3559
%181 = bitcast { i8*, i64 }* %3 to i8*, !dbg !3559
call void @llvm.lifetime.end.p0i8(i64 16, i8* %181), !dbg !3559
%182 = bitcast { i8*, i64 }* %4 to i8*, !dbg !3559
call void @llvm.lifetime.end.p0i8(i64 16, i8* %182), !dbg !3559
%183 = bitcast { i32, i64 }* %5 to i8*, !dbg !3559
call void @llvm.lifetime.end.p0i8(i64 16, i8* %183), !dbg !3559
%184 = bitcast [2 x i64]* %6 to i8*, !dbg !3559
call void @llvm.lifetime.end.p0i8(i64 16, i8* %184), !dbg !3559
%185 = bitcast [2 x i64]* %7 to i8*, !dbg !3559
call void @llvm.lifetime.end.p0i8(i64 16, i8* %185), !dbg !3559
%186 = bitcast [2 x i64]* %8 to i8*, !dbg !3559
call void @llvm.lifetime.end.p0i8(i64 16, i8* %186), !dbg !3559
%187 = bitcast { i32, i64 }* %9 to i8*, !dbg !3559
call void @llvm.lifetime.end.p0i8(i64 16, i8* %187), !dbg !3559
%188 = bitcast %utf8.Accept_Range* %10 to i8*, !dbg !3559
call void @llvm.lifetime.end.p0i8(i64 2, i8* %188), !dbg !3559
%189 = bitcast [2 x i64]* %11 to i8*, !dbg !3559
call void @llvm.lifetime.end.p0i8(i64 16, i8* %189), !dbg !3559
%190 = bitcast { i32, i64 }* %12 to i8*, !dbg !3559
call void @llvm.lifetime.end.p0i8(i64 16, i8* %190), !dbg !3559
%191 = bitcast [2 x i64]* %13 to i8*, !dbg !3559
call void @llvm.lifetime.end.p0i8(i64 16, i8* %191), !dbg !3559
%192 = bitcast { i32, i64 }* %14 to i8*, !dbg !3559
call void @llvm.lifetime.end.p0i8(i64 16, i8* %192), !dbg !3559
%193 = bitcast { i32, i64 }* %15 to i8*, !dbg !3559
call void @llvm.lifetime.end.p0i8(i64 16, i8* %193), !dbg !3559
%194 = bitcast [2 x i64]* %16 to i8*, !dbg !3559
call void @llvm.lifetime.end.p0i8(i64 16, i8* %194), !dbg !3559
%195 = bitcast { i32, i64 }* %17 to i8*, !dbg !3559
call void @llvm.lifetime.end.p0i8(i64 16, i8* %195), !dbg !3559
%196 = bitcast { i32, i64 }* %18 to i8*, !dbg !3559
call void @llvm.lifetime.end.p0i8(i64 16, i8* %196), !dbg !3559
%197 = bitcast [2 x i64]* %19 to i8*, !dbg !3559
call void @llvm.lifetime.end.p0i8(i64 16, i8* %197), !dbg !3559
%198 = bitcast { i32, i64 }* %20 to i8*, !dbg !3559
call void @llvm.lifetime.end.p0i8(i64 16, i8* %198), !dbg !3559
%199 = bitcast { i32, i64 }* %21 to i8*, !dbg !3559
call void @llvm.lifetime.end.p0i8(i64 16, i8* %199), !dbg !3559
br label %utf8.decode_rune_in_string.exit, !dbg !3559
if.done4.i.i: ; preds = %if.done2.i.i
call void @llvm.dbg.value(metadata i8 0, metadata !3541, metadata !DIExpression()), !dbg !3605
%200 = load i8*, i8** %120, align 8, !dbg !3562
%201 = load i64, i64* %94, align 8, !dbg !3562
%202 = bitcast [2 x i64]* %13 to %..string*, !dbg !3562
store %..string { i8* getelementptr inbounds ([56 x i8], [56 x i8]* @"csbs$7c", i64 0, i64 0), i64 55 }, %..string* %202, align 8, !dbg !3562
%203 = load [2 x i64], [2 x i64]* %13, align 8, !dbg !3562
call void @runtime.bounds_check_error([2 x i64] %203, i32 112, i32 10, i64 1, i64 %201), !dbg !3562
%204 = getelementptr i8, i8* %200, i64 1, !dbg !3562
%205 = load i8, i8* %204, align 1, !dbg !3562
call void @llvm.dbg.value(metadata i8 %205, metadata !3541, metadata !DIExpression()), !dbg !3605
%206 = getelementptr inbounds %utf8.Accept_Range, %utf8.Accept_Range* %10, i32 0, i32 0, !dbg !3613
%207 = load i8, i8* %206, align 1, !dbg !3613
%208 = icmp ult i8 %205, %207, !dbg !3613
br i1 %208, label %if.then5.i.i, label %cmp.or.i.i, !dbg !3613
cmp.or.i.i: ; preds = %if.done4.i.i
%209 = getelementptr inbounds %utf8.Accept_Range, %utf8.Accept_Range* %10, i32 0, i32 1, !dbg !3613
%210 = load i8, i8* %209, align 1, !dbg !3613
%211 = icmp ult i8 %210, %205, !dbg !3613
br i1 %211, label %if.then5.i.i, label %if.done6.i.i, !dbg !3613
if.then5.i.i: ; preds = %cmp.or.i.i, %if.done4.i.i
%212 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %14, i32 0, i32 0, !dbg !3563
%213 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %14, i32 0, i32 1, !dbg !3563
store i32 65533, i32* %212, align 4, !dbg !3563
store i64 1, i64* %213, align 8, !dbg !3563
%214 = bitcast { i32, i64 }* %14 to [2 x i64]*, !dbg !3563
%215 = load [2 x i64], [2 x i64]* %214, align 8, !dbg !3563
%216 = bitcast { i8*, i64 }* %3 to i8*, !dbg !3563
call void @llvm.lifetime.end.p0i8(i64 16, i8* %216), !dbg !3563
%217 = bitcast { i8*, i64 }* %4 to i8*, !dbg !3563
call void @llvm.lifetime.end.p0i8(i64 16, i8* %217), !dbg !3563
%218 = bitcast { i32, i64 }* %5 to i8*, !dbg !3563
call void @llvm.lifetime.end.p0i8(i64 16, i8* %218), !dbg !3563
%219 = bitcast [2 x i64]* %6 to i8*, !dbg !3563
call void @llvm.lifetime.end.p0i8(i64 16, i8* %219), !dbg !3563
%220 = bitcast [2 x i64]* %7 to i8*, !dbg !3563
call void @llvm.lifetime.end.p0i8(i64 16, i8* %220), !dbg !3563
%221 = bitcast [2 x i64]* %8 to i8*, !dbg !3563
call void @llvm.lifetime.end.p0i8(i64 16, i8* %221), !dbg !3563
%222 = bitcast { i32, i64 }* %9 to i8*, !dbg !3563
call void @llvm.lifetime.end.p0i8(i64 16, i8* %222), !dbg !3563
%223 = bitcast %utf8.Accept_Range* %10 to i8*, !dbg !3563
call void @llvm.lifetime.end.p0i8(i64 2, i8* %223), !dbg !3563
%224 = bitcast [2 x i64]* %11 to i8*, !dbg !3563
call void @llvm.lifetime.end.p0i8(i64 16, i8* %224), !dbg !3563
%225 = bitcast { i32, i64 }* %12 to i8*, !dbg !3563
call void @llvm.lifetime.end.p0i8(i64 16, i8* %225), !dbg !3563
%226 = bitcast [2 x i64]* %13 to i8*, !dbg !3563
call void @llvm.lifetime.end.p0i8(i64 16, i8* %226), !dbg !3563
%227 = bitcast { i32, i64 }* %14 to i8*, !dbg !3563
call void @llvm.lifetime.end.p0i8(i64 16, i8* %227), !dbg !3563
%228 = bitcast { i32, i64 }* %15 to i8*, !dbg !3563
call void @llvm.lifetime.end.p0i8(i64 16, i8* %228), !dbg !3563
%229 = bitcast [2 x i64]* %16 to i8*, !dbg !3563
call void @llvm.lifetime.end.p0i8(i64 16, i8* %229), !dbg !3563
%230 = bitcast { i32, i64 }* %17 to i8*, !dbg !3563
call void @llvm.lifetime.end.p0i8(i64 16, i8* %230), !dbg !3563
%231 = bitcast { i32, i64 }* %18 to i8*, !dbg !3563
call void @llvm.lifetime.end.p0i8(i64 16, i8* %231), !dbg !3563
%232 = bitcast [2 x i64]* %19 to i8*, !dbg !3563
call void @llvm.lifetime.end.p0i8(i64 16, i8* %232), !dbg !3563
%233 = bitcast { i32, i64 }* %20 to i8*, !dbg !3563
call void @llvm.lifetime.end.p0i8(i64 16, i8* %233), !dbg !3563
%234 = bitcast { i32, i64 }* %21 to i8*, !dbg !3563
call void @llvm.lifetime.end.p0i8(i64 16, i8* %234), !dbg !3563
br label %utf8.decode_rune_in_string.exit, !dbg !3563
if.done6.i.i: ; preds = %cmp.or.i.i
%235 = icmp eq i8 %167, 2, !dbg !3614
br i1 %235, label %if.then7.i.i, label %if.done8.i.i, !dbg !3614
if.then7.i.i: ; preds = %if.done6.i.i
%236 = and i8 %124, 31, !dbg !3566
%237 = zext i8 %236 to i32, !dbg !3566
%238 = shl i32 %237, 6, !dbg !3566
%239 = and i8 %205, 63, !dbg !3566
%240 = zext i8 %239 to i32, !dbg !3566
%241 = or i32 %238, %240, !dbg !3566
%242 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %15, i32 0, i32 0, !dbg !3566
%243 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %15, i32 0, i32 1, !dbg !3566
store i32 %241, i32* %242, align 4, !dbg !3566
store i64 2, i64* %243, align 8, !dbg !3566
%244 = bitcast { i32, i64 }* %15 to [2 x i64]*, !dbg !3566
%245 = load [2 x i64], [2 x i64]* %244, align 8, !dbg !3566
%246 = bitcast { i8*, i64 }* %3 to i8*, !dbg !3566
call void @llvm.lifetime.end.p0i8(i64 16, i8* %246), !dbg !3566
%247 = bitcast { i8*, i64 }* %4 to i8*, !dbg !3566
call void @llvm.lifetime.end.p0i8(i64 16, i8* %247), !dbg !3566
%248 = bitcast { i32, i64 }* %5 to i8*, !dbg !3566
call void @llvm.lifetime.end.p0i8(i64 16, i8* %248), !dbg !3566
%249 = bitcast [2 x i64]* %6 to i8*, !dbg !3566
call void @llvm.lifetime.end.p0i8(i64 16, i8* %249), !dbg !3566
%250 = bitcast [2 x i64]* %7 to i8*, !dbg !3566
call void @llvm.lifetime.end.p0i8(i64 16, i8* %250), !dbg !3566
%251 = bitcast [2 x i64]* %8 to i8*, !dbg !3566
call void @llvm.lifetime.end.p0i8(i64 16, i8* %251), !dbg !3566
%252 = bitcast { i32, i64 }* %9 to i8*, !dbg !3566
call void @llvm.lifetime.end.p0i8(i64 16, i8* %252), !dbg !3566
%253 = bitcast %utf8.Accept_Range* %10 to i8*, !dbg !3566
call void @llvm.lifetime.end.p0i8(i64 2, i8* %253), !dbg !3566
%254 = bitcast [2 x i64]* %11 to i8*, !dbg !3566
call void @llvm.lifetime.end.p0i8(i64 16, i8* %254), !dbg !3566
%255 = bitcast { i32, i64 }* %12 to i8*, !dbg !3566
call void @llvm.lifetime.end.p0i8(i64 16, i8* %255), !dbg !3566
%256 = bitcast [2 x i64]* %13 to i8*, !dbg !3566
call void @llvm.lifetime.end.p0i8(i64 16, i8* %256), !dbg !3566
%257 = bitcast { i32, i64 }* %14 to i8*, !dbg !3566
call void @llvm.lifetime.end.p0i8(i64 16, i8* %257), !dbg !3566
%258 = bitcast { i32, i64 }* %15 to i8*, !dbg !3566
call void @llvm.lifetime.end.p0i8(i64 16, i8* %258), !dbg !3566
%259 = bitcast [2 x i64]* %16 to i8*, !dbg !3566
call void @llvm.lifetime.end.p0i8(i64 16, i8* %259), !dbg !3566
%260 = bitcast { i32, i64 }* %17 to i8*, !dbg !3566
call void @llvm.lifetime.end.p0i8(i64 16, i8* %260), !dbg !3566
%261 = bitcast { i32, i64 }* %18 to i8*, !dbg !3566
call void @llvm.lifetime.end.p0i8(i64 16, i8* %261), !dbg !3566
%262 = bitcast [2 x i64]* %19 to i8*, !dbg !3566
call void @llvm.lifetime.end.p0i8(i64 16, i8* %262), !dbg !3566
%263 = bitcast { i32, i64 }* %20 to i8*, !dbg !3566
call void @llvm.lifetime.end.p0i8(i64 16, i8* %263), !dbg !3566
%264 = bitcast { i32, i64 }* %21 to i8*, !dbg !3566
call void @llvm.lifetime.end.p0i8(i64 16, i8* %264), !dbg !3566
br label %utf8.decode_rune_in_string.exit, !dbg !3566
if.done8.i.i: ; preds = %if.done6.i.i
call void @llvm.dbg.value(metadata i8 0, metadata !3542, metadata !DIExpression()), !dbg !3605
%265 = load i8*, i8** %120, align 8, !dbg !3569
%266 = load i64, i64* %94, align 8, !dbg !3569
%267 = bitcast [2 x i64]* %16 to %..string*, !dbg !3569
store %..string { i8* getelementptr inbounds ([56 x i8], [56 x i8]* @"csbs$7c", i64 0, i64 0), i64 55 }, %..string* %267, align 8, !dbg !3569
%268 = load [2 x i64], [2 x i64]* %16, align 8, !dbg !3569
call void @runtime.bounds_check_error([2 x i64] %268, i32 119, i32 10, i64 2, i64 %266), !dbg !3569
%269 = getelementptr i8, i8* %265, i64 2, !dbg !3569
%270 = load i8, i8* %269, align 1, !dbg !3569
call void @llvm.dbg.value(metadata i8 %270, metadata !3542, metadata !DIExpression()), !dbg !3605
%271 = icmp ult i8 %270, -128, !dbg !3615
br i1 %271, label %if.then10.i.i, label %cmp.or9.i.i, !dbg !3615
cmp.or9.i.i: ; preds = %if.done8.i.i
%272 = icmp ult i8 -65, %270, !dbg !3615
br i1 %272, label %if.then10.i.i, label %if.done11.i.i, !dbg !3615
if.then10.i.i: ; preds = %cmp.or9.i.i, %if.done8.i.i
%273 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %17, i32 0, i32 0, !dbg !3570
%274 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %17, i32 0, i32 1, !dbg !3570
store i32 65533, i32* %273, align 4, !dbg !3570
store i64 1, i64* %274, align 8, !dbg !3570
%275 = bitcast { i32, i64 }* %17 to [2 x i64]*, !dbg !3570
%276 = load [2 x i64], [2 x i64]* %275, align 8, !dbg !3570
%277 = bitcast { i8*, i64 }* %3 to i8*, !dbg !3570
call void @llvm.lifetime.end.p0i8(i64 16, i8* %277), !dbg !3570
%278 = bitcast { i8*, i64 }* %4 to i8*, !dbg !3570
call void @llvm.lifetime.end.p0i8(i64 16, i8* %278), !dbg !3570
%279 = bitcast { i32, i64 }* %5 to i8*, !dbg !3570
call void @llvm.lifetime.end.p0i8(i64 16, i8* %279), !dbg !3570
%280 = bitcast [2 x i64]* %6 to i8*, !dbg !3570
call void @llvm.lifetime.end.p0i8(i64 16, i8* %280), !dbg !3570
%281 = bitcast [2 x i64]* %7 to i8*, !dbg !3570
call void @llvm.lifetime.end.p0i8(i64 16, i8* %281), !dbg !3570
%282 = bitcast [2 x i64]* %8 to i8*, !dbg !3570
call void @llvm.lifetime.end.p0i8(i64 16, i8* %282), !dbg !3570
%283 = bitcast { i32, i64 }* %9 to i8*, !dbg !3570
call void @llvm.lifetime.end.p0i8(i64 16, i8* %283), !dbg !3570
%284 = bitcast %utf8.Accept_Range* %10 to i8*, !dbg !3570
call void @llvm.lifetime.end.p0i8(i64 2, i8* %284), !dbg !3570
%285 = bitcast [2 x i64]* %11 to i8*, !dbg !3570
call void @llvm.lifetime.end.p0i8(i64 16, i8* %285), !dbg !3570
%286 = bitcast { i32, i64 }* %12 to i8*, !dbg !3570
call void @llvm.lifetime.end.p0i8(i64 16, i8* %286), !dbg !3570
%287 = bitcast [2 x i64]* %13 to i8*, !dbg !3570
call void @llvm.lifetime.end.p0i8(i64 16, i8* %287), !dbg !3570
%288 = bitcast { i32, i64 }* %14 to i8*, !dbg !3570
call void @llvm.lifetime.end.p0i8(i64 16, i8* %288), !dbg !3570
%289 = bitcast { i32, i64 }* %15 to i8*, !dbg !3570
call void @llvm.lifetime.end.p0i8(i64 16, i8* %289), !dbg !3570
%290 = bitcast [2 x i64]* %16 to i8*, !dbg !3570
call void @llvm.lifetime.end.p0i8(i64 16, i8* %290), !dbg !3570
%291 = bitcast { i32, i64 }* %17 to i8*, !dbg !3570
call void @llvm.lifetime.end.p0i8(i64 16, i8* %291), !dbg !3570
%292 = bitcast { i32, i64 }* %18 to i8*, !dbg !3570
call void @llvm.lifetime.end.p0i8(i64 16, i8* %292), !dbg !3570
%293 = bitcast [2 x i64]* %19 to i8*, !dbg !3570
call void @llvm.lifetime.end.p0i8(i64 16, i8* %293), !dbg !3570
%294 = bitcast { i32, i64 }* %20 to i8*, !dbg !3570
call void @llvm.lifetime.end.p0i8(i64 16, i8* %294), !dbg !3570
%295 = bitcast { i32, i64 }* %21 to i8*, !dbg !3570
call void @llvm.lifetime.end.p0i8(i64 16, i8* %295), !dbg !3570
br label %utf8.decode_rune_in_string.exit, !dbg !3570
if.done11.i.i: ; preds = %cmp.or9.i.i
%296 = icmp eq i8 %167, 3, !dbg !3616
br i1 %296, label %if.then12.i.i, label %if.done13.i.i, !dbg !3616
if.then12.i.i: ; preds = %if.done11.i.i
%297 = and i8 %124, 15, !dbg !3573
%298 = zext i8 %297 to i32, !dbg !3573
%299 = shl i32 %298, 12, !dbg !3573
%300 = and i8 %205, 63, !dbg !3573
%301 = zext i8 %300 to i32, !dbg !3573
%302 = shl i32 %301, 6, !dbg !3573
%303 = or i32 %299, %302, !dbg !3573
%304 = and i8 %270, 63, !dbg !3573
%305 = zext i8 %304 to i32, !dbg !3573
%306 = or i32 %303, %305, !dbg !3573
%307 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %18, i32 0, i32 0, !dbg !3573
%308 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %18, i32 0, i32 1, !dbg !3573
store i32 %306, i32* %307, align 4, !dbg !3573
store i64 3, i64* %308, align 8, !dbg !3573
%309 = bitcast { i32, i64 }* %18 to [2 x i64]*, !dbg !3573
%310 = load [2 x i64], [2 x i64]* %309, align 8, !dbg !3573
%311 = bitcast { i8*, i64 }* %3 to i8*, !dbg !3573
call void @llvm.lifetime.end.p0i8(i64 16, i8* %311), !dbg !3573
%312 = bitcast { i8*, i64 }* %4 to i8*, !dbg !3573
call void @llvm.lifetime.end.p0i8(i64 16, i8* %312), !dbg !3573
%313 = bitcast { i32, i64 }* %5 to i8*, !dbg !3573
call void @llvm.lifetime.end.p0i8(i64 16, i8* %313), !dbg !3573
%314 = bitcast [2 x i64]* %6 to i8*, !dbg !3573
call void @llvm.lifetime.end.p0i8(i64 16, i8* %314), !dbg !3573
%315 = bitcast [2 x i64]* %7 to i8*, !dbg !3573
call void @llvm.lifetime.end.p0i8(i64 16, i8* %315), !dbg !3573
%316 = bitcast [2 x i64]* %8 to i8*, !dbg !3573
call void @llvm.lifetime.end.p0i8(i64 16, i8* %316), !dbg !3573
%317 = bitcast { i32, i64 }* %9 to i8*, !dbg !3573
call void @llvm.lifetime.end.p0i8(i64 16, i8* %317), !dbg !3573
%318 = bitcast %utf8.Accept_Range* %10 to i8*, !dbg !3573
call void @llvm.lifetime.end.p0i8(i64 2, i8* %318), !dbg !3573
%319 = bitcast [2 x i64]* %11 to i8*, !dbg !3573
call void @llvm.lifetime.end.p0i8(i64 16, i8* %319), !dbg !3573
%320 = bitcast { i32, i64 }* %12 to i8*, !dbg !3573
call void @llvm.lifetime.end.p0i8(i64 16, i8* %320), !dbg !3573
%321 = bitcast [2 x i64]* %13 to i8*, !dbg !3573
call void @llvm.lifetime.end.p0i8(i64 16, i8* %321), !dbg !3573
%322 = bitcast { i32, i64 }* %14 to i8*, !dbg !3573
call void @llvm.lifetime.end.p0i8(i64 16, i8* %322), !dbg !3573
%323 = bitcast { i32, i64 }* %15 to i8*, !dbg !3573
call void @llvm.lifetime.end.p0i8(i64 16, i8* %323), !dbg !3573
%324 = bitcast [2 x i64]* %16 to i8*, !dbg !3573
call void @llvm.lifetime.end.p0i8(i64 16, i8* %324), !dbg !3573
%325 = bitcast { i32, i64 }* %17 to i8*, !dbg !3573
call void @llvm.lifetime.end.p0i8(i64 16, i8* %325), !dbg !3573
%326 = bitcast { i32, i64 }* %18 to i8*, !dbg !3573
call void @llvm.lifetime.end.p0i8(i64 16, i8* %326), !dbg !3573
%327 = bitcast [2 x i64]* %19 to i8*, !dbg !3573
call void @llvm.lifetime.end.p0i8(i64 16, i8* %327), !dbg !3573
%328 = bitcast { i32, i64 }* %20 to i8*, !dbg !3573
call void @llvm.lifetime.end.p0i8(i64 16, i8* %328), !dbg !3573
%329 = bitcast { i32, i64 }* %21 to i8*, !dbg !3573
call void @llvm.lifetime.end.p0i8(i64 16, i8* %329), !dbg !3573
br label %utf8.decode_rune_in_string.exit, !dbg !3573
if.done13.i.i: ; preds = %if.done11.i.i
call void @llvm.dbg.value(metadata i8 0, metadata !3543, metadata !DIExpression()), !dbg !3605
%330 = load i8*, i8** %120, align 8, !dbg !3576
%331 = load i64, i64* %94, align 8, !dbg !3576
%332 = bitcast [2 x i64]* %19 to %..string*, !dbg !3576
store %..string { i8* getelementptr inbounds ([56 x i8], [56 x i8]* @"csbs$7c", i64 0, i64 0), i64 55 }, %..string* %332, align 8, !dbg !3576
%333 = load [2 x i64], [2 x i64]* %19, align 8, !dbg !3576
call void @runtime.bounds_check_error([2 x i64] %333, i32 126, i32 10, i64 3, i64 %331), !dbg !3576
%334 = getelementptr i8, i8* %330, i64 3, !dbg !3576
%335 = load i8, i8* %334, align 1, !dbg !3576
call void @llvm.dbg.value(metadata i8 %335, metadata !3543, metadata !DIExpression()), !dbg !3605
%336 = icmp ult i8 %335, -128, !dbg !3617
br i1 %336, label %if.then15.i.i, label %cmp.or14.i.i, !dbg !3617
cmp.or14.i.i: ; preds = %if.done13.i.i
%337 = icmp ult i8 -65, %335, !dbg !3617
br i1 %337, label %if.then15.i.i, label %if.done16.i.i, !dbg !3617
if.then15.i.i: ; preds = %cmp.or14.i.i, %if.done13.i.i
%338 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %20, i32 0, i32 0, !dbg !3577
%339 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %20, i32 0, i32 1, !dbg !3577
store i32 65533, i32* %338, align 4, !dbg !3577
store i64 1, i64* %339, align 8, !dbg !3577
%340 = bitcast { i32, i64 }* %20 to [2 x i64]*, !dbg !3577
%341 = load [2 x i64], [2 x i64]* %340, align 8, !dbg !3577
%342 = bitcast { i8*, i64 }* %3 to i8*, !dbg !3577
call void @llvm.lifetime.end.p0i8(i64 16, i8* %342), !dbg !3577
%343 = bitcast { i8*, i64 }* %4 to i8*, !dbg !3577
call void @llvm.lifetime.end.p0i8(i64 16, i8* %343), !dbg !3577
%344 = bitcast { i32, i64 }* %5 to i8*, !dbg !3577
call void @llvm.lifetime.end.p0i8(i64 16, i8* %344), !dbg !3577
%345 = bitcast [2 x i64]* %6 to i8*, !dbg !3577
call void @llvm.lifetime.end.p0i8(i64 16, i8* %345), !dbg !3577
%346 = bitcast [2 x i64]* %7 to i8*, !dbg !3577
call void @llvm.lifetime.end.p0i8(i64 16, i8* %346), !dbg !3577
%347 = bitcast [2 x i64]* %8 to i8*, !dbg !3577
call void @llvm.lifetime.end.p0i8(i64 16, i8* %347), !dbg !3577
%348 = bitcast { i32, i64 }* %9 to i8*, !dbg !3577
call void @llvm.lifetime.end.p0i8(i64 16, i8* %348), !dbg !3577
%349 = bitcast %utf8.Accept_Range* %10 to i8*, !dbg !3577
call void @llvm.lifetime.end.p0i8(i64 2, i8* %349), !dbg !3577
%350 = bitcast [2 x i64]* %11 to i8*, !dbg !3577
call void @llvm.lifetime.end.p0i8(i64 16, i8* %350), !dbg !3577
%351 = bitcast { i32, i64 }* %12 to i8*, !dbg !3577
call void @llvm.lifetime.end.p0i8(i64 16, i8* %351), !dbg !3577
%352 = bitcast [2 x i64]* %13 to i8*, !dbg !3577
call void @llvm.lifetime.end.p0i8(i64 16, i8* %352), !dbg !3577
%353 = bitcast { i32, i64 }* %14 to i8*, !dbg !3577
call void @llvm.lifetime.end.p0i8(i64 16, i8* %353), !dbg !3577
%354 = bitcast { i32, i64 }* %15 to i8*, !dbg !3577
call void @llvm.lifetime.end.p0i8(i64 16, i8* %354), !dbg !3577
%355 = bitcast [2 x i64]* %16 to i8*, !dbg !3577
call void @llvm.lifetime.end.p0i8(i64 16, i8* %355), !dbg !3577
%356 = bitcast { i32, i64 }* %17 to i8*, !dbg !3577
call void @llvm.lifetime.end.p0i8(i64 16, i8* %356), !dbg !3577
%357 = bitcast { i32, i64 }* %18 to i8*, !dbg !3577
call void @llvm.lifetime.end.p0i8(i64 16, i8* %357), !dbg !3577
%358 = bitcast [2 x i64]* %19 to i8*, !dbg !3577
call void @llvm.lifetime.end.p0i8(i64 16, i8* %358), !dbg !3577
%359 = bitcast { i32, i64 }* %20 to i8*, !dbg !3577
call void @llvm.lifetime.end.p0i8(i64 16, i8* %359), !dbg !3577
%360 = bitcast { i32, i64 }* %21 to i8*, !dbg !3577
call void @llvm.lifetime.end.p0i8(i64 16, i8* %360), !dbg !3577
br label %utf8.decode_rune_in_string.exit, !dbg !3577
if.done16.i.i: ; preds = %cmp.or14.i.i
%361 = and i8 %124, 7, !dbg !3580
%362 = zext i8 %361 to i32, !dbg !3580
%363 = shl i32 %362, 18, !dbg !3580
%364 = and i8 %205, 63, !dbg !3580
%365 = zext i8 %364 to i32, !dbg !3580
%366 = shl i32 %365, 12, !dbg !3580
%367 = or i32 %363, %366, !dbg !3580
%368 = and i8 %270, 63, !dbg !3580
%369 = zext i8 %368 to i32, !dbg !3580
%370 = shl i32 %369, 6, !dbg !3580
%371 = or i32 %367, %370, !dbg !3580
%372 = and i8 %335, 63, !dbg !3580
%373 = zext i8 %372 to i32, !dbg !3580
%374 = or i32 %371, %373, !dbg !3580
%375 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %21, i32 0, i32 0, !dbg !3580
%376 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %21, i32 0, i32 1, !dbg !3580
store i32 %374, i32* %375, align 4, !dbg !3580
store i64 4, i64* %376, align 8, !dbg !3580
%377 = bitcast { i32, i64 }* %21 to [2 x i64]*, !dbg !3580
%378 = load [2 x i64], [2 x i64]* %377, align 8, !dbg !3580
%379 = bitcast { i8*, i64 }* %3 to i8*, !dbg !3580
call void @llvm.lifetime.end.p0i8(i64 16, i8* %379), !dbg !3580
%380 = bitcast { i8*, i64 }* %4 to i8*, !dbg !3580
call void @llvm.lifetime.end.p0i8(i64 16, i8* %380), !dbg !3580
%381 = bitcast { i32, i64 }* %5 to i8*, !dbg !3580
call void @llvm.lifetime.end.p0i8(i64 16, i8* %381), !dbg !3580
%382 = bitcast [2 x i64]* %6 to i8*, !dbg !3580
call void @llvm.lifetime.end.p0i8(i64 16, i8* %382), !dbg !3580
%383 = bitcast [2 x i64]* %7 to i8*, !dbg !3580
call void @llvm.lifetime.end.p0i8(i64 16, i8* %383), !dbg !3580
%384 = bitcast [2 x i64]* %8 to i8*, !dbg !3580
call void @llvm.lifetime.end.p0i8(i64 16, i8* %384), !dbg !3580
%385 = bitcast { i32, i64 }* %9 to i8*, !dbg !3580
call void @llvm.lifetime.end.p0i8(i64 16, i8* %385), !dbg !3580
%386 = bitcast %utf8.Accept_Range* %10 to i8*, !dbg !3580
call void @llvm.lifetime.end.p0i8(i64 2, i8* %386), !dbg !3580
%387 = bitcast [2 x i64]* %11 to i8*, !dbg !3580
call void @llvm.lifetime.end.p0i8(i64 16, i8* %387), !dbg !3580
%388 = bitcast { i32, i64 }* %12 to i8*, !dbg !3580
call void @llvm.lifetime.end.p0i8(i64 16, i8* %388), !dbg !3580
%389 = bitcast [2 x i64]* %13 to i8*, !dbg !3580
call void @llvm.lifetime.end.p0i8(i64 16, i8* %389), !dbg !3580
%390 = bitcast { i32, i64 }* %14 to i8*, !dbg !3580
call void @llvm.lifetime.end.p0i8(i64 16, i8* %390), !dbg !3580
%391 = bitcast { i32, i64 }* %15 to i8*, !dbg !3580
call void @llvm.lifetime.end.p0i8(i64 16, i8* %391), !dbg !3580
%392 = bitcast [2 x i64]* %16 to i8*, !dbg !3580
call void @llvm.lifetime.end.p0i8(i64 16, i8* %392), !dbg !3580
%393 = bitcast { i32, i64 }* %17 to i8*, !dbg !3580
call void @llvm.lifetime.end.p0i8(i64 16, i8* %393), !dbg !3580
%394 = bitcast { i32, i64 }* %18 to i8*, !dbg !3580
call void @llvm.lifetime.end.p0i8(i64 16, i8* %394), !dbg !3580
%395 = bitcast [2 x i64]* %19 to i8*, !dbg !3580
call void @llvm.lifetime.end.p0i8(i64 16, i8* %395), !dbg !3580
%396 = bitcast { i32, i64 }* %20 to i8*, !dbg !3580
call void @llvm.lifetime.end.p0i8(i64 16, i8* %396), !dbg !3580
%397 = bitcast { i32, i64 }* %21 to i8*, !dbg !3580
call void @llvm.lifetime.end.p0i8(i64 16, i8* %397), !dbg !3580
br label %utf8.decode_rune_in_string.exit, !dbg !3580
utf8.decode_rune_in_string.exit: ; preds = %if.then.i.i, %if.then1.i.i, %if.then3.i.i, %if.then5.i.i, %if.then7.i.i, %if.then10.i.i, %if.then12.i.i, %if.then15.i.i, %if.done16.i.i
%398 = phi [2 x i64] [ %100, %if.then.i.i ], [ %147, %if.then1.i.i ], [ %180, %if.then3.i.i ], [ %215, %if.then5.i.i ], [ %245, %if.then7.i.i ], [ %276, %if.then10.i.i ], [ %310, %if.then12.i.i ], [ %341, %if.then15.i.i ], [ %378, %if.done16.i.i ]
%399 = bitcast { i32, i64 }* %24 to [2 x i64]*, !dbg !3581
store [2 x i64] %398, [2 x i64]* %399, align 8, !dbg !3581
%400 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %24, i32 0, i32 0, !dbg !3581
%401 = load i32, i32* %400, align 4, !dbg !3581
%402 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %24, i32 0, i32 1, !dbg !3581
%403 = load i64, i64* %402, align 8, !dbg !3581
%404 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %25, i32 0, i32 0, !dbg !3581
%405 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %25, i32 0, i32 1, !dbg !3581
store i32 %401, i32* %404, align 4, !dbg !3581
store i64 %403, i64* %405, align 8, !dbg !3581
%406 = bitcast { i32, i64 }* %25 to [2 x i64]*, !dbg !3581
%407 = load [2 x i64], [2 x i64]* %406, align 8, !dbg !3581
%408 = bitcast %..string* %22 to i8*, !dbg !3581
call void @llvm.lifetime.end.p0i8(i64 16, i8* %408), !dbg !3581
%409 = bitcast %..string* %23 to i8*, !dbg !3581
call void @llvm.lifetime.end.p0i8(i64 16, i8* %409), !dbg !3581
%410 = bitcast { i32, i64 }* %24 to i8*, !dbg !3581
call void @llvm.lifetime.end.p0i8(i64 16, i8* %410), !dbg !3581
%411 = bitcast { i32, i64 }* %25 to i8*, !dbg !3581
call void @llvm.lifetime.end.p0i8(i64 16, i8* %411), !dbg !3581
%412 = bitcast { i32, i64 }* %32 to [2 x i64]*, !dbg !3587
store [2 x i64] %407, [2 x i64]* %412, align 8, !dbg !3587
%413 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %32, i32 0, i32 0, !dbg !3587
%414 = load i32, i32* %413, align 4, !dbg !3587
%415 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %32, i32 0, i32 1, !dbg !3587
%416 = load i64, i64* %415, align 8, !dbg !3587
call void @llvm.dbg.value(metadata i32 %414, metadata !3518, metadata !DIExpression()), !dbg !3599
call void @llvm.dbg.value(metadata i64 %416, metadata !3514, metadata !DIExpression()), !dbg !3596
br label %if.done, !dbg !3600
if.done: ; preds = %utf8.decode_rune_in_string.exit, %for.body
%.04 = phi i64 [ %416, %utf8.decode_rune_in_string.exit ], [ 1, %for.body ], !dbg !3599
%.0 = phi i32 [ %414, %utf8.decode_rune_in_string.exit ], [ %58, %for.body ], !dbg !3599
call void @llvm.dbg.value(metadata i32 %.0, metadata !3518, metadata !DIExpression()), !dbg !3599
call void @llvm.dbg.value(metadata i64 %.04, metadata !3514, metadata !DIExpression()), !dbg !3596
%417 = icmp eq i64 %.04, 1, !dbg !3618
br i1 %417, label %cmp.and, label %if.done2, !dbg !3618
cmp.and: ; preds = %if.done
%418 = icmp eq i32 %.0, 65533, !dbg !3618
br i1 %418, label %if.then1, label %if.done2, !dbg !3618
if.then1: ; preds = %cmp.and
%419 = load [2 x i64], [2 x i64]* %45, align 8, !dbg !3619
%420 = call i64 @strings._write_byte-1512([2 x i64] %419, i8 92, i8* %__.context_ptr), !dbg !3619
%421 = add i64 %.03, %420, !dbg !3619
call void @llvm.dbg.value(metadata i64 %421, metadata !3512, metadata !DIExpression()), !dbg !3593
%422 = load [2 x i64], [2 x i64]* %45, align 8, !dbg !3620
%423 = call i64 @strings._write_byte-1512([2 x i64] %422, i8 120, i8* %__.context_ptr), !dbg !3620
%424 = add i64 %421, %423, !dbg !3620
call void @llvm.dbg.value(metadata i64 %424, metadata !3512, metadata !DIExpression()), !dbg !3593
%425 = load i8*, i8** getelementptr inbounds (%..string, %..string* @strings.DIGITS_LOWER-1532, i64 0, i32 0), align 8, !dbg !3588
%426 = load i64, i64* getelementptr inbounds (%..string, %..string* @strings.DIGITS_LOWER-1532, i64 0, i32 1), align 8, !dbg !3588
%427 = load i8*, i8** %53, align 8, !dbg !3588
%428 = load i64, i64* %50, align 8, !dbg !3588
%429 = bitcast [2 x i64]* %33 to %..string*, !dbg !3588
store %..string { i8* getelementptr inbounds ([54 x i8], [54 x i8]* @"csbs$a1", i64 0, i64 0), i64 53 }, %..string* %429, align 8, !dbg !3588
%430 = load [2 x i64], [2 x i64]* %33, align 8, !dbg !3588
call void @runtime.bounds_check_error([2 x i64] %430, i32 247, i32 39, i64 0, i64 %428), !dbg !3588
%431 = load i8, i8* %427, align 1, !dbg !3588
%432 = lshr i8 %431, 4, !dbg !3588
%433 = zext i8 %432 to i64, !dbg !3588
%434 = bitcast [2 x i64]* %34 to %..string*, !dbg !3588
store %..string { i8* getelementptr inbounds ([54 x i8], [54 x i8]* @"csbs$a1", i64 0, i64 0), i64 53 }, %..string* %434, align 8, !dbg !3588
%435 = load [2 x i64], [2 x i64]* %34, align 8, !dbg !3588
call void @runtime.bounds_check_error([2 x i64] %435, i32 247, i32 38, i64 %433, i64 %426), !dbg !3588
%436 = getelementptr i8, i8* %425, i64 %433, !dbg !3588
%437 = load i8, i8* %436, align 1, !dbg !3588
%438 = load [2 x i64], [2 x i64]* %45, align 8, !dbg !3588
%439 = call i64 @strings._write_byte-1512([2 x i64] %438, i8 %437, i8* %__.context_ptr), !dbg !3588
%440 = add i64 %424, %439, !dbg !3588
call void @llvm.dbg.value(metadata i64 %440, metadata !3512, metadata !DIExpression()), !dbg !3593
%441 = load i8*, i8** getelementptr inbounds (%..string, %..string* @strings.DIGITS_LOWER-1532, i64 0, i32 0), align 8, !dbg !3591
%442 = load i64, i64* getelementptr inbounds (%..string, %..string* @strings.DIGITS_LOWER-1532, i64 0, i32 1), align 8, !dbg !3591
%443 = load i8*, i8** %53, align 8, !dbg !3591
%444 = load i64, i64* %50, align 8, !dbg !3591
%445 = bitcast [2 x i64]* %35 to %..string*, !dbg !3591
store %..string { i8* getelementptr inbounds ([54 x i8], [54 x i8]* @"csbs$a1", i64 0, i64 0), i64 53 }, %..string* %445, align 8, !dbg !3591
%446 = load [2 x i64], [2 x i64]* %35, align 8, !dbg !3591
call void @runtime.bounds_check_error([2 x i64] %446, i32 248, i32 39, i64 0, i64 %444), !dbg !3591
%447 = load i8, i8* %443, align 1, !dbg !3591
%448 = and i8 %447, 15, !dbg !3591
%449 = zext i8 %448 to i64, !dbg !3591
%450 = bitcast [2 x i64]* %36 to %..string*, !dbg !3591
store %..string { i8* getelementptr inbounds ([54 x i8], [54 x i8]* @"csbs$a1", i64 0, i64 0), i64 53 }, %..string* %450, align 8, !dbg !3591
%451 = load [2 x i64], [2 x i64]* %36, align 8, !dbg !3591
call void @runtime.bounds_check_error([2 x i64] %451, i32 248, i32 38, i64 %449, i64 %442), !dbg !3591
%452 = getelementptr i8, i8* %441, i64 %449, !dbg !3591
%453 = load i8, i8* %452, align 1, !dbg !3591
%454 = load [2 x i64], [2 x i64]* %45, align 8, !dbg !3591
%455 = call i64 @strings._write_byte-1512([2 x i64] %454, i8 %453, i8* %__.context_ptr), !dbg !3591
%456 = add i64 %440, %455, !dbg !3591
call void @llvm.dbg.value(metadata i64 %456, metadata !3512, metadata !DIExpression()), !dbg !3593
br label %for.post, !dbg !3621
if.done2: ; preds = %cmp.and, %if.done
%457 = load [2 x i64], [2 x i64]* %45, align 8, !dbg !3622
%458 = call i64 @strings.write_escaped_rune_writer([2 x i64] %457, i32 %.0, i8 %2, i1 false, i8* %__.context_ptr), !dbg !3622
%459 = add i64 %.03, %458, !dbg !3622
call void @llvm.dbg.value(metadata i64 %459, metadata !3512, metadata !DIExpression()), !dbg !3593
br label %for.post, !dbg !3597
for.post: ; preds = %if.done2, %if.then1
%.1 = phi i64 [ %456, %if.then1 ], [ %459, %if.done2 ], !dbg !3599
call void @llvm.dbg.value(metadata i64 %.1, metadata !3512, metadata !DIExpression()), !dbg !3593
%460 = load i64, i64* %50, align 8, !dbg !3592
%461 = bitcast [2 x i64]* %37 to %..string*, !dbg !3592
store %..string { i8* getelementptr inbounds ([54 x i8], [54 x i8]* @"csbs$a1", i64 0, i64 0), i64 53 }, %..string* %461, align 8, !dbg !3592
%462 = load [2 x i64], [2 x i64]* %37, align 8, !dbg !3592
call void @runtime.slice_expr_error_lo_hi([2 x i64] %462, i32 238, i32 43, i64 %.04, i64 %460, i64 %460), !dbg !3592
%463 = load i8*, i8** %53, align 8, !dbg !3592
%464 = getelementptr i8, i8* %463, i64 %.04, !dbg !3592
%465 = sub i64 %460, %.04, !dbg !3592
%466 = getelementptr inbounds %..string, %..string* %38, i32 0, i32 0, !dbg !3592
store i8* %464, i8** %466, align 8, !dbg !3592
%467 = getelementptr inbounds %..string, %..string* %38, i32 0, i32 1, !dbg !3592
store i64 %465, i64* %467, align 8, !dbg !3592
%468 = bitcast %..string* %38 to i8*, !dbg !3592
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %48, i8* align 8 %468, i64 16, i1 false), !dbg !3592
br label %for.loop, !dbg !3597
for.done: ; preds = %for.loop
%469 = load [2 x i64], [2 x i64]* %45, align 8, !dbg !3623
%470 = call i64 @strings._write_byte-1512([2 x i64] %469, i8 %2, i8* %__.context_ptr), !dbg !3623
%471 = add i64 %.03, %470, !dbg !3623
call void @llvm.dbg.value(metadata i64 %471, metadata !3512, metadata !DIExpression()), !dbg !3593
call void @llvm.dbg.value(metadata i64 %471, metadata !3512, metadata !DIExpression()), !dbg !3593
ret i64 %471, !dbg !3624
}
define internal i8 @reflect.type_info_union_is_pure_maybe(%runtime.Type_Info_Union* %0, i8* noalias nocapture nonnull %__.context_ptr) !dbg !3625 {
decls:
%1 = alloca [2 x i64], align 8, !dbg !3630
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !3629, metadata !DIExpression()), !dbg !3632
%2 = getelementptr inbounds %runtime.Type_Info_Union, %runtime.Type_Info_Union* %0, i32 0, i32 6, !dbg !3630
%3 = load i8, i8* %2, align 1, !dbg !3630
%4 = trunc i8 %3 to i1, !dbg !3630
br i1 %4, label %cmp.and, label %logical.cmp.done, !dbg !3630
cmp.and: ; preds = %decls
%5 = getelementptr inbounds %runtime.Type_Info_Union, %runtime.Type_Info_Union* %0, i32 0, i32 0, !dbg !3630
%6 = getelementptr inbounds { %runtime.Type_Info**, i64 }, { %runtime.Type_Info**, i64 }* %5, i32 0, i32 1, !dbg !3630
%7 = load i64, i64* %6, align 8, !dbg !3630
%8 = icmp eq i64 %7, 1, !dbg !3630
br i1 %8, label %logical.cmp.rhs, label %logical.cmp.done, !dbg !3630
logical.cmp.rhs: ; preds = %cmp.and
%9 = getelementptr inbounds { %runtime.Type_Info**, i64 }, { %runtime.Type_Info**, i64 }* %5, i32 0, i32 0, !dbg !3630
%10 = load %runtime.Type_Info**, %runtime.Type_Info*** %9, align 8, !dbg !3630
%11 = bitcast [2 x i64]* %1 to %..string*, !dbg !3630
store %..string { i8* getelementptr inbounds ([54 x i8], [54 x i8]* @"csbs$a2", i64 0, i64 0), i64 53 }, %..string* %11, align 8, !dbg !3630
%12 = load [2 x i64], [2 x i64]* %1, align 8, !dbg !3630
call void @runtime.bounds_check_error([2 x i64] %12, i32 626, i32 75, i64 0, i64 %7), !dbg !3630
%13 = load %runtime.Type_Info*, %runtime.Type_Info** %10, align 8, !dbg !3630
%14 = call i8 @reflect.is_pointer(%runtime.Type_Info* %13, i8* %__.context_ptr), !dbg !3630
br label %logical.cmp.done, !dbg !3630
logical.cmp.done: ; preds = %logical.cmp.rhs, %cmp.and, %decls
%15 = phi i8 [ 0, %decls ], [ 0, %cmp.and ], [ %14, %logical.cmp.rhs ], !dbg !3630
ret i8 %15, !dbg !3630
}
define internal i64 @fmt.fprintln(i32 %0, [2 x i64] %1, [2 x i64] %2, i8* noalias nocapture nonnull %__.context_ptr) !dbg !3633 {
decls:
%3 = alloca { %..any*, i64 }, align 8
call void @llvm.dbg.declare(metadata { %..any*, i64 }* %4, metadata !3642, metadata !DIExpression()), !dbg !3647
%4 = alloca { %..any*, i64 }, align 8
%5 = alloca %..string, align 8
call void @llvm.dbg.declare(metadata %..string* %6, metadata !3643, metadata !DIExpression()), !dbg !3648
%6 = alloca %..string, align 8
call void @llvm.dbg.declare(metadata %io.Writer* %7, metadata !3645, metadata !DIExpression()), !dbg !3649
%7 = alloca %io.Writer, align 8, !dbg !3649
%8 = alloca %io.Stream, align 8, !dbg !3649
%9 = alloca { %io.Writer, i8 }, align 8, !dbg !3649
call void @llvm.dbg.value(metadata i32 %0, metadata !3641, metadata !DIExpression()), !dbg !3650
%10 = bitcast { %..any*, i64 }* %3 to [2 x i64]*
store [2 x i64] %1, [2 x i64]* %10, align 8
%11 = bitcast { %..any*, i64 }* %4 to i8*
%12 = bitcast { %..any*, i64 }* %3 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %11, i8* align 8 %12, i64 16, i1 false)
%13 = bitcast %..string* %5 to [2 x i64]*
store [2 x i64] %2, [2 x i64]* %13, align 8
%14 = bitcast %..string* %6 to i8*
%15 = bitcast %..string* %5 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %14, i8* align 8 %15, i64 16, i1 false)
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !3644, metadata !DIExpression()), !dbg !3651
%16 = bitcast %io.Writer* %7 to i8*, !dbg !3649
call void @llvm.memset.p0i8.i64(i8* %16, i8 0, i64 16, i1 false), !dbg !3649
%17 = call [2 x i64] @os.stream_from_handle(i32 %0, i8* %__.context_ptr), !dbg !3649
%18 = bitcast %io.Stream* %8 to [2 x i64]*, !dbg !3649
store [2 x i64] %17, [2 x i64]* %18, align 8, !dbg !3649
%19 = bitcast { %io.Writer, i8 }* %9 to i8*, !dbg !3649
call void @llvm.memset.p0i8.i64(i8* %19, i8 0, i64 24, i1 false), !dbg !3649
call void @io.to_writer({ %io.Writer, i8 }* %9, [2 x i64] %17, i8* %__.context_ptr), !dbg !3649
%20 = getelementptr inbounds { %io.Writer, i8 }, { %io.Writer, i8 }* %9, i32 0, i32 0, !dbg !3649
%21 = bitcast %io.Writer* %20 to i8*, !dbg !3649
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %16, i8* align 8 %21, i64 16, i1 false), !dbg !3649
%22 = bitcast %io.Writer* %7 to [2 x i64]*, !dbg !3652
%23 = load [2 x i64], [2 x i64]* %22, align 8, !dbg !3652
%24 = bitcast { %..any*, i64 }* %4 to [2 x i64]*, !dbg !3652
%25 = load [2 x i64], [2 x i64]* %24, align 8, !dbg !3652
%26 = bitcast %..string* %6 to [2 x i64]*, !dbg !3652
%27 = load [2 x i64], [2 x i64]* %26, align 8, !dbg !3652
%28 = call i64 @fmt.wprintln([2 x i64] %23, [2 x i64] %25, [2 x i64] %27, i8* %__.context_ptr), !dbg !3652
ret i64 %28, !dbg !3652
}
define internal i64 @strings.write_encoded_rune_writer([2 x i64] %0, i32 %1, i1 zeroext %2, i8* noalias nocapture nonnull %__.context_ptr) !dbg !3653 {
decls:
%3 = alloca %io.Writer, align 8
call void @llvm.dbg.declare(metadata %io.Writer* %4, metadata !3657, metadata !DIExpression()), !dbg !3669
%4 = alloca %io.Writer, align 8
%5 = alloca [2 x i64], align 8, !dbg !3670
%6 = alloca [2 x i64], align 8, !dbg !3673
%7 = alloca [2 x i64], align 8, !dbg !3674
%8 = alloca [2 x i64], align 8, !dbg !3675
%9 = alloca [2 x i64], align 8, !dbg !3676
%10 = alloca [2 x i64], align 8, !dbg !3677
%11 = alloca [2 x i64], align 8, !dbg !3678
%12 = alloca [2 x i64], align 8, !dbg !3679
%13 = alloca [2 x i64], align 8, !dbg !3680
call void @llvm.dbg.declare(metadata [2 x i8]* %14, metadata !3662, metadata !DIExpression()), !dbg !3681
%14 = alloca [2 x i8], align 1, !dbg !3681
call void @llvm.dbg.declare(metadata %..string* %15, metadata !3666, metadata !DIExpression()), !dbg !3682
%15 = alloca %..string, align 8, !dbg !3682
%16 = alloca { i8*, i64 }, align 8, !dbg !3682
%17 = alloca %..string, align 8, !dbg !3682
%18 = alloca [2 x i64], align 8, !dbg !3683
%19 = alloca { i64, i32 }, align 8, !dbg !3685
%20 = bitcast %io.Writer* %3 to [2 x i64]*
store [2 x i64] %0, [2 x i64]* %20, align 8
%21 = bitcast %io.Writer* %4 to i8*
%22 = bitcast %io.Writer* %3 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %21, i8* align 8 %22, i64 16, i1 false)
call void @llvm.dbg.value(metadata i32 %1, metadata !3658, metadata !DIExpression()), !dbg !3686
call void @llvm.dbg.value(metadata i8 undef, metadata !3659, metadata !DIExpression()), !dbg !3686
call void @llvm.dbg.value(metadata i64 0, metadata !3660, metadata !DIExpression()), !dbg !3686
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !3661, metadata !DIExpression()), !dbg !3687
br i1 %2, label %if.then, label %if.done, !dbg !3688
if.then: ; preds = %decls
%23 = bitcast %io.Writer* %4 to [2 x i64]*, !dbg !3689
%24 = load [2 x i64], [2 x i64]* %23, align 8, !dbg !3689
%25 = call i64 @strings._write_byte-1512([2 x i64] %24, i8 39, i8* %__.context_ptr), !dbg !3689
call void @llvm.dbg.value(metadata i64 %25, metadata !3660, metadata !DIExpression()), !dbg !3686
br label %if.done, !dbg !3688
if.done: ; preds = %if.then, %decls
%.0 = phi i64 [ %25, %if.then ], [ 0, %decls ]
call void @llvm.dbg.value(metadata i64 %.0, metadata !3660, metadata !DIExpression()), !dbg !3686
switch i32 %1, label %switch.default.body [
i32 7, label %switch.case.body
i32 8, label %switch.case.body1
i32 27, label %switch.case.body2
i32 12, label %switch.case.body3
i32 10, label %switch.case.body4
i32 13, label %switch.case.body5
i32 9, label %switch.case.body6
i32 11, label %switch.case.body7
], !dbg !3692
switch.case.body: ; preds = %if.done
%26 = bitcast %io.Writer* %4 to [2 x i64]*, !dbg !3670
%27 = load [2 x i64], [2 x i64]* %26, align 8, !dbg !3670
%28 = bitcast [2 x i64]* %5 to %..string*, !dbg !3670
store %..string { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"csbs$a3", i64 0, i64 0), i64 3 }, %..string* %28, align 8, !dbg !3670
%29 = load [2 x i64], [2 x i64]* %5, align 8, !dbg !3670
%30 = call i64 @strings.write_string_writer([2 x i64] %27, [2 x i64] %29, i8* %__.context_ptr), !dbg !3670
%31 = add i64 %.0, %30, !dbg !3670
call void @llvm.dbg.value(metadata i64 %31, metadata !3660, metadata !DIExpression()), !dbg !3686
br label %switch.done13, !dbg !3692
switch.case.body1: ; preds = %if.done
%32 = bitcast %io.Writer* %4 to [2 x i64]*, !dbg !3673
%33 = load [2 x i64], [2 x i64]* %32, align 8, !dbg !3673
%34 = bitcast [2 x i64]* %6 to %..string*, !dbg !3673
store %..string { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"csbs$a4", i64 0, i64 0), i64 3 }, %..string* %34, align 8, !dbg !3673
%35 = load [2 x i64], [2 x i64]* %6, align 8, !dbg !3673
%36 = call i64 @strings.write_string_writer([2 x i64] %33, [2 x i64] %35, i8* %__.context_ptr), !dbg !3673
%37 = add i64 %.0, %36, !dbg !3673
call void @llvm.dbg.value(metadata i64 %37, metadata !3660, metadata !DIExpression()), !dbg !3686
br label %switch.done13, !dbg !3692
switch.case.body2: ; preds = %if.done
%38 = bitcast %io.Writer* %4 to [2 x i64]*, !dbg !3674
%39 = load [2 x i64], [2 x i64]* %38, align 8, !dbg !3674
%40 = bitcast [2 x i64]* %7 to %..string*, !dbg !3674
store %..string { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"csbs$a5", i64 0, i64 0), i64 3 }, %..string* %40, align 8, !dbg !3674
%41 = load [2 x i64], [2 x i64]* %7, align 8, !dbg !3674
%42 = call i64 @strings.write_string_writer([2 x i64] %39, [2 x i64] %41, i8* %__.context_ptr), !dbg !3674
%43 = add i64 %.0, %42, !dbg !3674
call void @llvm.dbg.value(metadata i64 %43, metadata !3660, metadata !DIExpression()), !dbg !3686
br label %switch.done13, !dbg !3692
switch.case.body3: ; preds = %if.done
%44 = bitcast %io.Writer* %4 to [2 x i64]*, !dbg !3675
%45 = load [2 x i64], [2 x i64]* %44, align 8, !dbg !3675
%46 = bitcast [2 x i64]* %8 to %..string*, !dbg !3675
store %..string { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"csbs$a6", i64 0, i64 0), i64 3 }, %..string* %46, align 8, !dbg !3675
%47 = load [2 x i64], [2 x i64]* %8, align 8, !dbg !3675
%48 = call i64 @strings.write_string_writer([2 x i64] %45, [2 x i64] %47, i8* %__.context_ptr), !dbg !3675
%49 = add i64 %.0, %48, !dbg !3675
call void @llvm.dbg.value(metadata i64 %49, metadata !3660, metadata !DIExpression()), !dbg !3686
br label %switch.done13, !dbg !3692
switch.case.body4: ; preds = %if.done
%50 = bitcast %io.Writer* %4 to [2 x i64]*, !dbg !3676
%51 = load [2 x i64], [2 x i64]* %50, align 8, !dbg !3676
%52 = bitcast [2 x i64]* %9 to %..string*, !dbg !3676
store %..string { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"csbs$a7", i64 0, i64 0), i64 3 }, %..string* %52, align 8, !dbg !3676
%53 = load [2 x i64], [2 x i64]* %9, align 8, !dbg !3676
%54 = call i64 @strings.write_string_writer([2 x i64] %51, [2 x i64] %53, i8* %__.context_ptr), !dbg !3676
%55 = add i64 %.0, %54, !dbg !3676
call void @llvm.dbg.value(metadata i64 %55, metadata !3660, metadata !DIExpression()), !dbg !3686
br label %switch.done13, !dbg !3692
switch.case.body5: ; preds = %if.done
%56 = bitcast %io.Writer* %4 to [2 x i64]*, !dbg !3677
%57 = load [2 x i64], [2 x i64]* %56, align 8, !dbg !3677
%58 = bitcast [2 x i64]* %10 to %..string*, !dbg !3677
store %..string { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"csbs$a8", i64 0, i64 0), i64 3 }, %..string* %58, align 8, !dbg !3677
%59 = load [2 x i64], [2 x i64]* %10, align 8, !dbg !3677
%60 = call i64 @strings.write_string_writer([2 x i64] %57, [2 x i64] %59, i8* %__.context_ptr), !dbg !3677
%61 = add i64 %.0, %60, !dbg !3677
call void @llvm.dbg.value(metadata i64 %61, metadata !3660, metadata !DIExpression()), !dbg !3686
br label %switch.done13, !dbg !3692
switch.case.body6: ; preds = %if.done
%62 = bitcast %io.Writer* %4 to [2 x i64]*, !dbg !3678
%63 = load [2 x i64], [2 x i64]* %62, align 8, !dbg !3678
%64 = bitcast [2 x i64]* %11 to %..string*, !dbg !3678
store %..string { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"csbs$a9", i64 0, i64 0), i64 3 }, %..string* %64, align 8, !dbg !3678
%65 = load [2 x i64], [2 x i64]* %11, align 8, !dbg !3678
%66 = call i64 @strings.write_string_writer([2 x i64] %63, [2 x i64] %65, i8* %__.context_ptr), !dbg !3678
%67 = add i64 %.0, %66, !dbg !3678
call void @llvm.dbg.value(metadata i64 %67, metadata !3660, metadata !DIExpression()), !dbg !3686
br label %switch.done13, !dbg !3692
switch.case.body7: ; preds = %if.done
%68 = bitcast %io.Writer* %4 to [2 x i64]*, !dbg !3679
%69 = load [2 x i64], [2 x i64]* %68, align 8, !dbg !3679
%70 = bitcast [2 x i64]* %12 to %..string*, !dbg !3679
store %..string { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"csbs$aa", i64 0, i64 0), i64 3 }, %..string* %70, align 8, !dbg !3679
%71 = load [2 x i64], [2 x i64]* %12, align 8, !dbg !3679
%72 = call i64 @strings.write_string_writer([2 x i64] %69, [2 x i64] %71, i8* %__.context_ptr), !dbg !3679
%73 = add i64 %.0, %72, !dbg !3679
call void @llvm.dbg.value(metadata i64 %73, metadata !3660, metadata !DIExpression()), !dbg !3686
br label %switch.done13, !dbg !3692
switch.default.body: ; preds = %if.done
%74 = icmp slt i32 %1, 32, !dbg !3693
%75 = bitcast %io.Writer* %4 to [2 x i64]*, !dbg !3694
%76 = load [2 x i64], [2 x i64]* %75, align 8, !dbg !3694
br i1 %74, label %if.then8, label %if.else, !dbg !3693
if.then8: ; preds = %switch.default.body
%77 = bitcast [2 x i64]* %13 to %..string*, !dbg !3680
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$ab", i64 0, i64 0), i64 2 }, %..string* %77, align 8, !dbg !3680
%78 = load [2 x i64], [2 x i64]* %13, align 8, !dbg !3680
%79 = call i64 @strings.write_string_writer([2 x i64] %76, [2 x i64] %78, i8* %__.context_ptr), !dbg !3680
%80 = add i64 %.0, %79, !dbg !3680
call void @llvm.dbg.value(metadata i64 %80, metadata !3660, metadata !DIExpression()), !dbg !3686
%81 = bitcast [2 x i8]* %14 to i8*, !dbg !3681
call void @llvm.memset.p0i8.i64(i8* %81, i8 0, i64 2, i1 false), !dbg !3681
%82 = bitcast %..string* %15 to i8*, !dbg !3682
call void @llvm.memset.p0i8.i64(i8* %82, i8 0, i64 16, i1 false), !dbg !3682
%83 = getelementptr [2 x i8], [2 x i8]* %14, i64 0, i64 0, !dbg !3682
%84 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %16, i32 0, i32 0, !dbg !3682
store i8* %83, i8** %84, align 8, !dbg !3682
%85 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %16, i32 0, i32 1, !dbg !3682
store i64 2, i64* %85, align 8, !dbg !3682
%86 = sext i32 %1 to i64, !dbg !3682
%87 = bitcast { i8*, i64 }* %16 to [2 x i64]*, !dbg !3682
%88 = load [2 x i64], [2 x i64]* %87, align 8, !dbg !3682
%89 = load [2 x i64], [2 x i64]* bitcast (%..string* @strconv.digits to [2 x i64]*), align 8, !dbg !3682
%90 = call [2 x i64] @strconv.append_bits([2 x i64] %88, i64 %86, i64 16, i1 true, i64 64, [2 x i64] %89, i8 0, i8* %__.context_ptr), !dbg !3682
%91 = bitcast %..string* %17 to [2 x i64]*, !dbg !3682
store [2 x i64] %90, [2 x i64]* %91, align 8, !dbg !3682
%92 = bitcast %..string* %17 to i8*, !dbg !3682
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %82, i8* align 8 %92, i64 16, i1 false), !dbg !3682
%93 = getelementptr inbounds %..string, %..string* %15, i32 0, i32 1, !dbg !3695
%94 = load i64, i64* %93, align 8, !dbg !3695
switch i64 %94, label %switch.done13 [
i64 0, label %switch.case.body9
i64 1, label %switch.case.body10
i64 2, label %switch.case.body11
], !dbg !3695
switch.case.body9: ; preds = %if.then8
%95 = load [2 x i64], [2 x i64]* %75, align 8, !dbg !3683
%96 = bitcast [2 x i64]* %18 to %..string*, !dbg !3683
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$ac", i64 0, i64 0), i64 2 }, %..string* %96, align 8, !dbg !3683
%97 = load [2 x i64], [2 x i64]* %18, align 8, !dbg !3683
%98 = call i64 @strings.write_string_writer([2 x i64] %95, [2 x i64] %97, i8* %__.context_ptr), !dbg !3683
%99 = add i64 %80, %98, !dbg !3683
call void @llvm.dbg.value(metadata i64 %99, metadata !3660, metadata !DIExpression()), !dbg !3686
br label %switch.done13, !dbg !3695
switch.case.body10: ; preds = %if.then8
%100 = load [2 x i64], [2 x i64]* %75, align 8, !dbg !3696
%101 = call i64 @strings._write_byte-1512([2 x i64] %100, i8 48, i8* %__.context_ptr), !dbg !3696
%102 = add i64 %80, %101, !dbg !3696
call void @llvm.dbg.value(metadata i64 %102, metadata !3660, metadata !DIExpression()), !dbg !3686
br label %switch.done13, !dbg !3695
switch.case.body11: ; preds = %if.then8
%103 = load [2 x i64], [2 x i64]* %75, align 8, !dbg !3697
%104 = bitcast %..string* %15 to [2 x i64]*, !dbg !3697
%105 = load [2 x i64], [2 x i64]* %104, align 8, !dbg !3697
%106 = call i64 @strings.write_string_writer([2 x i64] %103, [2 x i64] %105, i8* %__.context_ptr), !dbg !3697
%107 = add i64 %80, %106, !dbg !3697
call void @llvm.dbg.value(metadata i64 %107, metadata !3660, metadata !DIExpression()), !dbg !3686
br label %switch.done13, !dbg !3695
if.else: ; preds = %switch.default.body
call void @llvm.dbg.value(metadata i64 0, metadata !3667, metadata !DIExpression()), !dbg !3698
%108 = call [2 x i64] @io.write_rune([2 x i64] %76, i32 %1, i8* %__.context_ptr), !dbg !3685
%109 = bitcast { i64, i32 }* %19 to [2 x i64]*, !dbg !3685
store [2 x i64] %108, [2 x i64]* %109, align 8, !dbg !3685
%110 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %19, i32 0, i32 0, !dbg !3685
%111 = load i64, i64* %110, align 8, !dbg !3685
call void @llvm.dbg.value(metadata i64 %111, metadata !3667, metadata !DIExpression()), !dbg !3698
%112 = add i64 %.0, %111, !dbg !3699
call void @llvm.dbg.value(metadata i64 %112, metadata !3660, metadata !DIExpression()), !dbg !3686
br label %switch.done13, !dbg !3693
switch.done13: ; preds = %if.else, %switch.case.body11, %switch.case.body10, %switch.case.body9, %if.then8, %switch.case.body7, %switch.case.body6, %switch.case.body5, %switch.case.body4, %switch.case.body3, %switch.case.body2, %switch.case.body1, %switch.case.body
%.3 = phi i64 [ %73, %switch.case.body7 ], [ %67, %switch.case.body6 ], [ %61, %switch.case.body5 ], [ %55, %switch.case.body4 ], [ %49, %switch.case.body3 ], [ %43, %switch.case.body2 ], [ %37, %switch.case.body1 ], [ %31, %switch.case.body ], [ %112, %if.else ], [ %80, %if.then8 ], [ %107, %switch.case.body11 ], [ %102, %switch.case.body10 ], [ %99, %switch.case.body9 ], !dbg !3686
call void @llvm.dbg.value(metadata i64 %.3, metadata !3660, metadata !DIExpression()), !dbg !3686
br i1 %2, label %if.then14, label %if.done15, !dbg !3700
if.then14: ; preds = %switch.done13
%113 = bitcast %io.Writer* %4 to [2 x i64]*, !dbg !3701
%114 = load [2 x i64], [2 x i64]* %113, align 8, !dbg !3701
%115 = call i64 @strings._write_byte-1512([2 x i64] %114, i8 39, i8* %__.context_ptr), !dbg !3701
%116 = add i64 %.3, %115, !dbg !3701
call void @llvm.dbg.value(metadata i64 %116, metadata !3660, metadata !DIExpression()), !dbg !3686
br label %if.done15, !dbg !3700
if.done15: ; preds = %if.then14, %switch.done13
%.4 = phi i64 [ %116, %if.then14 ], [ %.3, %switch.done13 ], !dbg !3686
call void @llvm.dbg.value(metadata i64 %.4, metadata !3660, metadata !DIExpression()), !dbg !3686
call void @llvm.dbg.value(metadata i64 %.4, metadata !3660, metadata !DIExpression()), !dbg !3686
ret i64 %.4, !dbg !3704
}
define internal i64 @strings.write_escaped_rune_writer([2 x i64] %0, i32 %1, i8 %2, i1 zeroext %3, i8* noalias nocapture nonnull %__.context_ptr) !dbg !3705 {
decls:
%4 = alloca %io.Writer, align 8
call void @llvm.dbg.declare(metadata %io.Writer* %5, metadata !3709, metadata !DIExpression()), !dbg !3723
%5 = alloca %io.Writer, align 8
%6 = alloca [2 x i64], align 8, !dbg !3724
%7 = alloca [2 x i64], align 8, !dbg !3726
%8 = alloca [2 x i64], align 8, !dbg !3729
%9 = alloca [2 x i64], align 8, !dbg !3730
%10 = alloca [2 x i64], align 8, !dbg !3731
%11 = alloca [2 x i64], align 8, !dbg !3732
%12 = alloca [2 x i64], align 8, !dbg !3733
%13 = alloca [2 x i64], align 8, !dbg !3734
%14 = alloca [2 x i64], align 8, !dbg !3735
%15 = alloca [2 x i64], align 8, !dbg !3736
%16 = alloca [2 x i64], align 8, !dbg !3737
%17 = alloca [2 x i64], align 8, !dbg !3738
%18 = alloca [2 x i64], align 8, !dbg !3740
%19 = bitcast %io.Writer* %4 to [2 x i64]*
store [2 x i64] %0, [2 x i64]* %19, align 8
%20 = bitcast %io.Writer* %5 to i8*
%21 = bitcast %io.Writer* %4 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %20, i8* align 8 %21, i64 16, i1 false)
call void @llvm.dbg.value(metadata i32 %1, metadata !3710, metadata !DIExpression()), !dbg !3742
call void @llvm.dbg.value(metadata i8 %2, metadata !3711, metadata !DIExpression()), !dbg !3742
call void @llvm.dbg.value(metadata i8 undef, metadata !3712, metadata !DIExpression()), !dbg !3742
call void @llvm.dbg.value(metadata i64 0, metadata !3713, metadata !DIExpression()), !dbg !3742
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !3714, metadata !DIExpression()), !dbg !3743
br i1 %3, label %if.then, label %if.done, !dbg !3744
if.then: ; preds = %decls
switch i32 %1, label %if.done [
i32 60, label %switch.case.body
i32 62, label %switch.case.body
i32 38, label %switch.case.body
], !dbg !3745
switch.case.body: ; preds = %if.then, %if.then, %if.then
%22 = bitcast %io.Writer* %5 to [2 x i64]*, !dbg !3748
%23 = load [2 x i64], [2 x i64]* %22, align 8, !dbg !3748
%24 = call i64 @strings._write_byte-1512([2 x i64] %23, i8 92, i8* %__.context_ptr), !dbg !3748
call void @llvm.dbg.value(metadata i64 %24, metadata !3713, metadata !DIExpression()), !dbg !3742
%25 = load [2 x i64], [2 x i64]* %22, align 8, !dbg !3750
%26 = call i64 @strings._write_byte-1512([2 x i64] %25, i8 117, i8* %__.context_ptr), !dbg !3750
%27 = add i64 %24, %26, !dbg !3750
call void @llvm.dbg.value(metadata i64 %27, metadata !3713, metadata !DIExpression()), !dbg !3742
call void @llvm.dbg.value(metadata i64 12, metadata !3715, metadata !DIExpression()), !dbg !3751
br label %for.loop, !dbg !3752
for.loop: ; preds = %for.body, %switch.case.body
%.034 = phi i64 [ 12, %switch.case.body ], [ %44, %for.body ], !dbg !3742
%.033 = phi i64 [ %27, %switch.case.body ], [ %43, %for.body ], !dbg !3742
call void @llvm.dbg.value(metadata i64 %.033, metadata !3713, metadata !DIExpression()), !dbg !3742
call void @llvm.dbg.value(metadata i64 %.034, metadata !3715, metadata !DIExpression()), !dbg !3751
%28 = icmp sge i64 %.034, 0, !dbg !3752
br i1 %28, label %for.body, label %for.done, !dbg !3752
for.body: ; preds = %for.loop
%29 = load i8*, i8** getelementptr inbounds (%..string, %..string* @strings.DIGITS_LOWER-1532, i64 0, i32 0), align 8, !dbg !3724
%30 = load i64, i64* getelementptr inbounds (%..string, %..string* @strings.DIGITS_LOWER-1532, i64 0, i32 1), align 8, !dbg !3724
%31 = trunc i64 %.034 to i32, !dbg !3724
%32 = icmp ult i32 %31, 32, !dbg !3724
%33 = ashr i32 %1, %31, !dbg !3724
%34 = select i1 %32, i32 %33, i32 0, !dbg !3724
%35 = and i32 %34, 15, !dbg !3724
%36 = sext i32 %35 to i64, !dbg !3724
%37 = bitcast [2 x i64]* %6 to %..string*, !dbg !3724
store %..string { i8* getelementptr inbounds ([54 x i8], [54 x i8]* @"csbs$a1", i64 0, i64 0), i64 53 }, %..string* %37, align 8, !dbg !3724
%38 = load [2 x i64], [2 x i64]* %6, align 8, !dbg !3724
call void @runtime.bounds_check_error([2 x i64] %38, i32 334, i32 38, i64 %36, i64 %30), !dbg !3724
%39 = getelementptr i8, i8* %29, i64 %36, !dbg !3724
%40 = load i8, i8* %39, align 1, !dbg !3724
%41 = load [2 x i64], [2 x i64]* %22, align 8, !dbg !3724
%42 = call i64 @strings._write_byte-1512([2 x i64] %41, i8 %40, i8* %__.context_ptr), !dbg !3724
%43 = add i64 %.033, %42, !dbg !3724
call void @llvm.dbg.value(metadata i64 %43, metadata !3713, metadata !DIExpression()), !dbg !3742
%44 = sub i64 %.034, 4, !dbg !3753
call void @llvm.dbg.value(metadata i64 %44, metadata !3715, metadata !DIExpression()), !dbg !3751
br label %for.loop, !dbg !3752
for.done: ; preds = %switch.case.body5, %switch.case.body6, %switch.case.body7, %switch.case.body8, %switch.case.body9, %switch.case.body10, %switch.case.body11, %switch.case.body12, %for.loop25, %for.loop19, %switch.case.body13, %for.loop
%merge = phi i64 [ %.033, %for.loop ], [ %99, %switch.case.body12 ], [ %94, %switch.case.body11 ], [ %89, %switch.case.body10 ], [ %84, %switch.case.body9 ], [ %79, %switch.case.body8 ], [ %74, %switch.case.body7 ], [ %69, %switch.case.body6 ], [ %64, %switch.case.body5 ], [ %130, %switch.case.body13 ], [ %.1, %for.loop19 ], [ %.2, %for.loop25 ]
call void @llvm.dbg.value(metadata i64 %.033, metadata !3713, metadata !DIExpression()), !dbg !3742
ret i64 %merge, !dbg !3754
if.done: ; preds = %if.then, %decls
%45 = zext i8 %2 to i32, !dbg !3755
%46 = icmp eq i32 %1, %45, !dbg !3755
br i1 %46, label %if.then1, label %cmp.or, !dbg !3755
cmp.or: ; preds = %if.done
%47 = icmp eq i32 %1, 92, !dbg !3755
br i1 %47, label %if.then1, label %if.else, !dbg !3755
if.then1: ; preds = %cmp.or, %if.done
%48 = bitcast %io.Writer* %5 to [2 x i64]*, !dbg !3756
%49 = load [2 x i64], [2 x i64]* %48, align 8, !dbg !3756
%50 = call i64 @strings._write_byte-1512([2 x i64] %49, i8 92, i8* %__.context_ptr), !dbg !3756
call void @llvm.dbg.value(metadata i64 %50, metadata !3713, metadata !DIExpression()), !dbg !3742
%51 = trunc i32 %1 to i8, !dbg !3759
%52 = load [2 x i64], [2 x i64]* %48, align 8, !dbg !3759
%53 = call i64 @strings._write_byte-1512([2 x i64] %52, i8 %51, i8* %__.context_ptr), !dbg !3759
%54 = add i64 %50, %53, !dbg !3759
call void @llvm.dbg.value(metadata i64 %54, metadata !3713, metadata !DIExpression()), !dbg !3742
call void @llvm.dbg.value(metadata i64 %54, metadata !3713, metadata !DIExpression()), !dbg !3742
ret i64 %54, !dbg !3760
if.else: ; preds = %cmp.or
%55 = call i8 @strings.write_escaped_rune_writer.is_printable-0(i32 %1, i8* %__.context_ptr), !dbg !3761
%56 = trunc i8 %55 to i1, !dbg !3761
br i1 %56, label %if.then2, label %if.done4, !dbg !3761
if.then2: ; preds = %if.else
%57 = bitcast %io.Writer* %5 to [2 x i64]*, !dbg !3763
%58 = load [2 x i64], [2 x i64]* %57, align 8, !dbg !3763
%59 = call i64 @strings.write_encoded_rune_writer([2 x i64] %58, i32 %1, i1 false, i8* %__.context_ptr), !dbg !3763
call void @llvm.dbg.value(metadata i64 %59, metadata !3713, metadata !DIExpression()), !dbg !3742
call void @llvm.dbg.value(metadata i64 %59, metadata !3713, metadata !DIExpression()), !dbg !3742
ret i64 %59, !dbg !3765
if.done4: ; preds = %if.else
switch i32 %1, label %switch.default.body [
i32 7, label %switch.case.body5
i32 8, label %switch.case.body6
i32 27, label %switch.case.body7
i32 12, label %switch.case.body8
i32 10, label %switch.case.body9
i32 13, label %switch.case.body10
i32 9, label %switch.case.body11
i32 11, label %switch.case.body12
], !dbg !3766
switch.case.body5: ; preds = %if.done4
%60 = bitcast %io.Writer* %5 to [2 x i64]*, !dbg !3726
%61 = load [2 x i64], [2 x i64]* %60, align 8, !dbg !3726
%62 = bitcast [2 x i64]* %7 to %..string*, !dbg !3726
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$ad", i64 0, i64 0), i64 2 }, %..string* %62, align 8, !dbg !3726
%63 = load [2 x i64], [2 x i64]* %7, align 8, !dbg !3726
%64 = call i64 @strings.write_string_writer([2 x i64] %61, [2 x i64] %63, i8* %__.context_ptr), !dbg !3726
call void @llvm.dbg.value(metadata i64 %64, metadata !3713, metadata !DIExpression()), !dbg !3742
br label %for.done, !dbg !3766
switch.case.body6: ; preds = %if.done4
%65 = bitcast %io.Writer* %5 to [2 x i64]*, !dbg !3729
%66 = load [2 x i64], [2 x i64]* %65, align 8, !dbg !3729
%67 = bitcast [2 x i64]* %8 to %..string*, !dbg !3729
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$ae", i64 0, i64 0), i64 2 }, %..string* %67, align 8, !dbg !3729
%68 = load [2 x i64], [2 x i64]* %8, align 8, !dbg !3729
%69 = call i64 @strings.write_string_writer([2 x i64] %66, [2 x i64] %68, i8* %__.context_ptr), !dbg !3729
call void @llvm.dbg.value(metadata i64 %69, metadata !3713, metadata !DIExpression()), !dbg !3742
br label %for.done, !dbg !3766
switch.case.body7: ; preds = %if.done4
%70 = bitcast %io.Writer* %5 to [2 x i64]*, !dbg !3730
%71 = load [2 x i64], [2 x i64]* %70, align 8, !dbg !3730
%72 = bitcast [2 x i64]* %9 to %..string*, !dbg !3730
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$af", i64 0, i64 0), i64 2 }, %..string* %72, align 8, !dbg !3730
%73 = load [2 x i64], [2 x i64]* %9, align 8, !dbg !3730
%74 = call i64 @strings.write_string_writer([2 x i64] %71, [2 x i64] %73, i8* %__.context_ptr), !dbg !3730
call void @llvm.dbg.value(metadata i64 %74, metadata !3713, metadata !DIExpression()), !dbg !3742
br label %for.done, !dbg !3766
switch.case.body8: ; preds = %if.done4
%75 = bitcast %io.Writer* %5 to [2 x i64]*, !dbg !3731
%76 = load [2 x i64], [2 x i64]* %75, align 8, !dbg !3731
%77 = bitcast [2 x i64]* %10 to %..string*, !dbg !3731
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$b0", i64 0, i64 0), i64 2 }, %..string* %77, align 8, !dbg !3731
%78 = load [2 x i64], [2 x i64]* %10, align 8, !dbg !3731
%79 = call i64 @strings.write_string_writer([2 x i64] %76, [2 x i64] %78, i8* %__.context_ptr), !dbg !3731
call void @llvm.dbg.value(metadata i64 %79, metadata !3713, metadata !DIExpression()), !dbg !3742
br label %for.done, !dbg !3766
switch.case.body9: ; preds = %if.done4
%80 = bitcast %io.Writer* %5 to [2 x i64]*, !dbg !3732
%81 = load [2 x i64], [2 x i64]* %80, align 8, !dbg !3732
%82 = bitcast [2 x i64]* %11 to %..string*, !dbg !3732
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$b1", i64 0, i64 0), i64 2 }, %..string* %82, align 8, !dbg !3732
%83 = load [2 x i64], [2 x i64]* %11, align 8, !dbg !3732
%84 = call i64 @strings.write_string_writer([2 x i64] %81, [2 x i64] %83, i8* %__.context_ptr), !dbg !3732
call void @llvm.dbg.value(metadata i64 %84, metadata !3713, metadata !DIExpression()), !dbg !3742
br label %for.done, !dbg !3766
switch.case.body10: ; preds = %if.done4
%85 = bitcast %io.Writer* %5 to [2 x i64]*, !dbg !3733
%86 = load [2 x i64], [2 x i64]* %85, align 8, !dbg !3733
%87 = bitcast [2 x i64]* %12 to %..string*, !dbg !3733
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$b2", i64 0, i64 0), i64 2 }, %..string* %87, align 8, !dbg !3733
%88 = load [2 x i64], [2 x i64]* %12, align 8, !dbg !3733
%89 = call i64 @strings.write_string_writer([2 x i64] %86, [2 x i64] %88, i8* %__.context_ptr), !dbg !3733
call void @llvm.dbg.value(metadata i64 %89, metadata !3713, metadata !DIExpression()), !dbg !3742
br label %for.done, !dbg !3766
switch.case.body11: ; preds = %if.done4
%90 = bitcast %io.Writer* %5 to [2 x i64]*, !dbg !3734
%91 = load [2 x i64], [2 x i64]* %90, align 8, !dbg !3734
%92 = bitcast [2 x i64]* %13 to %..string*, !dbg !3734
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$b3", i64 0, i64 0), i64 2 }, %..string* %92, align 8, !dbg !3734
%93 = load [2 x i64], [2 x i64]* %13, align 8, !dbg !3734
%94 = call i64 @strings.write_string_writer([2 x i64] %91, [2 x i64] %93, i8* %__.context_ptr), !dbg !3734
call void @llvm.dbg.value(metadata i64 %94, metadata !3713, metadata !DIExpression()), !dbg !3742
br label %for.done, !dbg !3766
switch.case.body12: ; preds = %if.done4
%95 = bitcast %io.Writer* %5 to [2 x i64]*, !dbg !3735
%96 = load [2 x i64], [2 x i64]* %95, align 8, !dbg !3735
%97 = bitcast [2 x i64]* %14 to %..string*, !dbg !3735
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$b4", i64 0, i64 0), i64 2 }, %..string* %97, align 8, !dbg !3735
%98 = load [2 x i64], [2 x i64]* %14, align 8, !dbg !3735
%99 = call i64 @strings.write_string_writer([2 x i64] %96, [2 x i64] %98, i8* %__.context_ptr), !dbg !3735
call void @llvm.dbg.value(metadata i64 %99, metadata !3713, metadata !DIExpression()), !dbg !3742
br label %for.done, !dbg !3766
switch.default.body: ; preds = %if.done4
call void @llvm.dbg.value(metadata i32 0, metadata !3717, metadata !DIExpression()), !dbg !3767
call void @llvm.dbg.value(metadata i32 %1, metadata !3717, metadata !DIExpression()), !dbg !3767
%100 = icmp slt i32 %1, 32, !dbg !3768
br i1 %100, label %switch.case.body13, label %switch.case.next, !dbg !3768
switch.case.next: ; preds = %switch.default.body
%101 = icmp sgt i32 %1, 1114111, !dbg !3768
br i1 %101, label %switch.case.body17, label %switch.case.next14, !dbg !3768
switch.case.body13: ; preds = %switch.default.body
%102 = bitcast %io.Writer* %5 to [2 x i64]*, !dbg !3769
%103 = load [2 x i64], [2 x i64]* %102, align 8, !dbg !3769
%104 = call i64 @strings._write_byte-1512([2 x i64] %103, i8 92, i8* %__.context_ptr), !dbg !3769
call void @llvm.dbg.value(metadata i64 %104, metadata !3713, metadata !DIExpression()), !dbg !3742
%105 = load [2 x i64], [2 x i64]* %102, align 8, !dbg !3770
%106 = call i64 @strings._write_byte-1512([2 x i64] %105, i8 120, i8* %__.context_ptr), !dbg !3770
%107 = add i64 %104, %106, !dbg !3770
call void @llvm.dbg.value(metadata i64 %107, metadata !3713, metadata !DIExpression()), !dbg !3742
%108 = load i8*, i8** getelementptr inbounds (%..string, %..string* @strings.DIGITS_LOWER-1532, i64 0, i32 0), align 8, !dbg !3736
%109 = load i64, i64* getelementptr inbounds (%..string, %..string* @strings.DIGITS_LOWER-1532, i64 0, i32 1), align 8, !dbg !3736
%110 = trunc i32 %1 to i8, !dbg !3736
%111 = lshr i8 %110, 4, !dbg !3736
%112 = zext i8 %111 to i64, !dbg !3736
%113 = bitcast [2 x i64]* %15 to %..string*, !dbg !3736
store %..string { i8* getelementptr inbounds ([54 x i8], [54 x i8]* @"csbs$a1", i64 0, i64 0), i64 53 }, %..string* %113, align 8, !dbg !3736
%114 = load [2 x i64], [2 x i64]* %15, align 8, !dbg !3736
call void @runtime.bounds_check_error([2 x i64] %114, i32 362, i32 37, i64 %112, i64 %109), !dbg !3736
%115 = getelementptr i8, i8* %108, i64 %112, !dbg !3736
%116 = load i8, i8* %115, align 1, !dbg !3736
%117 = load [2 x i64], [2 x i64]* %102, align 8, !dbg !3736
%118 = call i64 @strings._write_byte-1512([2 x i64] %117, i8 %116, i8* %__.context_ptr), !dbg !3736
%119 = add i64 %107, %118, !dbg !3736
call void @llvm.dbg.value(metadata i64 %119, metadata !3713, metadata !DIExpression()), !dbg !3742
%120 = load i8*, i8** getelementptr inbounds (%..string, %..string* @strings.DIGITS_LOWER-1532, i64 0, i32 0), align 8, !dbg !3737
%121 = load i64, i64* getelementptr inbounds (%..string, %..string* @strings.DIGITS_LOWER-1532, i64 0, i32 1), align 8, !dbg !3737
%122 = and i8 %110, 15, !dbg !3737
%123 = zext i8 %122 to i64, !dbg !3737
%124 = bitcast [2 x i64]* %16 to %..string*, !dbg !3737
store %..string { i8* getelementptr inbounds ([54 x i8], [54 x i8]* @"csbs$a1", i64 0, i64 0), i64 53 }, %..string* %124, align 8, !dbg !3737
%125 = load [2 x i64], [2 x i64]* %16, align 8, !dbg !3737
call void @runtime.bounds_check_error([2 x i64] %125, i32 363, i32 37, i64 %123, i64 %121), !dbg !3737
%126 = getelementptr i8, i8* %120, i64 %123, !dbg !3737
%127 = load i8, i8* %126, align 1, !dbg !3737
%128 = load [2 x i64], [2 x i64]* %102, align 8, !dbg !3737
%129 = call i64 @strings._write_byte-1512([2 x i64] %128, i8 %127, i8* %__.context_ptr), !dbg !3737
%130 = add i64 %119, %129, !dbg !3737
call void @llvm.dbg.value(metadata i64 %130, metadata !3713, metadata !DIExpression()), !dbg !3742
br label %for.done, !dbg !3768
switch.case.next14: ; preds = %switch.case.next
%131 = icmp slt i32 %1, 65536, !dbg !3768
br i1 %131, label %switch.case.body17, label %switch.default.body23, !dbg !3768
switch.case.body17: ; preds = %switch.case.next, %switch.case.next14
%.032 = phi i32 [ %1, %switch.case.next14 ], [ 65533, %switch.case.next ], !dbg !3767
call void @llvm.dbg.value(metadata i32 %.032, metadata !3717, metadata !DIExpression()), !dbg !3767
%132 = bitcast %io.Writer* %5 to [2 x i64]*, !dbg !3771
%133 = load [2 x i64], [2 x i64]* %132, align 8, !dbg !3771
%134 = call i64 @strings._write_byte-1512([2 x i64] %133, i8 92, i8* %__.context_ptr), !dbg !3771
call void @llvm.dbg.value(metadata i64 %134, metadata !3713, metadata !DIExpression()), !dbg !3742
%135 = load [2 x i64], [2 x i64]* %132, align 8, !dbg !3772
%136 = call i64 @strings._write_byte-1512([2 x i64] %135, i8 117, i8* %__.context_ptr), !dbg !3772
%137 = add i64 %134, %136, !dbg !3772
call void @llvm.dbg.value(metadata i64 %137, metadata !3713, metadata !DIExpression()), !dbg !3742
call void @llvm.dbg.value(metadata i64 12, metadata !3719, metadata !DIExpression()), !dbg !3773
br label %for.loop19, !dbg !3774
for.loop19: ; preds = %for.body20, %switch.case.body17
%.1 = phi i64 [ %137, %switch.case.body17 ], [ %153, %for.body20 ], !dbg !3742
%.031 = phi i64 [ 12, %switch.case.body17 ], [ %154, %for.body20 ], !dbg !3742
call void @llvm.dbg.value(metadata i64 %.031, metadata !3719, metadata !DIExpression()), !dbg !3773
call void @llvm.dbg.value(metadata i64 %.1, metadata !3713, metadata !DIExpression()), !dbg !3742
%138 = icmp sge i64 %.031, 0, !dbg !3774
br i1 %138, label %for.body20, label %for.done, !dbg !3774
for.body20: ; preds = %for.loop19
%139 = load i8*, i8** getelementptr inbounds (%..string, %..string* @strings.DIGITS_LOWER-1532, i64 0, i32 0), align 8, !dbg !3738
%140 = load i64, i64* getelementptr inbounds (%..string, %..string* @strings.DIGITS_LOWER-1532, i64 0, i32 1), align 8, !dbg !3738
%141 = trunc i64 %.031 to i32, !dbg !3738
%142 = icmp ult i32 %141, 32, !dbg !3738
%143 = ashr i32 %.032, %141, !dbg !3738
%144 = select i1 %142, i32 %143, i32 0, !dbg !3738
%145 = and i32 %144, 15, !dbg !3738
%146 = sext i32 %145 to i64, !dbg !3738
%147 = bitcast [2 x i64]* %17 to %..string*, !dbg !3738
store %..string { i8* getelementptr inbounds ([54 x i8], [54 x i8]* @"csbs$a1", i64 0, i64 0), i64 53 }, %..string* %147, align 8, !dbg !3738
%148 = load [2 x i64], [2 x i64]* %17, align 8, !dbg !3738
call void @runtime.bounds_check_error([2 x i64] %148, i32 372, i32 38, i64 %146, i64 %140), !dbg !3738
%149 = getelementptr i8, i8* %139, i64 %146, !dbg !3738
%150 = load i8, i8* %149, align 1, !dbg !3738
%151 = load [2 x i64], [2 x i64]* %132, align 8, !dbg !3738
%152 = call i64 @strings._write_byte-1512([2 x i64] %151, i8 %150, i8* %__.context_ptr), !dbg !3738
%153 = add i64 %.1, %152, !dbg !3738
call void @llvm.dbg.value(metadata i64 %153, metadata !3713, metadata !DIExpression()), !dbg !3742
%154 = sub i64 %.031, 4, !dbg !3775
call void @llvm.dbg.value(metadata i64 %154, metadata !3719, metadata !DIExpression()), !dbg !3773
br label %for.loop19, !dbg !3774
switch.default.body23: ; preds = %switch.case.next14
%155 = bitcast %io.Writer* %5 to [2 x i64]*, !dbg !3776
%156 = load [2 x i64], [2 x i64]* %155, align 8, !dbg !3776
%157 = call i64 @strings._write_byte-1512([2 x i64] %156, i8 92, i8* %__.context_ptr), !dbg !3776
call void @llvm.dbg.value(metadata i64 %157, metadata !3713, metadata !DIExpression()), !dbg !3742
%158 = load [2 x i64], [2 x i64]* %155, align 8, !dbg !3777
%159 = call i64 @strings._write_byte-1512([2 x i64] %158, i8 85, i8* %__.context_ptr), !dbg !3777
%160 = add i64 %157, %159, !dbg !3777
call void @llvm.dbg.value(metadata i64 %160, metadata !3713, metadata !DIExpression()), !dbg !3742
call void @llvm.dbg.value(metadata i64 28, metadata !3721, metadata !DIExpression()), !dbg !3778
br label %for.loop25, !dbg !3779
for.loop25: ; preds = %for.body26, %switch.default.body23
%.2 = phi i64 [ %160, %switch.default.body23 ], [ %176, %for.body26 ], !dbg !3742
%.0 = phi i64 [ 28, %switch.default.body23 ], [ %177, %for.body26 ], !dbg !3742
call void @llvm.dbg.value(metadata i64 %.0, metadata !3721, metadata !DIExpression()), !dbg !3778
call void @llvm.dbg.value(metadata i64 %.2, metadata !3713, metadata !DIExpression()), !dbg !3742
%161 = icmp sge i64 %.0, 0, !dbg !3779
br i1 %161, label %for.body26, label %for.done, !dbg !3779
for.body26: ; preds = %for.loop25
%162 = load i8*, i8** getelementptr inbounds (%..string, %..string* @strings.DIGITS_LOWER-1532, i64 0, i32 0), align 8, !dbg !3740
%163 = load i64, i64* getelementptr inbounds (%..string, %..string* @strings.DIGITS_LOWER-1532, i64 0, i32 1), align 8, !dbg !3740
%164 = trunc i64 %.0 to i32, !dbg !3740
%165 = icmp ult i32 %164, 32, !dbg !3740
%166 = ashr i32 %1, %164, !dbg !3740
%167 = select i1 %165, i32 %166, i32 0, !dbg !3740
%168 = and i32 %167, 15, !dbg !3740
%169 = sext i32 %168 to i64, !dbg !3740
%170 = bitcast [2 x i64]* %18 to %..string*, !dbg !3740
store %..string { i8* getelementptr inbounds ([54 x i8], [54 x i8]* @"csbs$a1", i64 0, i64 0), i64 53 }, %..string* %170, align 8, !dbg !3740
%171 = load [2 x i64], [2 x i64]* %18, align 8, !dbg !3740
call void @runtime.bounds_check_error([2 x i64] %171, i32 378, i32 38, i64 %169, i64 %163), !dbg !3740
%172 = getelementptr i8, i8* %162, i64 %169, !dbg !3740
%173 = load i8, i8* %172, align 1, !dbg !3740
%174 = load [2 x i64], [2 x i64]* %155, align 8, !dbg !3740
%175 = call i64 @strings._write_byte-1512([2 x i64] %174, i8 %173, i8* %__.context_ptr), !dbg !3740
%176 = add i64 %.2, %175, !dbg !3740
call void @llvm.dbg.value(metadata i64 %176, metadata !3713, metadata !DIExpression()), !dbg !3742
%177 = sub i64 %.0, 4, !dbg !3780
call void @llvm.dbg.value(metadata i64 %177, metadata !3721, metadata !DIExpression()), !dbg !3778
br label %for.loop25, !dbg !3779
}
define internal i64 @fmt.println([2 x i64] %0, [2 x i64] %1, i8* noalias nocapture nonnull %__.context_ptr) !dbg !3781 {
decls:
%2 = alloca { %..any*, i64 }, align 8
call void @llvm.dbg.declare(metadata { %..any*, i64 }* %3, metadata !3785, metadata !DIExpression()), !dbg !3788
%3 = alloca { %..any*, i64 }, align 8
%4 = alloca %..string, align 8
call void @llvm.dbg.declare(metadata %..string* %5, metadata !3786, metadata !DIExpression()), !dbg !3789
%5 = alloca %..string, align 8
%6 = bitcast { %..any*, i64 }* %2 to [2 x i64]*
store [2 x i64] %0, [2 x i64]* %6, align 8
%7 = bitcast { %..any*, i64 }* %3 to i8*
%8 = bitcast { %..any*, i64 }* %2 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %7, i8* align 8 %8, i64 16, i1 false)
%9 = bitcast %..string* %4 to [2 x i64]*
store [2 x i64] %1, [2 x i64]* %9, align 8
%10 = bitcast %..string* %5 to i8*
%11 = bitcast %..string* %4 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %10, i8* align 8 %11, i64 16, i1 false)
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !3787, metadata !DIExpression()), !dbg !3790
%12 = load i32, i32* @os.stdout, align 4, !dbg !3791
%13 = bitcast { %..any*, i64 }* %3 to [2 x i64]*, !dbg !3791
%14 = load [2 x i64], [2 x i64]* %13, align 8, !dbg !3791
%15 = bitcast %..string* %5 to [2 x i64]*, !dbg !3791
%16 = load [2 x i64], [2 x i64]* %15, align 8, !dbg !3791
%17 = call i64 @fmt.fprintln(i32 %12, [2 x i64] %14, [2 x i64] %16, i8* %__.context_ptr), !dbg !3791
ret i64 %17, !dbg !3791
}
define internal [2 x i64] @reflect.as_int([2 x i64] %0, i8* noalias nocapture nonnull %__.context_ptr) !dbg !3793 {
decls:
%1 = alloca %..any, align 8
call void @llvm.dbg.declare(metadata %..any* %2, metadata !3801, metadata !DIExpression()), !dbg !3807
%2 = alloca %..any, align 8
%3 = alloca { i64, i8 }, align 8, !dbg !3808
%4 = alloca { i64, i8 }, align 8, !dbg !3809
%5 = bitcast %..any* %1 to [2 x i64]*
store [2 x i64] %0, [2 x i64]* %5, align 8
%6 = bitcast %..any* %2 to i8*
%7 = bitcast %..any* %1 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %6, i8* align 8 %7, i64 16, i1 false)
call void @llvm.dbg.value(metadata i64 0, metadata !3802, metadata !DIExpression()), !dbg !3810
call void @llvm.dbg.value(metadata i8 0, metadata !3803, metadata !DIExpression()), !dbg !3810
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !3804, metadata !DIExpression()), !dbg !3811
call void @llvm.dbg.value(metadata i64 0, metadata !3805, metadata !DIExpression()), !dbg !3812
%8 = bitcast %..any* %2 to [2 x i64]*, !dbg !3808
%9 = load [2 x i64], [2 x i64]* %8, align 8, !dbg !3808
%10 = call [2 x i64] @reflect.as_i64([2 x i64] %9, i8* %__.context_ptr), !dbg !3808
%11 = bitcast { i64, i8 }* %3 to [2 x i64]*, !dbg !3808
store [2 x i64] %10, [2 x i64]* %11, align 8, !dbg !3808
%12 = getelementptr inbounds { i64, i8 }, { i64, i8 }* %3, i32 0, i32 0, !dbg !3808
%13 = load i64, i64* %12, align 8, !dbg !3808
%14 = getelementptr inbounds { i64, i8 }, { i64, i8 }* %3, i32 0, i32 1, !dbg !3808
%15 = load i8, i8* %14, align 1, !dbg !3808
call void @llvm.dbg.value(metadata i64 %13, metadata !3805, metadata !DIExpression()), !dbg !3812
call void @llvm.dbg.value(metadata i64 %13, metadata !3802, metadata !DIExpression()), !dbg !3810
call void @llvm.dbg.value(metadata i8 %15, metadata !3803, metadata !DIExpression()), !dbg !3810
%16 = getelementptr inbounds { i64, i8 }, { i64, i8 }* %4, i32 0, i32 0, !dbg !3809
%17 = getelementptr inbounds { i64, i8 }, { i64, i8 }* %4, i32 0, i32 1, !dbg !3809
store i64 %13, i64* %16, align 8, !dbg !3809
store i8 %15, i8* %17, align 1, !dbg !3809
%18 = bitcast { i64, i8 }* %4 to [2 x i64]*, !dbg !3809
%19 = load [2 x i64], [2 x i64]* %18, align 8, !dbg !3809
ret [2 x i64] %19, !dbg !3809
}
define internal [2 x i64] @reflect.as_i64([2 x i64] %0, i8* noalias nocapture nonnull %__.context_ptr) !dbg !3813 {
decls:
%1 = alloca %..any, align 8
call void @llvm.dbg.declare(metadata %..any* %2, metadata !3820, metadata !DIExpression()), !dbg !3953
%2 = alloca %..any, align 8
%3 = alloca { i64, i8 }, align 8, !dbg !3954
call void @llvm.dbg.declare(metadata %..any* %4, metadata !3824, metadata !DIExpression()), !dbg !3957
%4 = alloca %..any, align 8, !dbg !3957
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Integer* %5, metadata !3827, metadata !DIExpression()), !dbg !3958
%5 = alloca %runtime.Type_Info_Integer, align 1, !dbg !3959
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Rune* %6, metadata !3892, metadata !DIExpression()), !dbg !3958
%6 = alloca %runtime.Type_Info_Rune, align 1, !dbg !3959
%7 = alloca { i32, i8 }, align 4, !dbg !3960
%8 = alloca [2 x i64], align 8, !dbg !3960
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Float* %9, metadata !3894, metadata !DIExpression()), !dbg !3958
%9 = alloca %runtime.Type_Info_Float, align 1, !dbg !3959
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Boolean* %10, metadata !3912, metadata !DIExpression()), !dbg !3958
%10 = alloca %runtime.Type_Info_Boolean, align 1, !dbg !3959
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Complex* %11, metadata !3927, metadata !DIExpression()), !dbg !3958
%11 = alloca %runtime.Type_Info_Complex, align 1, !dbg !3959
call void @llvm.dbg.declare(metadata %..complex64* %12, metadata !3928, metadata !DIExpression()), !dbg !3961
%12 = alloca %..complex64, align 4, !dbg !3962
call void @llvm.dbg.declare(metadata %..complex128* %13, metadata !3933, metadata !DIExpression()), !dbg !3961
%13 = alloca %..complex128, align 8, !dbg !3962
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Quaternion* %14, metadata !3938, metadata !DIExpression()), !dbg !3958
%14 = alloca %runtime.Type_Info_Quaternion, align 1, !dbg !3959
call void @llvm.dbg.declare(metadata %..quaternion128* %15, metadata !3939, metadata !DIExpression()), !dbg !3963
%15 = alloca %..quaternion128, align 4, !dbg !3964
call void @llvm.dbg.declare(metadata %..quaternion256* %16, metadata !3946, metadata !DIExpression()), !dbg !3963
%16 = alloca %..quaternion256, align 8, !dbg !3964
%17 = alloca { i64, i8 }, align 8, !dbg !3965
%18 = bitcast %..any* %1 to [2 x i64]*
store [2 x i64] %0, [2 x i64]* %18, align 8
%19 = bitcast %..any* %2 to i8*
%20 = bitcast %..any* %1 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %19, i8* align 8 %20, i64 16, i1 false)
call void @llvm.dbg.value(metadata i64 0, metadata !3821, metadata !DIExpression()), !dbg !3966
call void @llvm.dbg.value(metadata i8 0, metadata !3822, metadata !DIExpression()), !dbg !3966
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !3823, metadata !DIExpression()), !dbg !3967
%21 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 0, !dbg !3968
%22 = load i8*, i8** %21, align 8, !dbg !3968
%23 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 1, !dbg !3968
%24 = load i64, i64* %23, align 8, !dbg !3968
%25 = icmp eq i8* %22, null, !dbg !3968
%26 = icmp eq i64 %24, 0, !dbg !3968
%27 = or i1 %25, %26, !dbg !3968
br i1 %27, label %if.then, label %if.done, !dbg !3968
if.then: ; preds = %decls
call void @llvm.dbg.value(metadata i64 0, metadata !3821, metadata !DIExpression()), !dbg !3966
call void @llvm.dbg.value(metadata i8 0, metadata !3822, metadata !DIExpression()), !dbg !3966
%28 = getelementptr inbounds { i64, i8 }, { i64, i8 }* %3, i32 0, i32 0, !dbg !3954
%29 = getelementptr inbounds { i64, i8 }, { i64, i8 }* %3, i32 0, i32 1, !dbg !3954
store i64 0, i64* %28, align 8, !dbg !3954
store i8 0, i8* %29, align 1, !dbg !3954
%30 = bitcast { i64, i8 }* %3 to [2 x i64]*, !dbg !3954
%31 = load [2 x i64], [2 x i64]* %30, align 8, !dbg !3954
ret [2 x i64] %31, !dbg !3954
if.done: ; preds = %decls
%32 = bitcast %..any* %4 to i8*, !dbg !3957
%33 = getelementptr i8, i8* %32, i64 16, !dbg !3957
call void @llvm.memset.p0i8.i64(i8* align 8 %33, i8 0, i64 0, i1 false), !dbg !3957
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %32, i8* align 8 %19, i64 16, i1 false), !dbg !3957
call void @llvm.dbg.value(metadata %runtime.Type_Info* null, metadata !3826, metadata !DIExpression()), !dbg !3969
%34 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 1, !dbg !3970
%35 = load i64, i64* %34, align 8, !dbg !3970
%36 = call %runtime.Type_Info* @runtime.__type_info_of(i64 %35), !dbg !3970
%37 = call %runtime.Type_Info* @runtime.type_info_core(%runtime.Type_Info* %36), !dbg !3970
call void @llvm.dbg.value(metadata %runtime.Type_Info* %37, metadata !3826, metadata !DIExpression()), !dbg !3969
%38 = getelementptr inbounds %runtime.Type_Info, %runtime.Type_Info* %37, i32 0, i32 3, !dbg !3971
%39 = load i64, i64* %38, align 8, !dbg !3971
store i64 %39, i64* %34, align 8, !dbg !3971
%40 = getelementptr inbounds %runtime.Type_Info, %runtime.Type_Info* %37, i32 0, i32 4, !dbg !3959
%41 = bitcast { [0 x i64], [120 x i8], i64 }* %40 to i8*, !dbg !3959
%42 = getelementptr inbounds { [0 x i64], [120 x i8], i64 }, { [0 x i64], [120 x i8], i64 }* %40, i32 0, i32 2, !dbg !3959
%43 = load i64, i64* %42, align 8, !dbg !3959
switch i64 %43, label %typeswitch.done67 [
i64 2, label %typeswitch.body
i64 3, label %typeswitch.body30
i64 4, label %typeswitch.body31
i64 8, label %typeswitch.body40
i64 5, label %typeswitch.body48
i64 6, label %typeswitch.body56
], !dbg !3959
typeswitch.body: ; preds = %if.done
%44 = bitcast %runtime.Type_Info_Integer* %5 to i8*, !dbg !3959
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %44, i8* align 1 %41, i64 2, i1 false), !dbg !3959
call void @llvm.dbg.value(metadata i8 1, metadata !3822, metadata !DIExpression()), !dbg !3966
%45 = load i64, i64* %34, align 8, !dbg !3972
switch i64 %45, label %typeswitch.done67 [
i64 4683743612465315936, label %typeswitch.body1
i64 4683743612465315938, label %typeswitch.body2
i64 4683743612465315860, label %typeswitch.body3
i64 4683743612465315889, label %typeswitch.body4
i64 4683743612465315971, label %typeswitch.body5
i64 4683743612465315841, label %typeswitch.body6
i64 72057594037927945, label %typeswitch.body7
i64 72057594037928033, label %typeswitch.body8
i64 72057594037927953, label %typeswitch.body9
i64 72057594037927940, label %typeswitch.body10
i64 72057594037928068, label %typeswitch.body11
i64 72057594037928035, label %typeswitch.body12
i64 72057594037927998, label %typeswitch.body13
i64 72057594037928056, label %typeswitch.body14
i64 72057594037928058, label %typeswitch.body15
i64 72057594037928060, label %typeswitch.body16
i64 72057594037928070, label %typeswitch.body17
i64 4683743612465315959, label %typeswitch.body18
i64 4683743612465315961, label %typeswitch.body19
i64 4683743612465315963, label %typeswitch.body20
i64 4683743612465315973, label %typeswitch.body21
i64 72057594037928062, label %typeswitch.body22
i64 72057594037928064, label %typeswitch.body23
i64 72057594037928066, label %typeswitch.body24
i64 72057594037928072, label %typeswitch.body25
i64 4683743612465315965, label %typeswitch.body26
i64 4683743612465315967, label %typeswitch.body27
i64 4683743612465315969, label %typeswitch.body28
i64 4683743612465315975, label %typeswitch.body29
], !dbg !3972
typeswitch.body1: ; preds = %typeswitch.body
%46 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972
%47 = load i8*, i8** %46, align 8, !dbg !3972
%48 = load i8, i8* %47, align 1, !dbg !3972
call void @llvm.dbg.value(metadata i8 %48, metadata !3828, metadata !DIExpression()), !dbg !3969
%49 = sext i8 %48 to i64, !dbg !3973
call void @llvm.dbg.value(metadata i64 %49, metadata !3821, metadata !DIExpression()), !dbg !3966
br label %typeswitch.done67, !dbg !3972
typeswitch.body2: ; preds = %typeswitch.body
%50 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972
%51 = load i8*, i8** %50, align 8, !dbg !3972
%52 = bitcast i8* %51 to i16*, !dbg !3972
%53 = load i16, i16* %52, align 2, !dbg !3972
call void @llvm.dbg.value(metadata i16 %53, metadata !3829, metadata !DIExpression()), !dbg !3969
%54 = sext i16 %53 to i64, !dbg !3974
call void @llvm.dbg.value(metadata i64 %54, metadata !3821, metadata !DIExpression()), !dbg !3966
br label %typeswitch.done67, !dbg !3972
typeswitch.body3: ; preds = %typeswitch.body
%55 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972
%56 = load i8*, i8** %55, align 8, !dbg !3972
%57 = bitcast i8* %56 to i32*, !dbg !3972
%58 = load i32, i32* %57, align 4, !dbg !3972
call void @llvm.dbg.value(metadata i32 %58, metadata !3830, metadata !DIExpression()), !dbg !3969
%59 = sext i32 %58 to i64, !dbg !3975
call void @llvm.dbg.value(metadata i64 %59, metadata !3821, metadata !DIExpression()), !dbg !3966
br label %typeswitch.done67, !dbg !3972
typeswitch.body4: ; preds = %typeswitch.body
%60 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972
%61 = load i8*, i8** %60, align 8, !dbg !3972
%62 = bitcast i8* %61 to i64*, !dbg !3972
%63 = load i64, i64* %62, align 8, !dbg !3972
call void @llvm.dbg.value(metadata i64 %63, metadata !3831, metadata !DIExpression()), !dbg !3969
call void @llvm.dbg.value(metadata i64 %63, metadata !3821, metadata !DIExpression()), !dbg !3966
br label %typeswitch.done67, !dbg !3972
typeswitch.body5: ; preds = %typeswitch.body
%64 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972
%65 = load i8*, i8** %64, align 8, !dbg !3972
%66 = bitcast i8* %65 to i128*, !dbg !3972
%67 = load i128, i128* %66, align 16, !dbg !3972
call void @llvm.dbg.value(metadata i128 %67, metadata !3832, metadata !DIExpression()), !dbg !3969
%68 = trunc i128 %67 to i64, !dbg !3976
call void @llvm.dbg.value(metadata i64 %68, metadata !3821, metadata !DIExpression()), !dbg !3966
br label %typeswitch.done67, !dbg !3972
typeswitch.body6: ; preds = %typeswitch.body
%69 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972
%70 = load i8*, i8** %69, align 8, !dbg !3972
%71 = bitcast i8* %70 to i64*, !dbg !3972
%72 = load i64, i64* %71, align 8, !dbg !3972
call void @llvm.dbg.value(metadata i64 %72, metadata !3833, metadata !DIExpression()), !dbg !3969
call void @llvm.dbg.value(metadata i64 %72, metadata !3821, metadata !DIExpression()), !dbg !3966
br label %typeswitch.done67, !dbg !3972
typeswitch.body7: ; preds = %typeswitch.body
%73 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972
%74 = load i8*, i8** %73, align 8, !dbg !3972
%75 = load i8, i8* %74, align 1, !dbg !3972
call void @llvm.dbg.value(metadata i8 %75, metadata !3834, metadata !DIExpression()), !dbg !3969
%76 = zext i8 %75 to i64, !dbg !3977
call void @llvm.dbg.value(metadata i64 %76, metadata !3821, metadata !DIExpression()), !dbg !3966
br label %typeswitch.done67, !dbg !3972
typeswitch.body8: ; preds = %typeswitch.body
%77 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972
%78 = load i8*, i8** %77, align 8, !dbg !3972
%79 = bitcast i8* %78 to i16*, !dbg !3972
%80 = load i16, i16* %79, align 2, !dbg !3972
call void @llvm.dbg.value(metadata i16 %80, metadata !3835, metadata !DIExpression()), !dbg !3969
%81 = zext i16 %80 to i64, !dbg !3978
call void @llvm.dbg.value(metadata i64 %81, metadata !3821, metadata !DIExpression()), !dbg !3966
br label %typeswitch.done67, !dbg !3972
typeswitch.body9: ; preds = %typeswitch.body
%82 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972
%83 = load i8*, i8** %82, align 8, !dbg !3972
%84 = bitcast i8* %83 to i32*, !dbg !3972
%85 = load i32, i32* %84, align 4, !dbg !3972
call void @llvm.dbg.value(metadata i32 %85, metadata !3838, metadata !DIExpression()), !dbg !3969
%86 = zext i32 %85 to i64, !dbg !3979
call void @llvm.dbg.value(metadata i64 %86, metadata !3821, metadata !DIExpression()), !dbg !3966
br label %typeswitch.done67, !dbg !3972
typeswitch.body10: ; preds = %typeswitch.body
%87 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972
%88 = load i8*, i8** %87, align 8, !dbg !3972
%89 = bitcast i8* %88 to i64*, !dbg !3972
%90 = load i64, i64* %89, align 8, !dbg !3972
call void @llvm.dbg.value(metadata i64 %90, metadata !3839, metadata !DIExpression()), !dbg !3969
call void @llvm.dbg.value(metadata i64 %90, metadata !3821, metadata !DIExpression()), !dbg !3966
br label %typeswitch.done67, !dbg !3972
typeswitch.body11: ; preds = %typeswitch.body
%91 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972
%92 = load i8*, i8** %91, align 8, !dbg !3972
%93 = bitcast i8* %92 to i128*, !dbg !3972
%94 = load i128, i128* %93, align 16, !dbg !3972
call void @llvm.dbg.value(metadata i128 %94, metadata !3840, metadata !DIExpression()), !dbg !3969
%95 = trunc i128 %94 to i64, !dbg !3980
call void @llvm.dbg.value(metadata i64 %95, metadata !3821, metadata !DIExpression()), !dbg !3966
br label %typeswitch.done67, !dbg !3972
typeswitch.body12: ; preds = %typeswitch.body
%96 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972
%97 = load i8*, i8** %96, align 8, !dbg !3972
%98 = bitcast i8* %97 to i64*, !dbg !3972
%99 = load i64, i64* %98, align 8, !dbg !3972
call void @llvm.dbg.value(metadata i64 %99, metadata !3841, metadata !DIExpression()), !dbg !3969
call void @llvm.dbg.value(metadata i64 %99, metadata !3821, metadata !DIExpression()), !dbg !3966
br label %typeswitch.done67, !dbg !3972
typeswitch.body13: ; preds = %typeswitch.body
%100 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972
%101 = load i8*, i8** %100, align 8, !dbg !3972
%102 = bitcast i8* %101 to i64*, !dbg !3972
%103 = load i64, i64* %102, align 8, !dbg !3972
call void @llvm.dbg.value(metadata i64 %103, metadata !3842, metadata !DIExpression()), !dbg !3969
call void @llvm.dbg.value(metadata i64 %103, metadata !3821, metadata !DIExpression()), !dbg !3966
br label %typeswitch.done67, !dbg !3972
typeswitch.body14: ; preds = %typeswitch.body
%104 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972
%105 = load i8*, i8** %104, align 8, !dbg !3972
%106 = bitcast i8* %105 to i16*, !dbg !3972
%107 = load i16, i16* %106, align 2, !dbg !3972
call void @llvm.dbg.value(metadata i16 %107, metadata !3843, metadata !DIExpression()), !dbg !3969
%108 = zext i16 %107 to i64, !dbg !3981
call void @llvm.dbg.value(metadata i64 %108, metadata !3821, metadata !DIExpression()), !dbg !3966
br label %typeswitch.done67, !dbg !3972
typeswitch.body15: ; preds = %typeswitch.body
%109 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972
%110 = load i8*, i8** %109, align 8, !dbg !3972
%111 = bitcast i8* %110 to i32*, !dbg !3972
%112 = load i32, i32* %111, align 4, !dbg !3972
call void @llvm.dbg.value(metadata i32 %112, metadata !3846, metadata !DIExpression()), !dbg !3969
%113 = zext i32 %112 to i64, !dbg !3982
call void @llvm.dbg.value(metadata i64 %113, metadata !3821, metadata !DIExpression()), !dbg !3966
br label %typeswitch.done67, !dbg !3972
typeswitch.body16: ; preds = %typeswitch.body
%114 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972
%115 = load i8*, i8** %114, align 8, !dbg !3972
%116 = bitcast i8* %115 to i64*, !dbg !3972
%117 = load i64, i64* %116, align 8, !dbg !3972
call void @llvm.dbg.value(metadata i64 %117, metadata !3849, metadata !DIExpression()), !dbg !3969
call void @llvm.dbg.value(metadata i64 %117, metadata !3821, metadata !DIExpression()), !dbg !3966
br label %typeswitch.done67, !dbg !3972
typeswitch.body17: ; preds = %typeswitch.body
%118 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972
%119 = load i8*, i8** %118, align 8, !dbg !3972
%120 = bitcast i8* %119 to i128*, !dbg !3972
%121 = load i128, i128* %120, align 16, !dbg !3972
call void @llvm.dbg.value(metadata i128 %121, metadata !3852, metadata !DIExpression()), !dbg !3969
%122 = trunc i128 %121 to i64, !dbg !3983
call void @llvm.dbg.value(metadata i64 %122, metadata !3821, metadata !DIExpression()), !dbg !3966
br label %typeswitch.done67, !dbg !3972
typeswitch.body18: ; preds = %typeswitch.body
%123 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972
%124 = load i8*, i8** %123, align 8, !dbg !3972
%125 = bitcast i8* %124 to i16*, !dbg !3972
%126 = load i16, i16* %125, align 2, !dbg !3972
call void @llvm.dbg.value(metadata i16 %126, metadata !3855, metadata !DIExpression()), !dbg !3969
%127 = sext i16 %126 to i64, !dbg !3984
call void @llvm.dbg.value(metadata i64 %127, metadata !3821, metadata !DIExpression()), !dbg !3966
br label %typeswitch.done67, !dbg !3972
typeswitch.body19: ; preds = %typeswitch.body
%128 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972
%129 = load i8*, i8** %128, align 8, !dbg !3972
%130 = bitcast i8* %129 to i32*, !dbg !3972
%131 = load i32, i32* %130, align 4, !dbg !3972
call void @llvm.dbg.value(metadata i32 %131, metadata !3858, metadata !DIExpression()), !dbg !3969
%132 = sext i32 %131 to i64, !dbg !3985
call void @llvm.dbg.value(metadata i64 %132, metadata !3821, metadata !DIExpression()), !dbg !3966
br label %typeswitch.done67, !dbg !3972
typeswitch.body20: ; preds = %typeswitch.body
%133 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972
%134 = load i8*, i8** %133, align 8, !dbg !3972
%135 = bitcast i8* %134 to i64*, !dbg !3972
%136 = load i64, i64* %135, align 8, !dbg !3972
call void @llvm.dbg.value(metadata i64 %136, metadata !3861, metadata !DIExpression()), !dbg !3969
call void @llvm.dbg.value(metadata i64 %136, metadata !3821, metadata !DIExpression()), !dbg !3966
br label %typeswitch.done67, !dbg !3972
typeswitch.body21: ; preds = %typeswitch.body
%137 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972
%138 = load i8*, i8** %137, align 8, !dbg !3972
%139 = bitcast i8* %138 to i128*, !dbg !3972
%140 = load i128, i128* %139, align 16, !dbg !3972
call void @llvm.dbg.value(metadata i128 %140, metadata !3864, metadata !DIExpression()), !dbg !3969
%141 = trunc i128 %140 to i64, !dbg !3986
call void @llvm.dbg.value(metadata i64 %141, metadata !3821, metadata !DIExpression()), !dbg !3966
br label %typeswitch.done67, !dbg !3972
typeswitch.body22: ; preds = %typeswitch.body
%142 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972
%143 = load i8*, i8** %142, align 8, !dbg !3972
%144 = bitcast i8* %143 to i16*, !dbg !3972
%145 = load i16, i16* %144, align 2, !dbg !3972
call void @llvm.dbg.value(metadata i16 %145, metadata !3867, metadata !DIExpression()), !dbg !3969
%146 = call i16 @llvm.bswap.i16(i16 %145), !dbg !3987
%147 = zext i16 %146 to i64, !dbg !3987
call void @llvm.dbg.value(metadata i64 %147, metadata !3821, metadata !DIExpression()), !dbg !3966
br label %typeswitch.done67, !dbg !3972
typeswitch.body23: ; preds = %typeswitch.body
%148 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972
%149 = load i8*, i8** %148, align 8, !dbg !3972
%150 = bitcast i8* %149 to i32*, !dbg !3972
%151 = load i32, i32* %150, align 4, !dbg !3972
call void @llvm.dbg.value(metadata i32 %151, metadata !3870, metadata !DIExpression()), !dbg !3969
%152 = call i32 @llvm.bswap.i32(i32 %151), !dbg !3988
%153 = zext i32 %152 to i64, !dbg !3988
call void @llvm.dbg.value(metadata i64 %153, metadata !3821, metadata !DIExpression()), !dbg !3966
br label %typeswitch.done67, !dbg !3972
typeswitch.body24: ; preds = %typeswitch.body
%154 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972
%155 = load i8*, i8** %154, align 8, !dbg !3972
%156 = bitcast i8* %155 to i64*, !dbg !3972
%157 = load i64, i64* %156, align 8, !dbg !3972
call void @llvm.dbg.value(metadata i64 %157, metadata !3873, metadata !DIExpression()), !dbg !3969
%158 = call i64 @llvm.bswap.i64(i64 %157), !dbg !3989
call void @llvm.dbg.value(metadata i64 %158, metadata !3821, metadata !DIExpression()), !dbg !3966
br label %typeswitch.done67, !dbg !3972
typeswitch.body25: ; preds = %typeswitch.body
%159 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972
%160 = load i8*, i8** %159, align 8, !dbg !3972
%161 = bitcast i8* %160 to i128*, !dbg !3972
%162 = load i128, i128* %161, align 16, !dbg !3972
call void @llvm.dbg.value(metadata i128 %162, metadata !3876, metadata !DIExpression()), !dbg !3969
%163 = call i128 @llvm.bswap.i128(i128 %162), !dbg !3990
%164 = trunc i128 %163 to i64, !dbg !3990
call void @llvm.dbg.value(metadata i64 %164, metadata !3821, metadata !DIExpression()), !dbg !3966
br label %typeswitch.done67, !dbg !3972
typeswitch.body26: ; preds = %typeswitch.body
%165 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972
%166 = load i8*, i8** %165, align 8, !dbg !3972
%167 = bitcast i8* %166 to i16*, !dbg !3972
%168 = load i16, i16* %167, align 2, !dbg !3972
call void @llvm.dbg.value(metadata i16 %168, metadata !3879, metadata !DIExpression()), !dbg !3969
%169 = call i16 @llvm.bswap.i16(i16 %168), !dbg !3991
%170 = sext i16 %169 to i64, !dbg !3991
call void @llvm.dbg.value(metadata i64 %170, metadata !3821, metadata !DIExpression()), !dbg !3966
br label %typeswitch.done67, !dbg !3972
typeswitch.body27: ; preds = %typeswitch.body
%171 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972
%172 = load i8*, i8** %171, align 8, !dbg !3972
%173 = bitcast i8* %172 to i32*, !dbg !3972
%174 = load i32, i32* %173, align 4, !dbg !3972
call void @llvm.dbg.value(metadata i32 %174, metadata !3882, metadata !DIExpression()), !dbg !3969
%175 = call i32 @llvm.bswap.i32(i32 %174), !dbg !3992
%176 = sext i32 %175 to i64, !dbg !3992
call void @llvm.dbg.value(metadata i64 %176, metadata !3821, metadata !DIExpression()), !dbg !3966
br label %typeswitch.done67, !dbg !3972
typeswitch.body28: ; preds = %typeswitch.body
%177 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972
%178 = load i8*, i8** %177, align 8, !dbg !3972
%179 = bitcast i8* %178 to i64*, !dbg !3972
%180 = load i64, i64* %179, align 8, !dbg !3972
call void @llvm.dbg.value(metadata i64 %180, metadata !3885, metadata !DIExpression()), !dbg !3969
%181 = call i64 @llvm.bswap.i64(i64 %180), !dbg !3993
call void @llvm.dbg.value(metadata i64 %181, metadata !3821, metadata !DIExpression()), !dbg !3966
br label %typeswitch.done67, !dbg !3972
typeswitch.body29: ; preds = %typeswitch.body
%182 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972
%183 = load i8*, i8** %182, align 8, !dbg !3972
%184 = bitcast i8* %183 to i128*, !dbg !3972
%185 = load i128, i128* %184, align 16, !dbg !3972
call void @llvm.dbg.value(metadata i128 %185, metadata !3888, metadata !DIExpression()), !dbg !3969
%186 = call i128 @llvm.bswap.i128(i128 %185), !dbg !3994
%187 = trunc i128 %186 to i64, !dbg !3994
call void @llvm.dbg.value(metadata i64 %187, metadata !3821, metadata !DIExpression()), !dbg !3966
br label %typeswitch.done67, !dbg !3972
typeswitch.body30: ; preds = %if.done
%188 = bitcast %runtime.Type_Info_Rune* %6 to i8*, !dbg !3959
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %188, i8* align 1 %41, i64 0, i1 false), !dbg !3959
call void @llvm.dbg.value(metadata i32 0, metadata !3893, metadata !DIExpression()), !dbg !3969
%189 = bitcast { i32, i8 }* %7 to i8*, !dbg !3960
call void @llvm.memset.p0i8.i64(i8* %189, i8 0, i64 8, i1 false), !dbg !3960
%190 = load i64, i64* %34, align 8, !dbg !3960
%191 = icmp eq i64 %190, 4755801206503243880, !dbg !3960
br i1 %191, label %any_cast.ok, label %any_cast.end, !dbg !3960
any_cast.ok: ; preds = %typeswitch.body30
%192 = getelementptr inbounds { i32, i8 }, { i32, i8 }* %7, i32 0, i32 0, !dbg !3960
%193 = getelementptr inbounds { i32, i8 }, { i32, i8 }* %7, i32 0, i32 1, !dbg !3960
%194 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3960
%195 = load i8*, i8** %194, align 8, !dbg !3960
%196 = bitcast i8* %195 to i32*, !dbg !3960
%197 = load i32, i32* %196, align 4, !dbg !3960
store i32 %197, i32* %192, align 4, !dbg !3960
store i8 1, i8* %193, align 1, !dbg !3960
br label %any_cast.end, !dbg !3960
any_cast.end: ; preds = %any_cast.ok, %typeswitch.body30
%198 = getelementptr inbounds { i32, i8 }, { i32, i8 }* %7, i32 0, i32 1, !dbg !3960
%199 = load i8, i8* %198, align 1, !dbg !3960
%200 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3960
%201 = load i8*, i8** %200, align 8, !dbg !3960
%202 = icmp ne i8 %199, 0, !dbg !3960
%203 = bitcast [2 x i64]* %8 to %..string*, !dbg !3960
store %..string { i8* getelementptr inbounds ([54 x i8], [54 x i8]* @"csbs$a2", i64 0, i64 0), i64 53 }, %..string* %203, align 8, !dbg !3960
%204 = load [2 x i64], [2 x i64]* %8, align 8, !dbg !3960
call void @runtime.type_assertion_check2(i1 %202, [2 x i64] %204, i32 874, i32 8, i64 %190, i64 4755801206503243880, i8* %201), !dbg !3960
%205 = getelementptr inbounds { i32, i8 }, { i32, i8 }* %7, i32 0, i32 0, !dbg !3960
%206 = load i32, i32* %205, align 4, !dbg !3960
call void @llvm.dbg.value(metadata i32 %206, metadata !3893, metadata !DIExpression()), !dbg !3969
%207 = sext i32 %206 to i64, !dbg !3995
call void @llvm.dbg.value(metadata i64 %207, metadata !3821, metadata !DIExpression()), !dbg !3966
call void @llvm.dbg.value(metadata i8 1, metadata !3822, metadata !DIExpression()), !dbg !3966
br label %typeswitch.done67, !dbg !3959
typeswitch.body31: ; preds = %if.done
%208 = bitcast %runtime.Type_Info_Float* %9 to i8*, !dbg !3959
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %208, i8* align 1 %41, i64 1, i1 false), !dbg !3959
call void @llvm.dbg.value(metadata i8 1, metadata !3822, metadata !DIExpression()), !dbg !3966
%209 = load i64, i64* %34, align 8, !dbg !3996
switch i64 %209, label %typeswitch.done67 [
i64 216172782113783914, label %typeswitch.body32
i64 216172782113783915, label %typeswitch.body33
i64 216172782113783917, label %typeswitch.body34
i64 216172782113783918, label %typeswitch.body35
i64 216172782113783920, label %typeswitch.body36
i64 216172782113783921, label %typeswitch.body37
], !dbg !3996
typeswitch.body32: ; preds = %typeswitch.body31
%210 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3996
%211 = load i8*, i8** %210, align 8, !dbg !3996
%212 = bitcast i8* %211 to float*, !dbg !3996
%213 = load float, float* %212, align 4, !dbg !3996
call void @llvm.dbg.value(metadata float %213, metadata !3895, metadata !DIExpression()), !dbg !3969
%214 = fptosi float %213 to i64, !dbg !3997
call void @llvm.dbg.value(metadata i64 %214, metadata !3821, metadata !DIExpression()), !dbg !3966
br label %typeswitch.done67, !dbg !3996
typeswitch.body33: ; preds = %typeswitch.body31
%215 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3996
%216 = load i8*, i8** %215, align 8, !dbg !3996
%217 = bitcast i8* %216 to double*, !dbg !3996
%218 = load double, double* %217, align 8, !dbg !3996
call void @llvm.dbg.value(metadata double %218, metadata !3898, metadata !DIExpression()), !dbg !3969
%219 = fptosi double %218 to i64, !dbg !3998
call void @llvm.dbg.value(metadata i64 %219, metadata !3821, metadata !DIExpression()), !dbg !3966
br label %typeswitch.done67, !dbg !3996
typeswitch.body34: ; preds = %typeswitch.body31
%220 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3996
%221 = load i8*, i8** %220, align 8, !dbg !3996
%222 = bitcast i8* %221 to float*, !dbg !3996
%223 = load float, float* %222, align 4, !dbg !3996
call void @llvm.dbg.value(metadata float %223, metadata !3899, metadata !DIExpression()), !dbg !3969
%224 = fptosi float %223 to i64, !dbg !3999
call void @llvm.dbg.value(metadata i64 %224, metadata !3821, metadata !DIExpression()), !dbg !3966
br label %typeswitch.done67, !dbg !3996
typeswitch.body35: ; preds = %typeswitch.body31
%225 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3996
%226 = load i8*, i8** %225, align 8, !dbg !3996
%227 = bitcast i8* %226 to double*, !dbg !3996
%228 = load double, double* %227, align 8, !dbg !3996
call void @llvm.dbg.value(metadata double %228, metadata !3902, metadata !DIExpression()), !dbg !3969
%229 = fptosi double %228 to i64, !dbg !4000
call void @llvm.dbg.value(metadata i64 %229, metadata !3821, metadata !DIExpression()), !dbg !3966
br label %typeswitch.done67, !dbg !3996
typeswitch.body36: ; preds = %typeswitch.body31
%230 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3996
%231 = load i8*, i8** %230, align 8, !dbg !3996
%232 = bitcast i8* %231 to float*, !dbg !3996
%233 = load float, float* %232, align 4, !dbg !3996
call void @llvm.dbg.value(metadata float %233, metadata !3905, metadata !DIExpression()), !dbg !3969
%234 = bitcast float %233 to i32, !dbg !4001
%235 = call i32 @llvm.bswap.i32(i32 %234), !dbg !4001
%236 = bitcast i32 %235 to float, !dbg !4001
%237 = fptosi float %236 to i64, !dbg !4001
call void @llvm.dbg.value(metadata i64 %237, metadata !3821, metadata !DIExpression()), !dbg !3966
br label %typeswitch.done67, !dbg !3996
typeswitch.body37: ; preds = %typeswitch.body31
%238 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3996
%239 = load i8*, i8** %238, align 8, !dbg !3996
%240 = bitcast i8* %239 to double*, !dbg !3996
%241 = load double, double* %240, align 8, !dbg !3996
call void @llvm.dbg.value(metadata double %241, metadata !3908, metadata !DIExpression()), !dbg !3969
%242 = bitcast double %241 to i64, !dbg !4002
%243 = call i64 @llvm.bswap.i64(i64 %242), !dbg !4002
%244 = bitcast i64 %243 to double, !dbg !4002
%245 = fptosi double %244 to i64, !dbg !4002
call void @llvm.dbg.value(metadata i64 %245, metadata !3821, metadata !DIExpression()), !dbg !3966
br label %typeswitch.done67, !dbg !3996
typeswitch.body40: ; preds = %if.done
%246 = bitcast %runtime.Type_Info_Boolean* %10 to i8*, !dbg !3959
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %246, i8* align 1 %41, i64 0, i1 false), !dbg !3959
call void @llvm.dbg.value(metadata i8 1, metadata !3822, metadata !DIExpression()), !dbg !3966
%247 = load i64, i64* %34, align 8, !dbg !4003
switch i64 %247, label %typeswitch.done67 [
i64 504403158265495575, label %typeswitch.body41
i64 504403158265495652, label %typeswitch.body42
i64 504403158265495653, label %typeswitch.body43
i64 504403158265495654, label %typeswitch.body44
i64 504403158265495655, label %typeswitch.body45
], !dbg !4003
typeswitch.body41: ; preds = %typeswitch.body40
%248 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !4003
%249 = load i8*, i8** %248, align 8, !dbg !4003
%250 = load i8, i8* %249, align 1, !dbg !4003
call void @llvm.dbg.value(metadata i8 %250, metadata !3913, metadata !DIExpression()), !dbg !3969
%251 = icmp ne i8 %250, 0, !dbg !4004
%252 = zext i1 %251 to i64, !dbg !4004
call void @llvm.dbg.value(metadata i64 %252, metadata !3821, metadata !DIExpression()), !dbg !3966
br label %typeswitch.done67, !dbg !4003
typeswitch.body42: ; preds = %typeswitch.body40
%253 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !4003
%254 = load i8*, i8** %253, align 8, !dbg !4003
%255 = load i8, i8* %254, align 1, !dbg !4003
call void @llvm.dbg.value(metadata i8 %255, metadata !3914, metadata !DIExpression()), !dbg !3969
%256 = icmp ne i8 %255, 0, !dbg !4005
%257 = zext i1 %256 to i64, !dbg !4005
call void @llvm.dbg.value(metadata i64 %257, metadata !3821, metadata !DIExpression()), !dbg !3966
br label %typeswitch.done67, !dbg !4003
typeswitch.body43: ; preds = %typeswitch.body40
%258 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !4003
%259 = load i8*, i8** %258, align 8, !dbg !4003
%260 = bitcast i8* %259 to i16*, !dbg !4003
%261 = load i16, i16* %260, align 2, !dbg !4003
call void @llvm.dbg.value(metadata i16 %261, metadata !3917, metadata !DIExpression()), !dbg !3969
%262 = icmp ne i16 %261, 0, !dbg !4006
%263 = zext i1 %262 to i64, !dbg !4006
call void @llvm.dbg.value(metadata i64 %263, metadata !3821, metadata !DIExpression()), !dbg !3966
br label %typeswitch.done67, !dbg !4003
typeswitch.body44: ; preds = %typeswitch.body40
%264 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !4003
%265 = load i8*, i8** %264, align 8, !dbg !4003
%266 = bitcast i8* %265 to i32*, !dbg !4003
%267 = load i32, i32* %266, align 4, !dbg !4003
call void @llvm.dbg.value(metadata i32 %267, metadata !3920, metadata !DIExpression()), !dbg !3969
%268 = icmp ne i32 %267, 0, !dbg !4007
%269 = zext i1 %268 to i64, !dbg !4007
call void @llvm.dbg.value(metadata i64 %269, metadata !3821, metadata !DIExpression()), !dbg !3966
br label %typeswitch.done67, !dbg !4003
typeswitch.body45: ; preds = %typeswitch.body40
%270 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !4003
%271 = load i8*, i8** %270, align 8, !dbg !4003
%272 = bitcast i8* %271 to i64*, !dbg !4003
%273 = load i64, i64* %272, align 8, !dbg !4003
call void @llvm.dbg.value(metadata i64 %273, metadata !3923, metadata !DIExpression()), !dbg !3969
%274 = icmp ne i64 %273, 0, !dbg !4008
%275 = zext i1 %274 to i64, !dbg !4008
call void @llvm.dbg.value(metadata i64 %275, metadata !3821, metadata !DIExpression()), !dbg !3966
br label %typeswitch.done67, !dbg !4003
typeswitch.body48: ; preds = %if.done
%276 = bitcast %runtime.Type_Info_Complex* %11 to i8*, !dbg !3959
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %276, i8* align 1 %41, i64 0, i1 false), !dbg !3959
%277 = load i64, i64* %34, align 8, !dbg !3962
switch i64 %277, label %typeswitch.done67 [
i64 288230376151711858, label %typeswitch.body49
i64 288230376151711859, label %typeswitch.body52
], !dbg !3962
typeswitch.body49: ; preds = %typeswitch.body48
%278 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3962
%279 = load i8*, i8** %278, align 8, !dbg !3962
%280 = bitcast %..complex64* %12 to i8*, !dbg !3962
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %280, i8* align 4 %279, i64 8, i1 false), !dbg !3962
%281 = getelementptr inbounds %..complex64, %..complex64* %12, i32 0, i32 1, !dbg !4009
%282 = load float, float* %281, align 4, !dbg !4009
%283 = fcmp oeq float %282, 0.000000e+00, !dbg !4009
%284 = getelementptr inbounds %..complex64, %..complex64* %12, i32 0, i32 0, !dbg !4009
%285 = load float, float* %284, align 4, !dbg !4009
%286 = fptosi float %285 to i64, !dbg !4009
%.371 = select i1 %283, i8 1, i8 0, !dbg !4009
%.3 = select i1 %283, i64 %286, i64 0, !dbg !4009
br label %typeswitch.done67, !dbg !4009
typeswitch.body52: ; preds = %typeswitch.body48
%287 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3962
%288 = load i8*, i8** %287, align 8, !dbg !3962
%289 = bitcast %..complex128* %13 to i8*, !dbg !3962
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %289, i8* align 8 %288, i64 16, i1 false), !dbg !3962
%290 = getelementptr inbounds %..complex128, %..complex128* %13, i32 0, i32 1, !dbg !4010
%291 = load double, double* %290, align 8, !dbg !4010
%292 = fcmp oeq double %291, 0.000000e+00, !dbg !4010
%293 = getelementptr inbounds %..complex128, %..complex128* %13, i32 0, i32 0, !dbg !4010
%294 = load double, double* %293, align 8, !dbg !4010
%295 = fptosi double %294 to i64, !dbg !4010
%.472 = select i1 %292, i8 1, i8 0, !dbg !4010
%.4 = select i1 %292, i64 %295, i64 0, !dbg !4010
br label %typeswitch.done67, !dbg !4010
typeswitch.body56: ; preds = %if.done
%296 = bitcast %runtime.Type_Info_Quaternion* %14 to i8*, !dbg !3959
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %296, i8* align 1 %41, i64 0, i1 false), !dbg !3959
%297 = load i64, i64* %34, align 8, !dbg !3964
switch i64 %297, label %typeswitch.done67 [
i64 116, label %typeswitch.body57
i64 117, label %typeswitch.body61
], !dbg !3964
typeswitch.body57: ; preds = %typeswitch.body56
%298 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3964
%299 = load i8*, i8** %298, align 8, !dbg !3964
%300 = bitcast %..quaternion128* %15 to i8*, !dbg !3964
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %300, i8* align 4 %299, i64 16, i1 false), !dbg !3964
%301 = getelementptr inbounds %..quaternion128, %..quaternion128* %15, i32 0, i32 0, !dbg !4011
%302 = load float, float* %301, align 4, !dbg !4011
%303 = fcmp oeq float %302, 0.000000e+00, !dbg !4011
br i1 %303, label %cmp.and, label %typeswitch.done67, !dbg !4011
cmp.and: ; preds = %typeswitch.body57
%304 = getelementptr inbounds %..quaternion128, %..quaternion128* %15, i32 0, i32 1, !dbg !4011
%305 = load float, float* %304, align 4, !dbg !4011
%306 = fcmp oeq float %305, 0.000000e+00, !dbg !4011
br i1 %306, label %cmp.and58, label %typeswitch.done67, !dbg !4011
cmp.and58: ; preds = %cmp.and
%307 = getelementptr inbounds %..quaternion128, %..quaternion128* %15, i32 0, i32 2, !dbg !4011
%308 = load float, float* %307, align 4, !dbg !4011
%309 = fcmp oeq float %308, 0.000000e+00, !dbg !4011
br i1 %309, label %if.then59, label %typeswitch.done67, !dbg !4011
if.then59: ; preds = %cmp.and58
%310 = getelementptr inbounds %..quaternion128, %..quaternion128* %15, i32 0, i32 3, !dbg !4012
%311 = load float, float* %310, align 4, !dbg !4012
%312 = fptosi float %311 to i64, !dbg !4012
call void @llvm.dbg.value(metadata i64 %312, metadata !3821, metadata !DIExpression()), !dbg !3966
call void @llvm.dbg.value(metadata i8 1, metadata !3822, metadata !DIExpression()), !dbg !3966
br label %typeswitch.done67, !dbg !4011
typeswitch.body61: ; preds = %typeswitch.body56
%313 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3964
%314 = load i8*, i8** %313, align 8, !dbg !3964
%315 = bitcast %..quaternion256* %16 to i8*, !dbg !3964
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %315, i8* align 8 %314, i64 32, i1 false), !dbg !3964
%316 = getelementptr inbounds %..quaternion256, %..quaternion256* %16, i32 0, i32 0, !dbg !4015
%317 = load double, double* %316, align 8, !dbg !4015
%318 = fcmp oeq double %317, 0.000000e+00, !dbg !4015
br i1 %318, label %cmp.and62, label %typeswitch.done67, !dbg !4015
cmp.and62: ; preds = %typeswitch.body61
%319 = getelementptr inbounds %..quaternion256, %..quaternion256* %16, i32 0, i32 1, !dbg !4015
%320 = load double, double* %319, align 8, !dbg !4015
%321 = fcmp oeq double %320, 0.000000e+00, !dbg !4015
br i1 %321, label %cmp.and63, label %typeswitch.done67, !dbg !4015
cmp.and63: ; preds = %cmp.and62
%322 = getelementptr inbounds %..quaternion256, %..quaternion256* %16, i32 0, i32 2, !dbg !4015
%323 = load double, double* %322, align 8, !dbg !4015
%324 = fcmp oeq double %323, 0.000000e+00, !dbg !4015
br i1 %324, label %if.then64, label %typeswitch.done67, !dbg !4015
if.then64: ; preds = %cmp.and63
%325 = getelementptr inbounds %..quaternion256, %..quaternion256* %16, i32 0, i32 3, !dbg !4016
%326 = load double, double* %325, align 8, !dbg !4016
%327 = fptosi double %326 to i64, !dbg !4016
call void @llvm.dbg.value(metadata i64 %327, metadata !3821, metadata !DIExpression()), !dbg !3966
call void @llvm.dbg.value(metadata i8 1, metadata !3822, metadata !DIExpression()), !dbg !3966
br label %typeswitch.done67, !dbg !4015
typeswitch.done67: ; preds = %typeswitch.body56, %if.then59, %cmp.and58, %cmp.and, %typeswitch.body57, %if.then64, %cmp.and63, %cmp.and62, %typeswitch.body61, %typeswitch.body48, %typeswitch.body49, %typeswitch.body52, %typeswitch.body41, %typeswitch.body42, %typeswitch.body43, %typeswitch.body44, %typeswitch.body45, %typeswitch.body40, %typeswitch.body32, %typeswitch.body33, %typeswitch.body34, %typeswitch.body35, %typeswitch.body36, %typeswitch.body37, %typeswitch.body31, %typeswitch.body1, %typeswitch.body2, %typeswitch.body3, %typeswitch.body4, %typeswitch.body5, %typeswitch.body6, %typeswitch.body7, %typeswitch.body8, %typeswitch.body9, %typeswitch.body10, %typeswitch.body11, %typeswitch.body12, %typeswitch.body13, %typeswitch.body14, %typeswitch.body15, %typeswitch.body16, %typeswitch.body17, %typeswitch.body18, %typeswitch.body19, %typeswitch.body20, %typeswitch.body21, %typeswitch.body22, %typeswitch.body23, %typeswitch.body24, %typeswitch.body25, %typeswitch.body26, %typeswitch.body27, %typeswitch.body28, %typeswitch.body29, %typeswitch.body, %any_cast.end, %if.done
%.977 = phi i8 [ 0, %if.done ], [ 1, %any_cast.end ], [ 1, %typeswitch.body29 ], [ 1, %typeswitch.body28 ], [ 1, %typeswitch.body27 ], [ 1, %typeswitch.body26 ], [ 1, %typeswitch.body25 ], [ 1, %typeswitch.body24 ], [ 1, %typeswitch.body23 ], [ 1, %typeswitch.body22 ], [ 1, %typeswitch.body21 ], [ 1, %typeswitch.body20 ], [ 1, %typeswitch.body19 ], [ 1, %typeswitch.body18 ], [ 1, %typeswitch.body17 ], [ 1, %typeswitch.body16 ], [ 1, %typeswitch.body15 ], [ 1, %typeswitch.body14 ], [ 1, %typeswitch.body13 ], [ 1, %typeswitch.body12 ], [ 1, %typeswitch.body11 ], [ 1, %typeswitch.body10 ], [ 1, %typeswitch.body9 ], [ 1, %typeswitch.body8 ], [ 1, %typeswitch.body7 ], [ 1, %typeswitch.body6 ], [ 1, %typeswitch.body5 ], [ 1, %typeswitch.body4 ], [ 1, %typeswitch.body3 ], [ 1, %typeswitch.body2 ], [ 1, %typeswitch.body1 ], [ 0, %typeswitch.body ], [ 1, %typeswitch.body37 ], [ 1, %typeswitch.body36 ], [ 1, %typeswitch.body35 ], [ 1, %typeswitch.body34 ], [ 1, %typeswitch.body33 ], [ 1, %typeswitch.body32 ], [ 0, %typeswitch.body31 ], [ 1, %typeswitch.body45 ], [ 1, %typeswitch.body44 ], [ 1, %typeswitch.body43 ], [ 1, %typeswitch.body42 ], [ 1, %typeswitch.body41 ], [ 0, %typeswitch.body40 ], [ 0, %typeswitch.body48 ], [ %.371, %typeswitch.body49 ], [ %.472, %typeswitch.body52 ], [ 0, %typeswitch.body56 ], [ 1, %if.then59 ], [ 0, %cmp.and58 ], [ 0, %cmp.and ], [ 0, %typeswitch.body57 ], [ 1, %if.then64 ], [ 0, %cmp.and63 ], [ 0, %cmp.and62 ], [ 0, %typeswitch.body61 ]
%.9 = phi i64 [ 0, %if.done ], [ %207, %any_cast.end ], [ %187, %typeswitch.body29 ], [ %181, %typeswitch.body28 ], [ %176, %typeswitch.body27 ], [ %170, %typeswitch.body26 ], [ %164, %typeswitch.body25 ], [ %158, %typeswitch.body24 ], [ %153, %typeswitch.body23 ], [ %147, %typeswitch.body22 ], [ %141, %typeswitch.body21 ], [ %136, %typeswitch.body20 ], [ %132, %typeswitch.body19 ], [ %127, %typeswitch.body18 ], [ %122, %typeswitch.body17 ], [ %117, %typeswitch.body16 ], [ %113, %typeswitch.body15 ], [ %108, %typeswitch.body14 ], [ %103, %typeswitch.body13 ], [ %99, %typeswitch.body12 ], [ %95, %typeswitch.body11 ], [ %90, %typeswitch.body10 ], [ %86, %typeswitch.body9 ], [ %81, %typeswitch.body8 ], [ %76, %typeswitch.body7 ], [ %72, %typeswitch.body6 ], [ %68, %typeswitch.body5 ], [ %63, %typeswitch.body4 ], [ %59, %typeswitch.body3 ], [ %54, %typeswitch.body2 ], [ %49, %typeswitch.body1 ], [ 0, %typeswitch.body ], [ %245, %typeswitch.body37 ], [ %237, %typeswitch.body36 ], [ %229, %typeswitch.body35 ], [ %224, %typeswitch.body34 ], [ %219, %typeswitch.body33 ], [ %214, %typeswitch.body32 ], [ 0, %typeswitch.body31 ], [ %275, %typeswitch.body45 ], [ %269, %typeswitch.body44 ], [ %263, %typeswitch.body43 ], [ %257, %typeswitch.body42 ], [ %252, %typeswitch.body41 ], [ 0, %typeswitch.body40 ], [ 0, %typeswitch.body48 ], [ %.3, %typeswitch.body49 ], [ %.4, %typeswitch.body52 ], [ 0, %typeswitch.body56 ], [ %312, %if.then59 ], [ 0, %cmp.and58 ], [ 0, %cmp.and ], [ 0, %typeswitch.body57 ], [ %327, %if.then64 ], [ 0, %cmp.and63 ], [ 0, %cmp.and62 ], [ 0, %typeswitch.body61 ]
call void @llvm.dbg.value(metadata i64 %.9, metadata !3821, metadata !DIExpression()), !dbg !3966
call void @llvm.dbg.value(metadata i8 %.977, metadata !3822, metadata !DIExpression()), !dbg !3966
call void @llvm.dbg.value(metadata i64 %.9, metadata !3821, metadata !DIExpression()), !dbg !3966
call void @llvm.dbg.value(metadata i8 %.977, metadata !3822, metadata !DIExpression()), !dbg !3966
%328 = getelementptr inbounds { i64, i8 }, { i64, i8 }* %17, i32 0, i32 0, !dbg !3965
%329 = getelementptr inbounds { i64, i8 }, { i64, i8 }* %17, i32 0, i32 1, !dbg !3965
store i64 %.9, i64* %328, align 8, !dbg !3965
store i8 %.977, i8* %329, align 1, !dbg !3965
%330 = bitcast { i64, i8 }* %17 to [2 x i64]*, !dbg !3965
%331 = load [2 x i64], [2 x i64]* %330, align 8, !dbg !3965
ret [2 x i64] %331, !dbg !3965
}
; Function Attrs: nounwind
define internal i8* @reflect.relative_pointer_to_absolute_raw(i8* %0, i64 %1, i8* noalias nocapture nonnull %__.context_ptr) #0 !dbg !4019 {
decls:
call void @llvm.dbg.declare(metadata %..any* %2, metadata !4026, metadata !DIExpression()), !dbg !4029
%2 = alloca %..any, align 8, !dbg !4029
%3 = alloca %..any, align 8, !dbg !4029
call void @llvm.dbg.value(metadata i8* %0, metadata !4023, metadata !DIExpression()), !dbg !4030
call void @llvm.dbg.value(metadata i64 %1, metadata !4024, metadata !DIExpression()), !dbg !4030
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !4025, metadata !DIExpression()), !dbg !4031
%4 = bitcast %..any* %2 to i8*, !dbg !4029
call void @llvm.memset.p0i8.i64(i8* %4, i8 0, i64 16, i1 false), !dbg !4029
%5 = bitcast %..any* %3 to i8*, !dbg !4029
call void @llvm.memset.p0i8.i64(i8* align 8 %5, i8 0, i64 16, i1 false), !dbg !4029
%6 = getelementptr inbounds %..any, %..any* %3, i32 0, i32 0, !dbg !4029
store i8* %0, i8** %6, align 8, !dbg !4029
%7 = getelementptr inbounds %..any, %..any* %3, i32 0, i32 1, !dbg !4029
store i64 %1, i64* %7, align 8, !dbg !4029
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %4, i8* align 8 %5, i64 16, i1 false), !dbg !4029
call void @llvm.dbg.value(metadata i8* null, metadata !4028, metadata !DIExpression()), !dbg !4032
%8 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 1, !dbg !4033
%9 = load i64, i64* %8, align 8, !dbg !4033
switch i64 %9, label %typeswitch.done [
i64 72057594037927945, label %typeswitch.body
i64 72057594037928033, label %typeswitch.body1
i64 72057594037927953, label %typeswitch.body2
i64 72057594037927940, label %typeswitch.body3
i64 4683743612465315936, label %typeswitch.body4
i64 4683743612465315938, label %typeswitch.body5
i64 4683743612465315860, label %typeswitch.body6
i64 4683743612465315889, label %typeswitch.body7
i64 72057594037928056, label %typeswitch.body8
i64 72057594037928058, label %typeswitch.body9
i64 72057594037928060, label %typeswitch.body10
i64 4683743612465315959, label %typeswitch.body11
i64 4683743612465315961, label %typeswitch.body12
i64 4683743612465315963, label %typeswitch.body13
i64 72057594037928062, label %typeswitch.body14
i64 72057594037928064, label %typeswitch.body15
i64 72057594037928066, label %typeswitch.body16
i64 4683743612465315965, label %typeswitch.body17
i64 4683743612465315967, label %typeswitch.body18
i64 4683743612465315969, label %typeswitch.body19
], !dbg !4033
typeswitch.body: ; preds = %decls
%10 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 0, !dbg !4033
%11 = load i8*, i8** %10, align 8, !dbg !4033
%12 = call i8* @reflect.relative_pointer_to_absolute_raw._handle-0(i8* %11, i8* %__.context_ptr), !dbg !4034
call void @llvm.dbg.value(metadata i8* %12, metadata !4028, metadata !DIExpression()), !dbg !4032
br label %typeswitch.done, !dbg !4033
typeswitch.body1: ; preds = %decls
%13 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 0, !dbg !4033
%14 = load i8*, i8** %13, align 8, !dbg !4033
%15 = bitcast i8* %14 to i16*, !dbg !4033
%16 = call i8* @reflect.relative_pointer_to_absolute_raw._handle-1(i16* %15, i8* %__.context_ptr), !dbg !4035
call void @llvm.dbg.value(metadata i8* %16, metadata !4028, metadata !DIExpression()), !dbg !4032
br label %typeswitch.done, !dbg !4033
typeswitch.body2: ; preds = %decls
%17 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 0, !dbg !4033
%18 = load i8*, i8** %17, align 8, !dbg !4033
%19 = bitcast i8* %18 to i32*, !dbg !4033
%20 = call i8* @reflect.relative_pointer_to_absolute_raw._handle-2(i32* %19, i8* %__.context_ptr), !dbg !4036
call void @llvm.dbg.value(metadata i8* %20, metadata !4028, metadata !DIExpression()), !dbg !4032
br label %typeswitch.done, !dbg !4033
typeswitch.body3: ; preds = %decls
%21 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 0, !dbg !4033
%22 = load i8*, i8** %21, align 8, !dbg !4033
%23 = bitcast i8* %22 to i64*, !dbg !4033
%24 = call i8* @reflect.relative_pointer_to_absolute_raw._handle-3(i64* %23, i8* %__.context_ptr), !dbg !4037
call void @llvm.dbg.value(metadata i8* %24, metadata !4028, metadata !DIExpression()), !dbg !4032
br label %typeswitch.done, !dbg !4033
typeswitch.body4: ; preds = %decls
%25 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 0, !dbg !4033
%26 = load i8*, i8** %25, align 8, !dbg !4033
%27 = call i8* @reflect.relative_pointer_to_absolute_raw._handle-4(i8* %26, i8* %__.context_ptr), !dbg !4038
call void @llvm.dbg.value(metadata i8* %27, metadata !4028, metadata !DIExpression()), !dbg !4032
br label %typeswitch.done, !dbg !4033
typeswitch.body5: ; preds = %decls
%28 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 0, !dbg !4033
%29 = load i8*, i8** %28, align 8, !dbg !4033
%30 = bitcast i8* %29 to i16*, !dbg !4033
%31 = call i8* @reflect.relative_pointer_to_absolute_raw._handle-5(i16* %30, i8* %__.context_ptr), !dbg !4039
call void @llvm.dbg.value(metadata i8* %31, metadata !4028, metadata !DIExpression()), !dbg !4032
br label %typeswitch.done, !dbg !4033
typeswitch.body6: ; preds = %decls
%32 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 0, !dbg !4033
%33 = load i8*, i8** %32, align 8, !dbg !4033
%34 = bitcast i8* %33 to i32*, !dbg !4033
%35 = call i8* @reflect.relative_pointer_to_absolute_raw._handle-6(i32* %34, i8* %__.context_ptr), !dbg !4040
call void @llvm.dbg.value(metadata i8* %35, metadata !4028, metadata !DIExpression()), !dbg !4032
br label %typeswitch.done, !dbg !4033
typeswitch.body7: ; preds = %decls
%36 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 0, !dbg !4033
%37 = load i8*, i8** %36, align 8, !dbg !4033
%38 = bitcast i8* %37 to i64*, !dbg !4033
%39 = call i8* @reflect.relative_pointer_to_absolute_raw._handle-7(i64* %38, i8* %__.context_ptr), !dbg !4041
call void @llvm.dbg.value(metadata i8* %39, metadata !4028, metadata !DIExpression()), !dbg !4032
br label %typeswitch.done, !dbg !4033
typeswitch.body8: ; preds = %decls
%40 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 0, !dbg !4033
%41 = load i8*, i8** %40, align 8, !dbg !4033
%42 = bitcast i8* %41 to i16*, !dbg !4033
%43 = call i8* @reflect.relative_pointer_to_absolute_raw._handle-8(i16* %42, i8* %__.context_ptr), !dbg !4042
call void @llvm.dbg.value(metadata i8* %43, metadata !4028, metadata !DIExpression()), !dbg !4032
br label %typeswitch.done, !dbg !4033
typeswitch.body9: ; preds = %decls
%44 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 0, !dbg !4033
%45 = load i8*, i8** %44, align 8, !dbg !4033
%46 = bitcast i8* %45 to i32*, !dbg !4033
%47 = call i8* @reflect.relative_pointer_to_absolute_raw._handle-9(i32* %46, i8* %__.context_ptr), !dbg !4043
call void @llvm.dbg.value(metadata i8* %47, metadata !4028, metadata !DIExpression()), !dbg !4032
br label %typeswitch.done, !dbg !4033
typeswitch.body10: ; preds = %decls
%48 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 0, !dbg !4033
%49 = load i8*, i8** %48, align 8, !dbg !4033
%50 = bitcast i8* %49 to i64*, !dbg !4033
%51 = call i8* @reflect.relative_pointer_to_absolute_raw._handle-10(i64* %50, i8* %__.context_ptr), !dbg !4044
call void @llvm.dbg.value(metadata i8* %51, metadata !4028, metadata !DIExpression()), !dbg !4032
br label %typeswitch.done, !dbg !4033
typeswitch.body11: ; preds = %decls
%52 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 0, !dbg !4033
%53 = load i8*, i8** %52, align 8, !dbg !4033
%54 = bitcast i8* %53 to i16*, !dbg !4033
%55 = call i8* @reflect.relative_pointer_to_absolute_raw._handle-11(i16* %54, i8* %__.context_ptr), !dbg !4045
call void @llvm.dbg.value(metadata i8* %55, metadata !4028, metadata !DIExpression()), !dbg !4032
br label %typeswitch.done, !dbg !4033
typeswitch.body12: ; preds = %decls
%56 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 0, !dbg !4033
%57 = load i8*, i8** %56, align 8, !dbg !4033
%58 = bitcast i8* %57 to i32*, !dbg !4033
%59 = call i8* @reflect.relative_pointer_to_absolute_raw._handle-12(i32* %58, i8* %__.context_ptr), !dbg !4046
call void @llvm.dbg.value(metadata i8* %59, metadata !4028, metadata !DIExpression()), !dbg !4032
br label %typeswitch.done, !dbg !4033
typeswitch.body13: ; preds = %decls
%60 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 0, !dbg !4033
%61 = load i8*, i8** %60, align 8, !dbg !4033
%62 = bitcast i8* %61 to i64*, !dbg !4033
%63 = call i8* @reflect.relative_pointer_to_absolute_raw._handle-13(i64* %62, i8* %__.context_ptr), !dbg !4047
call void @llvm.dbg.value(metadata i8* %63, metadata !4028, metadata !DIExpression()), !dbg !4032
br label %typeswitch.done, !dbg !4033
typeswitch.body14: ; preds = %decls
%64 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 0, !dbg !4033
%65 = load i8*, i8** %64, align 8, !dbg !4033
%66 = bitcast i8* %65 to i16*, !dbg !4033
%67 = call i8* @reflect.relative_pointer_to_absolute_raw._handle-14(i16* %66, i8* %__.context_ptr), !dbg !4048
call void @llvm.dbg.value(metadata i8* %67, metadata !4028, metadata !DIExpression()), !dbg !4032
br label %typeswitch.done, !dbg !4033
typeswitch.body15: ; preds = %decls
%68 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 0, !dbg !4033
%69 = load i8*, i8** %68, align 8, !dbg !4033
%70 = bitcast i8* %69 to i32*, !dbg !4033
%71 = call i8* @reflect.relative_pointer_to_absolute_raw._handle-15(i32* %70, i8* %__.context_ptr), !dbg !4049
call void @llvm.dbg.value(metadata i8* %71, metadata !4028, metadata !DIExpression()), !dbg !4032
br label %typeswitch.done, !dbg !4033
typeswitch.body16: ; preds = %decls
%72 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 0, !dbg !4033
%73 = load i8*, i8** %72, align 8, !dbg !4033
%74 = bitcast i8* %73 to i64*, !dbg !4033
%75 = call i8* @reflect.relative_pointer_to_absolute_raw._handle-16(i64* %74, i8* %__.context_ptr), !dbg !4050
call void @llvm.dbg.value(metadata i8* %75, metadata !4028, metadata !DIExpression()), !dbg !4032
br label %typeswitch.done, !dbg !4033
typeswitch.body17: ; preds = %decls
%76 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 0, !dbg !4033
%77 = load i8*, i8** %76, align 8, !dbg !4033
%78 = bitcast i8* %77 to i16*, !dbg !4033
%79 = call i8* @reflect.relative_pointer_to_absolute_raw._handle-17(i16* %78, i8* %__.context_ptr), !dbg !4051
call void @llvm.dbg.value(metadata i8* %79, metadata !4028, metadata !DIExpression()), !dbg !4032
br label %typeswitch.done, !dbg !4033
typeswitch.body18: ; preds = %decls
%80 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 0, !dbg !4033
%81 = load i8*, i8** %80, align 8, !dbg !4033
%82 = bitcast i8* %81 to i32*, !dbg !4033
%83 = call i8* @reflect.relative_pointer_to_absolute_raw._handle-18(i32* %82, i8* %__.context_ptr), !dbg !4052
call void @llvm.dbg.value(metadata i8* %83, metadata !4028, metadata !DIExpression()), !dbg !4032
br label %typeswitch.done, !dbg !4033
typeswitch.body19: ; preds = %decls
%84 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 0, !dbg !4033
%85 = load i8*, i8** %84, align 8, !dbg !4033
%86 = bitcast i8* %85 to i64*, !dbg !4033
%87 = call i8* @reflect.relative_pointer_to_absolute_raw._handle-19(i64* %86, i8* %__.context_ptr), !dbg !4053
call void @llvm.dbg.value(metadata i8* %87, metadata !4028, metadata !DIExpression()), !dbg !4032
br label %typeswitch.done, !dbg !4033
typeswitch.done: ; preds = %typeswitch.body19, %typeswitch.body18, %typeswitch.body17, %typeswitch.body16, %typeswitch.body15, %typeswitch.body14, %typeswitch.body13, %typeswitch.body12, %typeswitch.body11, %typeswitch.body10, %typeswitch.body9, %typeswitch.body8, %typeswitch.body7, %typeswitch.body6, %typeswitch.body5, %typeswitch.body4, %typeswitch.body3, %typeswitch.body2, %typeswitch.body1, %typeswitch.body, %decls
%.0 = phi i8* [ null, %decls ], [ %87, %typeswitch.body19 ], [ %83, %typeswitch.body18 ], [ %79, %typeswitch.body17 ], [ %75, %typeswitch.body16 ], [ %71, %typeswitch.body15 ], [ %67, %typeswitch.body14 ], [ %63, %typeswitch.body13 ], [ %59, %typeswitch.body12 ], [ %55, %typeswitch.body11 ], [ %51, %typeswitch.body10 ], [ %47, %typeswitch.body9 ], [ %43, %typeswitch.body8 ], [ %39, %typeswitch.body7 ], [ %35, %typeswitch.body6 ], [ %31, %typeswitch.body5 ], [ %27, %typeswitch.body4 ], [ %24, %typeswitch.body3 ], [ %20, %typeswitch.body2 ], [ %16, %typeswitch.body1 ], [ %12, %typeswitch.body ], !dbg !4032
call void @llvm.dbg.value(metadata i8* %.0, metadata !4028, metadata !DIExpression()), !dbg !4032
ret i8* %.0, !dbg !4054
}
; Function Attrs: nounwind
define internal i8 @reflect.is_byte(%runtime.Type_Info* %0, i8* noalias nocapture nonnull %__.context_ptr) #0 !dbg !4055 {
decls:
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Integer* %1, metadata !4062, metadata !DIExpression()), !dbg !4064
%1 = alloca %runtime.Type_Info_Integer, align 1, !dbg !4065
call void @llvm.dbg.value(metadata %runtime.Type_Info* %0, metadata !4060, metadata !DIExpression()), !dbg !4066
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !4061, metadata !DIExpression()), !dbg !4067
%2 = icmp eq %runtime.Type_Info* %0, null, !dbg !4068
br i1 %2, label %if.then, label %if.done, !dbg !4068
if.then: ; preds = %if.done, %decls
ret i8 0, !dbg !4069
if.done: ; preds = %decls
%3 = call %runtime.Type_Info* @reflect.type_info_base(%runtime.Type_Info* %0, i8* %__.context_ptr), !dbg !4065
%4 = getelementptr inbounds %runtime.Type_Info, %runtime.Type_Info* %3, i32 0, i32 4, !dbg !4065
%5 = bitcast { [0 x i64], [120 x i8], i64 }* %4 to i8*, !dbg !4065
%6 = getelementptr inbounds { [0 x i64], [120 x i8], i64 }, { [0 x i64], [120 x i8], i64 }* %4, i32 0, i32 2, !dbg !4065
%7 = load i64, i64* %6, align 8, !dbg !4065
%cond = icmp eq i64 %7, 2, !dbg !4065
br i1 %cond, label %typeswitch.body, label %if.then, !dbg !4065
typeswitch.body: ; preds = %if.done
%8 = bitcast %runtime.Type_Info_Integer* %1 to i8*, !dbg !4065
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %8, i8* align 1 %5, i64 2, i1 false), !dbg !4065
%9 = getelementptr inbounds %runtime.Type_Info, %runtime.Type_Info* %0, i32 0, i32 0, !dbg !4072
%10 = load i64, i64* %9, align 8, !dbg !4072
%11 = icmp eq i64 %10, 1, !dbg !4072
%12 = zext i1 %11 to i8, !dbg !4072
ret i8 %12, !dbg !4072
}
; Function Attrs: nounwind
define internal i8 @reflect.is_rune(%runtime.Type_Info* %0, i8* noalias nocapture nonnull %__.context_ptr) #0 !dbg !4073 {
decls:
%1 = alloca { i8, i8 }, align 1, !dbg !4079
call void @llvm.dbg.value(metadata %runtime.Type_Info* %0, metadata !4075, metadata !DIExpression()), !dbg !4080
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !4076, metadata !DIExpression()), !dbg !4081
%2 = icmp eq %runtime.Type_Info* %0, null, !dbg !4082
br i1 %2, label %if.then, label %if.done, !dbg !4082
if.then: ; preds = %decls
ret i8 0, !dbg !4083
if.done: ; preds = %decls
call void @llvm.dbg.value(metadata i8 0, metadata !4077, metadata !DIExpression()), !dbg !4086
%3 = call %runtime.Type_Info* @reflect.type_info_base(%runtime.Type_Info* %0, i8* %__.context_ptr), !dbg !4079
%4 = getelementptr inbounds %runtime.Type_Info, %runtime.Type_Info* %3, i32 0, i32 4, !dbg !4079
%5 = getelementptr inbounds { [0 x i64], [120 x i8], i64 }, { [0 x i64], [120 x i8], i64 }* %4, i32 0, i32 2, !dbg !4079
%6 = load i64, i64* %5, align 8, !dbg !4079
%7 = icmp eq i64 %6, 3, !dbg !4079
%8 = getelementptr inbounds { i8, i8 }, { i8, i8 }* %1, i32 0, i32 1, !dbg !4079
%9 = zext i1 %7 to i8, !dbg !4079
store i8 %9, i8* %8, align 1, !dbg !4079
call void @llvm.dbg.value(metadata i8 %9, metadata !4077, metadata !DIExpression()), !dbg !4086
ret i8 %9, !dbg !4087
}
; Function Attrs: nounwind
define internal i8 @reflect.is_any(%runtime.Type_Info* %0, i8* noalias nocapture nonnull %__.context_ptr) #0 !dbg !4088 {
decls:
%1 = alloca { i8, i8 }, align 1, !dbg !4094
call void @llvm.dbg.value(metadata %runtime.Type_Info* %0, metadata !4090, metadata !DIExpression()), !dbg !4095
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !4091, metadata !DIExpression()), !dbg !4096
%2 = icmp eq %runtime.Type_Info* %0, null, !dbg !4097
br i1 %2, label %if.then, label %if.done, !dbg !4097
if.then: ; preds = %decls
ret i8 0, !dbg !4098
if.done: ; preds = %decls
call void @llvm.dbg.value(metadata i8 0, metadata !4092, metadata !DIExpression()), !dbg !4101
%3 = call %runtime.Type_Info* @reflect.type_info_base(%runtime.Type_Info* %0, i8* %__.context_ptr), !dbg !4094
%4 = getelementptr inbounds %runtime.Type_Info, %runtime.Type_Info* %3, i32 0, i32 4, !dbg !4094
%5 = getelementptr inbounds { [0 x i64], [120 x i8], i64 }, { [0 x i64], [120 x i8], i64 }* %4, i32 0, i32 2, !dbg !4094
%6 = load i64, i64* %5, align 8, !dbg !4094
%7 = icmp eq i64 %6, 9, !dbg !4094
%8 = getelementptr inbounds { i8, i8 }, { i8, i8 }* %1, i32 0, i32 1, !dbg !4094
%9 = zext i1 %7 to i8, !dbg !4094
store i8 %9, i8* %8, align 1, !dbg !4094
call void @llvm.dbg.value(metadata i8 %9, metadata !4092, metadata !DIExpression()), !dbg !4101
ret i8 %9, !dbg !4102
}
; Function Attrs: nounwind
define internal i8 @reflect.is_string(%runtime.Type_Info* %0, i8* noalias nocapture nonnull %__.context_ptr) #0 !dbg !4103 {
decls:
%1 = alloca { i8, i8 }, align 1, !dbg !4109
call void @llvm.dbg.value(metadata %runtime.Type_Info* %0, metadata !4105, metadata !DIExpression()), !dbg !4110
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !4106, metadata !DIExpression()), !dbg !4111
%2 = icmp eq %runtime.Type_Info* %0, null, !dbg !4112
br i1 %2, label %if.then, label %if.done, !dbg !4112
if.then: ; preds = %decls
ret i8 0, !dbg !4113
if.done: ; preds = %decls
call void @llvm.dbg.value(metadata i8 0, metadata !4107, metadata !DIExpression()), !dbg !4116
%3 = call %runtime.Type_Info* @reflect.type_info_base(%runtime.Type_Info* %0, i8* %__.context_ptr), !dbg !4109
%4 = getelementptr inbounds %runtime.Type_Info, %runtime.Type_Info* %3, i32 0, i32 4, !dbg !4109
%5 = getelementptr inbounds { [0 x i64], [120 x i8], i64 }, { [0 x i64], [120 x i8], i64 }* %4, i32 0, i32 2, !dbg !4109
%6 = load i64, i64* %5, align 8, !dbg !4109
%7 = icmp eq i64 %6, 7, !dbg !4109
%8 = getelementptr inbounds { i8, i8 }, { i8, i8 }* %1, i32 0, i32 1, !dbg !4109
%9 = zext i1 %7 to i8, !dbg !4109
store i8 %9, i8* %8, align 1, !dbg !4109
call void @llvm.dbg.value(metadata i8 %9, metadata !4107, metadata !DIExpression()), !dbg !4116
ret i8 %9, !dbg !4117
}
define internal i64 @fmt.wprintln([2 x i64] %0, [2 x i64] %1, [2 x i64] %2, i8* noalias nocapture nonnull %__.context_ptr) !dbg !4118 {
decls:
%3 = alloca %io.Writer, align 8
call void @llvm.dbg.declare(metadata %io.Writer* %4, metadata !4122, metadata !DIExpression()), !dbg !4132
%4 = alloca %io.Writer, align 8
%5 = alloca { %..any*, i64 }, align 8
call void @llvm.dbg.declare(metadata { %..any*, i64 }* %6, metadata !4123, metadata !DIExpression()), !dbg !4133
%6 = alloca { %..any*, i64 }, align 8
%7 = alloca %..string, align 8
call void @llvm.dbg.declare(metadata %..string* %8, metadata !4124, metadata !DIExpression()), !dbg !4134
%8 = alloca %..string, align 8
call void @llvm.dbg.declare(metadata %fmt.Info* %9, metadata !4126, metadata !DIExpression()), !dbg !4135
%9 = alloca %fmt.Info, align 8, !dbg !4135
%10 = alloca { i64, i32 }, align 8, !dbg !4136
%11 = alloca [2 x i64], align 8, !dbg !4140
%12 = bitcast %io.Writer* %3 to [2 x i64]*
store [2 x i64] %0, [2 x i64]* %12, align 8
%13 = bitcast %io.Writer* %4 to i8*
%14 = bitcast %io.Writer* %3 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %13, i8* align 8 %14, i64 16, i1 false)
%15 = bitcast { %..any*, i64 }* %5 to [2 x i64]*
store [2 x i64] %1, [2 x i64]* %15, align 8
%16 = bitcast { %..any*, i64 }* %6 to i8*
%17 = bitcast { %..any*, i64 }* %5 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %16, i8* align 8 %17, i64 16, i1 false)
%18 = bitcast %..string* %7 to [2 x i64]*
store [2 x i64] %2, [2 x i64]* %18, align 8
%19 = bitcast %..string* %8 to i8*
%20 = bitcast %..string* %7 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %19, i8* align 8 %20, i64 16, i1 false)
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !4125, metadata !DIExpression()), !dbg !4141
%21 = bitcast %fmt.Info* %9 to i8*, !dbg !4135
call void @llvm.memset.p0i8.i64(i8* %21, i8 0, i64 80, i1 false), !dbg !4135
%22 = getelementptr inbounds %fmt.Info, %fmt.Info* %9, i32 0, i32 13, !dbg !4142
%23 = bitcast %io.Writer* %22 to i8*, !dbg !4142
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %23, i8* align 8 %14, i64 16, i1 false), !dbg !4142
call void @llvm.dbg.value(metadata i64 0, metadata !4128, metadata !DIExpression()), !dbg !4143
%24 = getelementptr inbounds %io.Writer, %io.Writer* %4, i32 0, i32 0, !dbg !4144
%25 = bitcast %io.Stream* %24 to [2 x i64]*, !dbg !4144
%26 = load [2 x i64], [2 x i64]* %25, align 8, !dbg !4144
%27 = call i64 @io.size([2 x i64] %26, i8* %__.context_ptr), !dbg !4144
call void @llvm.dbg.value(metadata i64 %27, metadata !4128, metadata !DIExpression()), !dbg !4143
call void @llvm.dbg.value(metadata i64 0, metadata !4129, metadata !DIExpression()), !dbg !4145
%28 = getelementptr inbounds { %..any*, i64 }, { %..any*, i64 }* %6, i32 0, i32 1, !dbg !4146
%29 = load i64, i64* %28, align 8, !dbg !4146
br label %for.index.loop, !dbg !4146
for.index.loop: ; preds = %if.done, %decls
%.0 = phi i64 [ -1, %decls ], [ %30, %if.done ], !dbg !4146
%30 = add i64 %.0, 1, !dbg !4146
%31 = icmp slt i64 %30, %29, !dbg !4146
br i1 %31, label %for.index.body, label %for.index.done, !dbg !4146
for.index.body: ; preds = %for.index.loop
call void @llvm.dbg.value(metadata i64 %30, metadata !4129, metadata !DIExpression()), !dbg !4145
%32 = icmp sgt i64 %30, 0, !dbg !4147
br i1 %32, label %if.then, label %if.done, !dbg !4147
if.then: ; preds = %for.index.body
%33 = bitcast %io.Writer* %22 to [2 x i64]*, !dbg !4136
%34 = load [2 x i64], [2 x i64]* %33, align 8, !dbg !4136
%35 = bitcast %..string* %8 to [2 x i64]*, !dbg !4136
%36 = load [2 x i64], [2 x i64]* %35, align 8, !dbg !4136
%37 = call [2 x i64] @io.write_string([2 x i64] %34, [2 x i64] %36, i8* %__.context_ptr), !dbg !4136
%38 = bitcast { i64, i32 }* %10 to [2 x i64]*, !dbg !4136
store [2 x i64] %37, [2 x i64]* %38, align 8, !dbg !4136
br label %if.done, !dbg !4147
if.done: ; preds = %if.then, %for.index.body
%39 = getelementptr inbounds { %..any*, i64 }, { %..any*, i64 }* %6, i32 0, i32 0, !dbg !4140
%40 = load %..any*, %..any** %39, align 8, !dbg !4140
%41 = load i64, i64* %28, align 8, !dbg !4140
%42 = bitcast [2 x i64]* %11 to %..string*, !dbg !4140
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %42, align 8, !dbg !4140
%43 = load [2 x i64], [2 x i64]* %11, align 8, !dbg !4140
call void @runtime.bounds_check_error([2 x i64] %43, i32 241, i32 23, i64 %30, i64 %41), !dbg !4140
%44 = getelementptr %..any, %..any* %40, i64 %30, !dbg !4140
%45 = bitcast %..any* %44 to [2 x i64]*, !dbg !4140
%46 = load [2 x i64], [2 x i64]* %45, align 8, !dbg !4140
call void @fmt.fmt_value(%fmt.Info* %9, [2 x i64] %46, i32 118, i8* %__.context_ptr), !dbg !4140
br label %for.index.loop, !dbg !4146
for.index.done: ; preds = %for.index.loop
%47 = bitcast %io.Writer* %22 to [2 x i64]*, !dbg !4148
%48 = load [2 x i64], [2 x i64]* %47, align 8, !dbg !4148
%49 = call i32 @io.write_byte_to_writer([2 x i64] %48, i8 10, i8* %__.context_ptr), !dbg !4148
%50 = bitcast %io.Writer* %4 to %io.Flusher*, !dbg !4149
%51 = bitcast %io.Flusher* %50 to [2 x i64]*, !dbg !4149
%52 = load [2 x i64], [2 x i64]* %51, align 8, !dbg !4149
%53 = call i32 @io.flush([2 x i64] %52, i8* %__.context_ptr), !dbg !4149
call void @llvm.dbg.value(metadata i64 0, metadata !4131, metadata !DIExpression()), !dbg !4143
%54 = load [2 x i64], [2 x i64]* %25, align 8, !dbg !4150
%55 = call i64 @io.size([2 x i64] %54, i8* %__.context_ptr), !dbg !4150
call void @llvm.dbg.value(metadata i64 %55, metadata !4131, metadata !DIExpression()), !dbg !4143
%56 = sub i64 %55, %27, !dbg !4151
ret i64 %56, !dbg !4151
}
; Function Attrs: nounwind
define internal i8 @reflect.is_pointer(%runtime.Type_Info* %0, i8* noalias nocapture nonnull %__.context_ptr) #0 !dbg !4152 {
decls:
%1 = alloca { i8, i8 }, align 1, !dbg !4158
call void @llvm.dbg.value(metadata %runtime.Type_Info* %0, metadata !4154, metadata !DIExpression()), !dbg !4159
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !4155, metadata !DIExpression()), !dbg !4160
%2 = icmp eq %runtime.Type_Info* %0, null, !dbg !4161
br i1 %2, label %if.then, label %if.done, !dbg !4161
if.then: ; preds = %decls
ret i8 0, !dbg !4162
if.done: ; preds = %decls
call void @llvm.dbg.value(metadata i8 0, metadata !4156, metadata !DIExpression()), !dbg !4165
%3 = call %runtime.Type_Info* @reflect.type_info_base(%runtime.Type_Info* %0, i8* %__.context_ptr), !dbg !4158
%4 = getelementptr inbounds %runtime.Type_Info, %runtime.Type_Info* %3, i32 0, i32 4, !dbg !4158
%5 = getelementptr inbounds { [0 x i64], [120 x i8], i64 }, { [0 x i64], [120 x i8], i64 }* %4, i32 0, i32 2, !dbg !4158
%6 = load i64, i64* %5, align 8, !dbg !4158
%7 = icmp eq i64 %6, 11, !dbg !4158
%8 = getelementptr inbounds { i8, i8 }, { i8, i8 }* %1, i32 0, i32 1, !dbg !4158
%9 = zext i1 %7 to i8, !dbg !4158
store i8 %9, i8* %8, align 1, !dbg !4158
call void @llvm.dbg.value(metadata i8 %9, metadata !4156, metadata !DIExpression()), !dbg !4165
ret i8 %9, !dbg !4166
}
define internal void @fmt.fmt_bad_verb(%fmt.Info* %0, i32 %1, i8* noalias nocapture nonnull %__.context_ptr) !dbg !4167 {
decls:
%2 = alloca [2 x i64], align 8, !dbg !4183
%3 = alloca { i64, i32 }, align 8, !dbg !4183
%4 = alloca { i64, i32 }, align 8, !dbg !4184
%5 = alloca [2 x i64], align 8, !dbg !4185
%6 = alloca { i64, i32 }, align 8, !dbg !4185
call void @llvm.dbg.value(metadata %fmt.Info* %0, metadata !4171, metadata !DIExpression()), !dbg !4186
call void @llvm.dbg.value(metadata i32 %1, metadata !4172, metadata !DIExpression()), !dbg !4186
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !4173, metadata !DIExpression()), !dbg !4187
call void @llvm.dbg.declare(metadata %io.Writer* %7, metadata !4174, metadata !DIExpression()), !dbg !4188
%7 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 13, !dbg !4183
%8 = bitcast %io.Writer* %7 to [2 x i64]*, !dbg !4183
%9 = load [2 x i64], [2 x i64]* %8, align 8, !dbg !4183
%10 = bitcast [2 x i64]* %2 to %..string*, !dbg !4183
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$b6", i64 0, i64 0), i64 2 }, %..string* %10, align 8, !dbg !4183
%11 = load [2 x i64], [2 x i64]* %2, align 8, !dbg !4183
%12 = call [2 x i64] @io.write_string([2 x i64] %9, [2 x i64] %11, i8* %__.context_ptr), !dbg !4183
%13 = bitcast { i64, i32 }* %3 to [2 x i64]*, !dbg !4183
store [2 x i64] %12, [2 x i64]* %13, align 8, !dbg !4183
call void @llvm.dbg.declare(metadata %io.Writer* %7, metadata !4174, metadata !DIExpression()), !dbg !4188
%14 = load [2 x i64], [2 x i64]* %8, align 8, !dbg !4184
%15 = call [2 x i64] @io.write_rune([2 x i64] %14, i32 %1, i8* %__.context_ptr), !dbg !4184
%16 = bitcast { i64, i32 }* %4 to [2 x i64]*, !dbg !4184
store [2 x i64] %15, [2 x i64]* %16, align 8, !dbg !4184
call void @llvm.dbg.declare(metadata %io.Writer* %7, metadata !4174, metadata !DIExpression()), !dbg !4188
%17 = load [2 x i64], [2 x i64]* %8, align 8, !dbg !4189
%18 = call i32 @io.write_byte_to_writer([2 x i64] %17, i8 40, i8* %__.context_ptr), !dbg !4189
call void @llvm.dbg.declare(metadata %..any* %19, metadata !4176, metadata !DIExpression()), !dbg !4190
%19 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 14, !dbg !4191
%20 = getelementptr inbounds %..any, %..any* %19, i32 0, i32 1, !dbg !4191
%21 = load i64, i64* %20, align 8, !dbg !4191
%22 = icmp ne i64 %21, 0, !dbg !4191
%23 = load [2 x i64], [2 x i64]* %8, align 8, !dbg !4192
br i1 %22, label %if.then, label %if.else, !dbg !4191
if.then: ; preds = %decls
call void @llvm.dbg.declare(metadata %io.Writer* %7, metadata !4178, metadata !DIExpression()), !dbg !4193
call void @llvm.dbg.declare(metadata %..any* %19, metadata !4180, metadata !DIExpression()), !dbg !4193
call void @reflect.write_typeid_writer([2 x i64] %23, i64 %21, i8* %__.context_ptr), !dbg !4194
call void @llvm.dbg.declare(metadata %io.Writer* %7, metadata !4178, metadata !DIExpression()), !dbg !4193
%24 = load [2 x i64], [2 x i64]* %8, align 8, !dbg !4195
%25 = call i32 @io.write_byte_to_writer([2 x i64] %24, i8 61, i8* %__.context_ptr), !dbg !4195
call void @llvm.dbg.declare(metadata %..any* %19, metadata !4180, metadata !DIExpression()), !dbg !4193
%26 = bitcast %..any* %19 to [2 x i64]*, !dbg !4196
%27 = load [2 x i64], [2 x i64]* %26, align 8, !dbg !4196
call void @fmt.fmt_value(%fmt.Info* %0, [2 x i64] %27, i32 118, i8* %__.context_ptr), !dbg !4196
br label %if.done, !dbg !4191
if.else: ; preds = %decls
call void @llvm.dbg.declare(metadata %io.Writer* %7, metadata !4181, metadata !DIExpression()), !dbg !4197
%28 = bitcast [2 x i64]* %5 to %..string*, !dbg !4185
store %..string { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"csbs$b7", i64 0, i64 0), i64 5 }, %..string* %28, align 8, !dbg !4185
%29 = load [2 x i64], [2 x i64]* %5, align 8, !dbg !4185
%30 = call [2 x i64] @io.write_string([2 x i64] %23, [2 x i64] %29, i8* %__.context_ptr), !dbg !4185
%31 = bitcast { i64, i32 }* %6 to [2 x i64]*, !dbg !4185
store [2 x i64] %30, [2 x i64]* %31, align 8, !dbg !4185
br label %if.done, !dbg !4191
if.done: ; preds = %if.else, %if.then
call void @llvm.dbg.declare(metadata %io.Writer* %7, metadata !4174, metadata !DIExpression()), !dbg !4188
%32 = load [2 x i64], [2 x i64]* %8, align 8, !dbg !4198
%33 = call i32 @io.write_byte_to_writer([2 x i64] %32, i8 41, i8* %__.context_ptr), !dbg !4198
ret void, !dbg !4187
}
define internal void @fmt.fmt_bool(%fmt.Info* %0, i1 zeroext %1, i32 %2, i8* noalias nocapture nonnull %__.context_ptr) !dbg !4199 {
decls:
%3 = alloca [2 x i64], align 8, !dbg !4210
%4 = alloca { i64, i32 }, align 8, !dbg !4210
call void @llvm.dbg.value(metadata %fmt.Info* %0, metadata !4203, metadata !DIExpression()), !dbg !4211
call void @llvm.dbg.value(metadata i8 undef, metadata !4204, metadata !DIExpression()), !dbg !4211
call void @llvm.dbg.value(metadata i32 %2, metadata !4205, metadata !DIExpression()), !dbg !4211
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !4206, metadata !DIExpression()), !dbg !4212
switch i32 %2, label %switch.default.body [
i32 116, label %switch.case.body
i32 118, label %switch.case.body
], !dbg !4213
switch.case.body: ; preds = %decls, %decls
call void @llvm.dbg.declare(metadata %io.Writer* %5, metadata !4207, metadata !DIExpression()), !dbg !4214
%5 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 13, !dbg !4210
%. = select i1 %1, %..string { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"csbs$b8", i64 0, i64 0), i64 4 }, %..string { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"csbs$b9", i64 0, i64 0), i64 5 }, !dbg !4210
%6 = bitcast %io.Writer* %5 to [2 x i64]*, !dbg !4210
%7 = load [2 x i64], [2 x i64]* %6, align 8, !dbg !4210
%8 = bitcast [2 x i64]* %3 to %..string*, !dbg !4210
store %..string %., %..string* %8, align 8, !dbg !4210
%9 = load [2 x i64], [2 x i64]* %3, align 8, !dbg !4210
%10 = call [2 x i64] @io.write_string([2 x i64] %7, [2 x i64] %9, i8* %__.context_ptr), !dbg !4210
%11 = bitcast { i64, i32 }* %4 to [2 x i64]*, !dbg !4210
store [2 x i64] %10, [2 x i64]* %11, align 8, !dbg !4210
br label %switch.done, !dbg !4213
switch.default.body: ; preds = %decls
call void @fmt.fmt_bad_verb(%fmt.Info* %0, i32 %2, i8* %__.context_ptr), !dbg !4215
br label %switch.done, !dbg !4213
switch.done: ; preds = %switch.default.body, %switch.case.body
ret void, !dbg !4212
}
define internal void @fmt.fmt_write_padding(%fmt.Info* %0, i64 %1, i8* noalias nocapture nonnull %__.context_ptr) !dbg !4216 {
decls:
call void @llvm.dbg.value(metadata %fmt.Info* %0, metadata !4220, metadata !DIExpression()), !dbg !4227
call void @llvm.dbg.value(metadata i64 %1, metadata !4221, metadata !DIExpression()), !dbg !4227
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !4222, metadata !DIExpression()), !dbg !4228
%2 = icmp sle i64 %1, 0, !dbg !4229
br i1 %2, label %if.then, label %if.done, !dbg !4229
if.then: ; preds = %for.loop, %decls
ret void, !dbg !4230
if.done: ; preds = %decls
call void @llvm.dbg.value(metadata i8 32, metadata !4223, metadata !DIExpression()), !dbg !4233
%3 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 2, !dbg !4234
%4 = load i8, i8* %3, align 1, !dbg !4234
%5 = trunc i8 %4 to i1, !dbg !4234
%spec.select = select i1 %5, i8 32, i8 48, !dbg !4234
call void @llvm.dbg.value(metadata i8 %spec.select, metadata !4223, metadata !DIExpression()), !dbg !4233
call void @llvm.dbg.value(metadata i64 0, metadata !4225, metadata !DIExpression()), !dbg !4235
br label %for.loop, !dbg !4236
for.loop: ; preds = %for.body, %if.done
%.0 = phi i64 [ 0, %if.done ], [ %11, %for.body ], !dbg !4233
call void @llvm.dbg.value(metadata i64 %.0, metadata !4225, metadata !DIExpression()), !dbg !4235
%6 = icmp slt i64 %.0, %1, !dbg !4236
br i1 %6, label %for.body, label %if.then, !dbg !4236
for.body: ; preds = %for.loop
%7 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 13, !dbg !4237
%8 = bitcast %io.Writer* %7 to [2 x i64]*, !dbg !4237
%9 = load [2 x i64], [2 x i64]* %8, align 8, !dbg !4237
%10 = call i32 @io.write_byte_to_writer([2 x i64] %9, i8 %spec.select, i8* %__.context_ptr), !dbg !4237
%11 = add i64 %.0, 1, !dbg !4239
call void @llvm.dbg.value(metadata i64 %11, metadata !4225, metadata !DIExpression()), !dbg !4235
br label %for.loop, !dbg !4236
}
; Function Attrs: nounwind
define dso_local i16 @__truncsfhf2(float %0) #0 !dbg !4240 {
decls:
call void @llvm.dbg.declare(metadata { [0 x i32], [4 x i8] }* %1, metadata !4245, metadata !DIExpression()), !dbg !4265
%1 = alloca { [0 x i32], [4 x i8] }, align 4, !dbg !4265
call void @llvm.dbg.declare(metadata i64* %2, metadata !4255, metadata !DIExpression()), !dbg !4266
%2 = alloca i64, align 8, !dbg !4266
call void @llvm.dbg.value(metadata float %0, metadata !4244, metadata !DIExpression()), !dbg !4267
%3 = bitcast { [0 x i32], [4 x i8] }* %1 to i8*, !dbg !4265
call void @llvm.memset.p0i8.i64(i8* %3, i8 0, i64 4, i1 false), !dbg !4265
call void @llvm.dbg.value(metadata i32 0, metadata !4251, metadata !DIExpression()), !dbg !4268
call void @llvm.dbg.value(metadata i32 0, metadata !4252, metadata !DIExpression()), !dbg !4268
call void @llvm.dbg.value(metadata i32 0, metadata !4253, metadata !DIExpression()), !dbg !4268
call void @llvm.dbg.value(metadata i32 0, metadata !4254, metadata !DIExpression()), !dbg !4268
%4 = bitcast { [0 x i32], [4 x i8] }* %1 to float*, !dbg !4269
store float %0, float* %4, align 4, !dbg !4269
%5 = bitcast { [0 x i32], [4 x i8] }* %1 to i32*, !dbg !4270
%6 = load i32, i32* %5, align 4, !dbg !4270
call void @llvm.dbg.value(metadata i32 %6, metadata !4251, metadata !DIExpression()), !dbg !4268
%7 = ashr i32 %6, 16, !dbg !4271
%8 = and i32 %7, 32768, !dbg !4271
call void @llvm.dbg.value(metadata i32 %8, metadata !4252, metadata !DIExpression()), !dbg !4268
%9 = ashr i32 %6, 23, !dbg !4272
%10 = and i32 %9, 255, !dbg !4272
%11 = sub i32 %10, 112, !dbg !4272
call void @llvm.dbg.value(metadata i32 %11, metadata !4253, metadata !DIExpression()), !dbg !4268
%12 = and i32 %6, 8388607, !dbg !4273
call void @llvm.dbg.value(metadata i32 %12, metadata !4254, metadata !DIExpression()), !dbg !4268
%13 = icmp sle i32 %11, 0, !dbg !4274
br i1 %13, label %if.then, label %if.else, !dbg !4274
if.then: ; preds = %decls
%14 = icmp slt i32 %11, -10, !dbg !4275
br i1 %14, label %if.then1, label %if.done, !dbg !4275
if.then1: ; preds = %if.then
%15 = trunc i32 %8 to i16, !dbg !4277
ret i16 %15, !dbg !4277
if.done: ; preds = %if.then
%16 = or i32 %12, 8388608, !dbg !4280
%17 = sub i32 1, %11, !dbg !4280
%18 = icmp ult i32 %17, 32, !dbg !4280
%19 = ashr i32 %16, %17, !dbg !4280
%20 = select i1 %18, i32 %19, i32 0, !dbg !4280
call void @llvm.dbg.value(metadata i32 %20, metadata !4254, metadata !DIExpression()), !dbg !4268
%21 = and i32 %20, 4096, !dbg !4281
%22 = icmp ne i32 %21, 0, !dbg !4281
%23 = add i32 %20, 8192
%spec.select = select i1 %22, i32 %23, i32 %20, !dbg !4281
call void @llvm.dbg.value(metadata i32 %spec.select, metadata !4254, metadata !DIExpression()), !dbg !4268
%24 = ashr i32 %spec.select, 13, !dbg !4282
%25 = or i32 %8, %24, !dbg !4282
%26 = trunc i32 %25 to i16, !dbg !4282
ret i16 %26, !dbg !4282
if.else: ; preds = %decls
%27 = icmp eq i32 %11, 143, !dbg !4283
br i1 %27, label %if.then4, label %if.else8, !dbg !4283
if.then4: ; preds = %if.else
%28 = icmp eq i32 %12, 0, !dbg !4284
br i1 %28, label %if.then5, label %if.else6, !dbg !4284
if.then5: ; preds = %if.then4
%29 = or i32 %8, 31744, !dbg !4286
%30 = trunc i32 %29 to i16, !dbg !4286
ret i16 %30, !dbg !4286
if.else6: ; preds = %if.then4
%31 = ashr i32 %12, 13, !dbg !4289
call void @llvm.dbg.value(metadata i32 %31, metadata !4254, metadata !DIExpression()), !dbg !4268
%32 = or i32 %8, 31744, !dbg !4291
%33 = or i32 %32, %31, !dbg !4291
%34 = icmp eq i32 %31, 0, !dbg !4291
%35 = zext i1 %34 to i32, !dbg !4291
%36 = or i32 %33, %35, !dbg !4291
%37 = trunc i32 %36 to i16, !dbg !4291
ret i16 %37, !dbg !4291
if.else8: ; preds = %if.else
%38 = and i32 %12, 4096, !dbg !4292
%39 = icmp ne i32 %38, 0, !dbg !4292
br i1 %39, label %if.then9, label %if.done12, !dbg !4292
if.then9: ; preds = %if.else8
%40 = add i32 %12, 8192, !dbg !4293
call void @llvm.dbg.value(metadata i32 %40, metadata !4254, metadata !DIExpression()), !dbg !4268
%41 = and i32 %40, 8388608, !dbg !4296
%42 = icmp ne i32 %41, 0, !dbg !4296
%43 = add i32 %11, 1
%spec.select20 = select i1 %42, i32 %43, i32 %11, !dbg !4296
%spec.select21 = select i1 %42, i32 0, i32 %40, !dbg !4296
call void @llvm.dbg.value(metadata i32 %spec.select21, metadata !4254, metadata !DIExpression()), !dbg !4268
call void @llvm.dbg.value(metadata i32 %spec.select20, metadata !4253, metadata !DIExpression()), !dbg !4268
br label %if.done12, !dbg !4292
if.done12: ; preds = %if.then9, %if.else8
%.119 = phi i32 [ %spec.select20, %if.then9 ], [ %11, %if.else8 ], !dbg !4268
%.2 = phi i32 [ %spec.select21, %if.then9 ], [ %12, %if.else8 ], !dbg !4268
call void @llvm.dbg.value(metadata i32 %.2, metadata !4254, metadata !DIExpression()), !dbg !4268
call void @llvm.dbg.value(metadata i32 %.119, metadata !4253, metadata !DIExpression()), !dbg !4268
%44 = icmp sgt i32 %.119, 30, !dbg !4297
br i1 %44, label %if.then13, label %if.done14, !dbg !4297
if.then13: ; preds = %if.done12
store i64 1000000000000, i64* %2, align 8, !dbg !4266
call void @llvm.dbg.value(metadata i64 0, metadata !4261, metadata !DIExpression()), !dbg !4298
br label %for.loop, !dbg !4299
for.loop: ; preds = %for.body, %if.then13
%.0 = phi i64 [ 0, %if.then13 ], [ %48, %for.body ], !dbg !4300
call void @llvm.dbg.value(metadata i64 %.0, metadata !4261, metadata !DIExpression()), !dbg !4298
%45 = icmp slt i64 %.0, 10, !dbg !4299
br i1 %45, label %for.body, label %for.done, !dbg !4299
for.body: ; preds = %for.loop
call void @llvm.dbg.value(metadata i64 0, metadata !4263, metadata !DIExpression()), !dbg !4301
%46 = load volatile i64, i64* %2, align 8, !dbg !4302
call void @llvm.dbg.value(metadata i64 %46, metadata !4263, metadata !DIExpression()), !dbg !4301
%47 = mul i64 %46, %46, !dbg !4303
call void @llvm.dbg.value(metadata i64 %47, metadata !4263, metadata !DIExpression()), !dbg !4301
store volatile i64 %47, i64* %2, align 8, !dbg !4304
%48 = add i64 %.0, 1, !dbg !4305
call void @llvm.dbg.value(metadata i64 %48, metadata !4261, metadata !DIExpression()), !dbg !4298
br label %for.loop, !dbg !4299
for.done: ; preds = %for.loop
%49 = or i32 %8, 31744, !dbg !4306
%50 = trunc i32 %49 to i16, !dbg !4306
ret i16 %50, !dbg !4306
if.done14: ; preds = %if.done12
%51 = shl i32 %.119, 10, !dbg !4307
%52 = or i32 %8, %51, !dbg !4307
%53 = ashr i32 %.2, 13, !dbg !4307
%54 = or i32 %52, %53, !dbg !4307
%55 = trunc i32 %54 to i16, !dbg !4307
ret i16 %55, !dbg !4307
}
; Function Attrs: nounwind
define dso_local i16 @__truncdfhf2(double %0) #0 !dbg !4308 {
decls:
call void @llvm.dbg.value(metadata double %0, metadata !4312, metadata !DIExpression()), !dbg !4313
%1 = fptrunc double %0 to float, !dbg !4314
%2 = call i16 @__truncsfhf2(float %1), !dbg !4314
ret i16 %2, !dbg !4314
}
; Function Attrs: nounwind
define internal i8 @reflect.is_enum(%runtime.Type_Info* %0, i8* noalias nocapture nonnull %__.context_ptr) #0 !dbg !4316 {
decls:
%1 = alloca { i8, i8 }, align 1, !dbg !4322
call void @llvm.dbg.value(metadata %runtime.Type_Info* %0, metadata !4318, metadata !DIExpression()), !dbg !4323
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !4319, metadata !DIExpression()), !dbg !4324
%2 = icmp eq %runtime.Type_Info* %0, null, !dbg !4325
br i1 %2, label %if.then, label %if.done, !dbg !4325
if.then: ; preds = %decls
ret i8 0, !dbg !4326
if.done: ; preds = %decls
call void @llvm.dbg.value(metadata i8 0, metadata !4320, metadata !DIExpression()), !dbg !4329
%3 = call %runtime.Type_Info* @reflect.type_info_base(%runtime.Type_Info* %0, i8* %__.context_ptr), !dbg !4322
%4 = getelementptr inbounds %runtime.Type_Info, %runtime.Type_Info* %3, i32 0, i32 4, !dbg !4322
%5 = getelementptr inbounds { [0 x i64], [120 x i8], i64 }, { [0 x i64], [120 x i8], i64 }* %4, i32 0, i32 2, !dbg !4322
%6 = load i64, i64* %5, align 8, !dbg !4322
%7 = icmp eq i64 %6, 21, !dbg !4322
%8 = getelementptr inbounds { i8, i8 }, { i8, i8 }* %1, i32 0, i32 1, !dbg !4322
%9 = zext i1 %7 to i8, !dbg !4322
store i8 %9, i8* %8, align 1, !dbg !4322
call void @llvm.dbg.value(metadata i8 %9, metadata !4320, metadata !DIExpression()), !dbg !4329
ret i8 %9, !dbg !4330
}
define internal void @fmt._fmt_int(%fmt.Info* %0, i64 %1, i64 %2, i1 zeroext %3, i64 %4, [2 x i64] %5, i8* noalias nocapture nonnull %__.context_ptr) !dbg !4331 {
decls:
%6 = alloca %..string, align 8
call void @llvm.dbg.declare(metadata %..string* %7, metadata !4340, metadata !DIExpression()), !dbg !4361
%7 = alloca %..string, align 8
%8 = alloca { i64, i8 }, align 8, !dbg !4362
%9 = alloca [2 x i64], align 8, !dbg !4363
%10 = alloca %runtime.Source_Code_Location, align 8, !dbg !4363
%11 = alloca [2 x i64], align 8, !dbg !4366
%12 = alloca %runtime.Source_Code_Location, align 8, !dbg !4366
call void @llvm.dbg.declare(metadata [256 x i8]* %13, metadata !4353, metadata !DIExpression()), !dbg !4368
%13 = alloca [256 x i8], align 1, !dbg !4368
call void @llvm.dbg.declare(metadata %..string* %14, metadata !4356, metadata !DIExpression()), !dbg !4369
%14 = alloca %..string, align 8, !dbg !4369
%15 = alloca [2 x i64], align 8, !dbg !4369
%16 = alloca { i8*, i64 }, align 8, !dbg !4369
%17 = alloca %..string, align 8, !dbg !4369
call void @llvm.dbg.value(metadata %fmt.Info* %0, metadata !4335, metadata !DIExpression()), !dbg !4370
call void @llvm.dbg.value(metadata i64 %1, metadata !4336, metadata !DIExpression()), !dbg !4370
call void @llvm.dbg.value(metadata i64 %2, metadata !4337, metadata !DIExpression()), !dbg !4370
call void @llvm.dbg.value(metadata i8 undef, metadata !4338, metadata !DIExpression()), !dbg !4370
call void @llvm.dbg.value(metadata i64 %4, metadata !4339, metadata !DIExpression()), !dbg !4370
%18 = bitcast %..string* %6 to [2 x i64]*
store [2 x i64] %5, [2 x i64]* %18, align 8
%19 = bitcast %..string* %7 to i8*
%20 = bitcast %..string* %6 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %19, i8* align 8 %20, i64 16, i1 false)
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !4341, metadata !DIExpression()), !dbg !4371
call void @llvm.dbg.value(metadata i8 0, metadata !4342, metadata !DIExpression()), !dbg !4372
%21 = call [2 x i64] @strconv.is_integer_negative(i64 %1, i1 %3, i64 %4, i8* %__.context_ptr), !dbg !4362
%22 = bitcast { i64, i8 }* %8 to [2 x i64]*, !dbg !4362
store [2 x i64] %21, [2 x i64]* %22, align 8, !dbg !4362
call void @llvm.dbg.value(metadata i8 undef, metadata !4342, metadata !DIExpression()), !dbg !4372
%23 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 5, !dbg !4373
%24 = load i8, i8* %23, align 1, !dbg !4373
%25 = trunc i8 %24 to i1, !dbg !4373
br i1 %25, label %if.then, label %cmp.or, !dbg !4373
cmp.or: ; preds = %decls
%26 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 6, !dbg !4373
%27 = load i8, i8* %26, align 1, !dbg !4373
%28 = trunc i8 %27 to i1, !dbg !4373
br i1 %28, label %if.then, label %if.done2, !dbg !4373
if.then: ; preds = %cmp.or, %decls
call void @llvm.dbg.value(metadata i64 0, metadata !4344, metadata !DIExpression()), !dbg !4374
%29 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 7, !dbg !4375
%30 = load i64, i64* %29, align 8, !dbg !4375
%31 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 8, !dbg !4375
%32 = load i64, i64* %31, align 8, !dbg !4375
%33 = add i64 %30, %32, !dbg !4375
%34 = add i64 %33, 3, !dbg !4375
call void @llvm.dbg.value(metadata i64 %34, metadata !4344, metadata !DIExpression()), !dbg !4374
%35 = icmp sgt i64 %34, 256, !dbg !4376
br i1 %35, label %if.then1, label %if.done2, !dbg !4376
if.then1: ; preds = %if.then
%36 = bitcast [2 x i64]* %9 to %..string*, !dbg !4363
store %..string { i8* getelementptr inbounds ([54 x i8], [54 x i8]* @"csbs$ba", i64 0, i64 0), i64 53 }, %..string* %36, align 8, !dbg !4363
%37 = load [2 x i64], [2 x i64]* %9, align 8, !dbg !4363
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, i32 658, i32 4, %..string { i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"csbs$bb", i64 0, i64 0), i64 8 } }, %runtime.Source_Code_Location* %10, align 8, !dbg !4363
call void @runtime.panic([2 x i64] %37, %runtime.Source_Code_Location* %10, i8* %__.context_ptr), !dbg !4363
unreachable, !dbg !4363
if.done2: ; preds = %if.then, %cmp.or
call void @llvm.dbg.value(metadata i64 0, metadata !4347, metadata !DIExpression()), !dbg !4372
call void @llvm.dbg.value(metadata i64 0, metadata !4347, metadata !DIExpression()), !dbg !4372
%38 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 6, !dbg !4377
%39 = load i8, i8* %38, align 1, !dbg !4377
%40 = trunc i8 %39 to i1, !dbg !4377
br i1 %40, label %if.then3, label %if.else, !dbg !4377
if.then3: ; preds = %if.done2
%41 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 8, !dbg !4378
%42 = load i64, i64* %41, align 8, !dbg !4378
call void @llvm.dbg.value(metadata i64 %42, metadata !4347, metadata !DIExpression()), !dbg !4372
%43 = icmp eq i64 %42, 0, !dbg !4379
br i1 %43, label %cmp.and, label %if.done13, !dbg !4379
cmp.and: ; preds = %if.then3
%44 = icmp eq i64 %1, 0, !dbg !4379
br i1 %44, label %if.then4, label %if.done13, !dbg !4379
if.then4: ; preds = %cmp.and
call void @llvm.dbg.value(metadata i8 0, metadata !4348, metadata !DIExpression()), !dbg !4380
%45 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 3, !dbg !4381
%46 = load i8, i8* %45, align 1, !dbg !4381
call void @llvm.dbg.value(metadata i8 %46, metadata !4348, metadata !DIExpression()), !dbg !4380
store i8 0, i8* %45, align 1, !dbg !4382
%47 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 7, !dbg !4383
%48 = load i64, i64* %47, align 8, !dbg !4383
call void @fmt.fmt_write_padding(%fmt.Info* %0, i64 %48, i8* %__.context_ptr), !dbg !4383
store i8 %46, i8* %45, align 1, !dbg !4384
ret void, !dbg !4385
if.else: ; preds = %if.done2
%49 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 3, !dbg !4386
%50 = load i8, i8* %49, align 1, !dbg !4386
%51 = trunc i8 %50 to i1, !dbg !4386
br i1 %51, label %cmp.and6, label %if.done13, !dbg !4386
cmp.and6: ; preds = %if.else
%52 = load i8, i8* %23, align 1, !dbg !4386
%53 = trunc i8 %52 to i1, !dbg !4386
br i1 %53, label %if.then7, label %if.done13, !dbg !4386
if.then7: ; preds = %cmp.and6
call void @llvm.dbg.value(metadata i64 undef, metadata !4347, metadata !DIExpression()), !dbg !4372
br label %if.done13, !dbg !4388
if.done13: ; preds = %if.then7, %if.else, %cmp.and6, %if.then3, %cmp.and
%54 = sub i64 %2, 2, !dbg !4390
%55 = lshr i64 %54, 1, !dbg !4390
%56 = shl i64 %54, 63, !dbg !4390
%57 = or i64 %55, %56, !dbg !4390
switch i64 %57, label %switch.default.body [
i64 0, label %switch.done
i64 3, label %switch.done
i64 4, label %switch.done
i64 5, label %switch.done
i64 7, label %switch.done
], !dbg !4390
switch.default.body: ; preds = %if.done13
%58 = bitcast [2 x i64]* %11 to %..string*, !dbg !4366
store %..string { i8* getelementptr inbounds ([31 x i8], [31 x i8]* @"csbs$bc", i64 0, i64 0), i64 30 }, %..string* %58, align 8, !dbg !4366
%59 = load [2 x i64], [2 x i64]* %11, align 8, !dbg !4366
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, i32 684, i32 3, %..string { i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"csbs$bb", i64 0, i64 0), i64 8 } }, %runtime.Source_Code_Location* %12, align 8, !dbg !4366
call void @runtime.panic([2 x i64] %59, %runtime.Source_Code_Location* %12, i8* %__.context_ptr), !dbg !4366
unreachable, !dbg !4366
switch.done: ; preds = %if.done13, %if.done13, %if.done13, %if.done13, %if.done13
%60 = bitcast [256 x i8]* %13 to i8*, !dbg !4368
call void @llvm.memset.p0i8.i64(i8* %60, i8 0, i64 256, i1 false), !dbg !4368
call void @llvm.dbg.value(metadata i64 0, metadata !4354, metadata !DIExpression()), !dbg !4372
call void @llvm.dbg.value(metadata i64 0, metadata !4354, metadata !DIExpression()), !dbg !4372
call void @llvm.dbg.value(metadata i8 0, metadata !4355, metadata !DIExpression()), !dbg !4372
%61 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 4, !dbg !4391
%62 = load i8, i8* %61, align 1, !dbg !4391
%63 = trunc i8 %62 to i1, !dbg !4391
br i1 %63, label %cmp.and14, label %if.done16, !dbg !4391
cmp.and14: ; preds = %switch.done
%64 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 3, !dbg !4391
%65 = load i8, i8* %64, align 1, !dbg !4391
%66 = trunc i8 %65 to i1, !dbg !4391
%spec.select = select i1 %66, i8 0, i8 1, !dbg !4391
br label %if.done16, !dbg !4391
if.done16: ; preds = %cmp.and14, %switch.done
%.032 = phi i8 [ 0, %switch.done ], [ %spec.select, %cmp.and14 ], !dbg !4372
call void @llvm.dbg.value(metadata i8 %.032, metadata !4355, metadata !DIExpression()), !dbg !4372
%67 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 1, !dbg !4392
%68 = load i8, i8* %67, align 1, !dbg !4392
%69 = trunc i8 %68 to i1, !dbg !4392
%70 = or i8 %.032, 2
%spec.select33 = select i1 %69, i8 %70, i8 %.032, !dbg !4392
call void @llvm.dbg.value(metadata i8 %spec.select33, metadata !4355, metadata !DIExpression()), !dbg !4372
%71 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 2, !dbg !4393
%72 = load i8, i8* %71, align 1, !dbg !4393
%73 = trunc i8 %72 to i1, !dbg !4393
%74 = or i8 %spec.select33, 4, !dbg !4393
%.2 = select i1 %73, i8 %74, i8 %spec.select33, !dbg !4393
call void @llvm.dbg.value(metadata i8 %.2, metadata !4355, metadata !DIExpression()), !dbg !4372
%75 = bitcast %..string* %14 to i8*, !dbg !4369
call void @llvm.memset.p0i8.i64(i8* %75, i8 0, i64 16, i1 false), !dbg !4369
%76 = bitcast [2 x i64]* %15 to %..string*, !dbg !4369
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %76, align 8, !dbg !4369
%77 = load [2 x i64], [2 x i64]* %15, align 8, !dbg !4369
call void @runtime.slice_expr_error_lo_hi([2 x i64] %77, i32 694, i32 30, i64 0, i64 256, i64 256), !dbg !4369
%78 = getelementptr [256 x i8], [256 x i8]* %13, i64 0, i64 0, !dbg !4369
%79 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %16, i32 0, i32 0, !dbg !4369
store i8* %78, i8** %79, align 8, !dbg !4369
%80 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %16, i32 0, i32 1, !dbg !4369
store i64 256, i64* %80, align 8, !dbg !4369
%81 = bitcast { i8*, i64 }* %16 to [2 x i64]*, !dbg !4369
%82 = load [2 x i64], [2 x i64]* %81, align 8, !dbg !4369
%83 = bitcast %..string* %7 to [2 x i64]*, !dbg !4369
%84 = load [2 x i64], [2 x i64]* %83, align 8, !dbg !4369
%85 = call [2 x i64] @strconv.append_bits([2 x i64] %82, i64 %1, i64 %2, i1 %3, i64 %4, [2 x i64] %84, i8 %.2, i8* %__.context_ptr), !dbg !4369
%86 = bitcast %..string* %17 to [2 x i64]*, !dbg !4369
store [2 x i64] %85, [2 x i64]* %86, align 8, !dbg !4369
%87 = bitcast %..string* %17 to i8*, !dbg !4369
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %75, i8* align 8 %87, i64 16, i1 false), !dbg !4369
%88 = load i8, i8* %61, align 1, !dbg !4394
%89 = trunc i8 %88 to i1, !dbg !4394
br i1 %89, label %cmp.and21, label %if.done31, !dbg !4394
cmp.and21: ; preds = %if.done16
%90 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 3, !dbg !4394
%91 = load i8, i8* %90, align 1, !dbg !4394
%92 = trunc i8 %91 to i1, !dbg !4394
br i1 %92, label %cmp.and22, label %if.done31, !dbg !4394
cmp.and22: ; preds = %cmp.and21
%93 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 9, !dbg !4394
%94 = load i64, i64* %93, align 8, !dbg !4394
%95 = icmp eq i64 %94, 0, !dbg !4394
br i1 %95, label %if.then23, label %if.done31, !dbg !4394
if.then23: ; preds = %cmp.and22
call void @llvm.dbg.value(metadata i8 0, metadata !4357, metadata !DIExpression()), !dbg !4395
call void @llvm.dbg.value(metadata i8 0, metadata !4357, metadata !DIExpression()), !dbg !4395
%96 = sub i64 %2, 2, !dbg !4396
%97 = lshr i64 %96, 1, !dbg !4396
%98 = shl i64 %96, 63, !dbg !4396
%99 = or i64 %97, %98, !dbg !4396
switch i64 %99, label %switch.done28 [
i64 0, label %switch.case.body24
i64 3, label %switch.case.body25
i64 5, label %switch.case.body26
i64 7, label %switch.case.body27
], !dbg !4396
switch.case.body24: ; preds = %if.then23
call void @llvm.dbg.value(metadata i8 98, metadata !4357, metadata !DIExpression()), !dbg !4395
br label %switch.done28, !dbg !4396
switch.case.body25: ; preds = %if.then23
call void @llvm.dbg.value(metadata i8 111, metadata !4357, metadata !DIExpression()), !dbg !4395
br label %switch.done28, !dbg !4396
switch.case.body26: ; preds = %if.then23
call void @llvm.dbg.value(metadata i8 122, metadata !4357, metadata !DIExpression()), !dbg !4395
br label %switch.done28, !dbg !4396
switch.case.body27: ; preds = %if.then23
call void @llvm.dbg.value(metadata i8 120, metadata !4357, metadata !DIExpression()), !dbg !4395
br label %switch.done28, !dbg !4396
switch.done28: ; preds = %switch.case.body27, %switch.case.body26, %switch.case.body25, %switch.case.body24, %if.then23
%.0 = phi i8 [ 0, %if.then23 ], [ 120, %switch.case.body27 ], [ 122, %switch.case.body26 ], [ 111, %switch.case.body25 ], [ 98, %switch.case.body24 ], !dbg !4395
call void @llvm.dbg.value(metadata i8 %.0, metadata !4357, metadata !DIExpression()), !dbg !4395
%100 = icmp ne i8 %.0, 0, !dbg !4397
br i1 %100, label %if.then29, label %if.done31, !dbg !4397
if.then29: ; preds = %switch.done28
%101 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 13, !dbg !4398
%102 = bitcast %io.Writer* %101 to [2 x i64]*, !dbg !4398
%103 = load [2 x i64], [2 x i64]* %102, align 8, !dbg !4398
%104 = call i32 @io.write_byte_to_writer([2 x i64] %103, i8 48, i8* %__.context_ptr), !dbg !4398
%105 = load [2 x i64], [2 x i64]* %102, align 8, !dbg !4401
%106 = call i32 @io.write_byte_to_writer([2 x i64] %105, i8 %.0, i8* %__.context_ptr), !dbg !4401
br label %if.done31, !dbg !4397
if.done31: ; preds = %switch.done28, %if.then29, %cmp.and22, %cmp.and21, %if.done16
call void @llvm.dbg.value(metadata i8 0, metadata !4360, metadata !DIExpression()), !dbg !4372
%107 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 3, !dbg !4402
%108 = load i8, i8* %107, align 1, !dbg !4402
call void @llvm.dbg.value(metadata i8 %108, metadata !4360, metadata !DIExpression()), !dbg !4372
store i8 0, i8* %107, align 1, !dbg !4403
%109 = bitcast %..string* %14 to [2 x i64]*, !dbg !4404
%110 = load [2 x i64], [2 x i64]* %109, align 8, !dbg !4404
call void @fmt._pad(%fmt.Info* %0, [2 x i64] %110, i8* %__.context_ptr), !dbg !4404
store i8 %108, i8* %107, align 1, !dbg !4405
ret void, !dbg !4371
}
; Function Attrs: nounwind
define dso_local float @__gnu_h2f_ieee(i16 %0) #0 !dbg !4406 {
decls:
call void @llvm.dbg.declare(metadata %__gnu_h2f_ieee.fp32-2* %1, metadata !4411, metadata !DIExpression()), !dbg !4418
%1 = alloca %__gnu_h2f_ieee.fp32-2, align 4, !dbg !4418
call void @llvm.dbg.declare(metadata %__gnu_h2f_ieee.fp32-2* %2, metadata !4416, metadata !DIExpression()), !dbg !4419
%2 = alloca %__gnu_h2f_ieee.fp32-2, align 4, !dbg !4419
call void @llvm.dbg.declare(metadata %__gnu_h2f_ieee.fp32-2* %3, metadata !4417, metadata !DIExpression()), !dbg !4420
%3 = alloca %__gnu_h2f_ieee.fp32-2, align 4, !dbg !4419
call void @llvm.dbg.value(metadata i16 %0, metadata !4410, metadata !DIExpression()), !dbg !4421
%4 = bitcast %__gnu_h2f_ieee.fp32-2* %1 to i8*, !dbg !4418
call void @llvm.memset.p0i8.i64(i8* %4, i8 0, i64 4, i1 false), !dbg !4418
%5 = bitcast %__gnu_h2f_ieee.fp32-2* %2 to i8*, !dbg !4419
call void @llvm.memset.p0i8.i64(i8* %5, i8 0, i64 4, i1 false), !dbg !4419
%6 = bitcast %__gnu_h2f_ieee.fp32-2* %3 to i8*, !dbg !4419
call void @llvm.memset.p0i8.i64(i8* %6, i8 0, i64 4, i1 false), !dbg !4419
%7 = bitcast %__gnu_h2f_ieee.fp32-2* %2 to i32*, !dbg !4422
store i32 2004877312, i32* %7, align 4, !dbg !4422
%8 = bitcast %__gnu_h2f_ieee.fp32-2* %3 to i32*, !dbg !4423
store i32 1199570944, i32* %8, align 4, !dbg !4423
%9 = bitcast %__gnu_h2f_ieee.fp32-2* %1 to i32*, !dbg !4424
%10 = and i16 %0, 32767, !dbg !4424
%11 = zext i16 %10 to i32, !dbg !4424
%12 = shl i32 %11, 13, !dbg !4424
store i32 %12, i32* %9, align 4, !dbg !4424
%13 = bitcast %__gnu_h2f_ieee.fp32-2* %1 to float*, !dbg !4425
%14 = bitcast %__gnu_h2f_ieee.fp32-2* %2 to float*, !dbg !4425
%15 = load float, float* %14, align 4, !dbg !4425
%16 = load float, float* %13, align 4, !dbg !4425
%17 = fmul float %16, %15, !dbg !4425
store float %17, float* %13, align 4, !dbg !4425
%18 = bitcast %__gnu_h2f_ieee.fp32-2* %3 to float*, !dbg !4426
%19 = load float, float* %18, align 4, !dbg !4426
%20 = fcmp oge float %17, %19, !dbg !4426
br i1 %20, label %if.then, label %if.done, !dbg !4426
if.then: ; preds = %decls
%21 = load i32, i32* %9, align 4, !dbg !4427
%22 = or i32 %21, 2139095040, !dbg !4427
store i32 %22, i32* %9, align 4, !dbg !4427
br label %if.done, !dbg !4426
if.done: ; preds = %if.then, %decls
%23 = and i16 %0, -32768, !dbg !4430
%24 = zext i16 %23 to i32, !dbg !4430
%25 = shl i32 %24, 16, !dbg !4430
%26 = load i32, i32* %9, align 4, !dbg !4430
%27 = or i32 %26, %25, !dbg !4430
store i32 %27, i32* %9, align 4, !dbg !4430
%28 = load float, float* %13, align 4, !dbg !4431
ret float %28, !dbg !4431
}
; Function Attrs: nounwind
define dso_local i16 @__gnu_f2h_ieee(float %0) #0 !dbg !4432 {
decls:
call void @llvm.dbg.value(metadata float %0, metadata !4434, metadata !DIExpression()), !dbg !4435
%1 = call i16 @__truncsfhf2(float %0), !dbg !4436
ret i16 %1, !dbg !4436
}
define internal void @fmt._fmt_int_128(%fmt.Info* %0, i128 %1, i64 %2, i1 zeroext %3, i64 %4, [2 x i64] %5, i8* noalias nocapture nonnull %__.context_ptr) !dbg !4438 {
decls:
%6 = alloca %..string, align 8
call void @llvm.dbg.declare(metadata %..string* %7, metadata !4447, metadata !DIExpression()), !dbg !4468
%7 = alloca %..string, align 8
%8 = alloca { i128, i8 }, align 16, !dbg !4469
%9 = alloca [2 x i64], align 8, !dbg !4470
%10 = alloca %runtime.Source_Code_Location, align 8, !dbg !4470
%11 = alloca [2 x i64], align 8, !dbg !4473
%12 = alloca %runtime.Source_Code_Location, align 8, !dbg !4473
call void @llvm.dbg.declare(metadata [256 x i8]* %13, metadata !4460, metadata !DIExpression()), !dbg !4475
%13 = alloca [256 x i8], align 1, !dbg !4475
call void @llvm.dbg.declare(metadata %..string* %14, metadata !4463, metadata !DIExpression()), !dbg !4476
%14 = alloca %..string, align 8, !dbg !4476
%15 = alloca [2 x i64], align 8, !dbg !4476
%16 = alloca { i8*, i64 }, align 8, !dbg !4476
%17 = alloca %..string, align 8, !dbg !4476
call void @llvm.dbg.value(metadata %fmt.Info* %0, metadata !4442, metadata !DIExpression()), !dbg !4477
call void @llvm.dbg.value(metadata i128 %1, metadata !4443, metadata !DIExpression()), !dbg !4477
call void @llvm.dbg.value(metadata i64 %2, metadata !4444, metadata !DIExpression()), !dbg !4477
call void @llvm.dbg.value(metadata i8 undef, metadata !4445, metadata !DIExpression()), !dbg !4477
call void @llvm.dbg.value(metadata i64 %4, metadata !4446, metadata !DIExpression()), !dbg !4477
%18 = bitcast %..string* %6 to [2 x i64]*
store [2 x i64] %5, [2 x i64]* %18, align 8
%19 = bitcast %..string* %7 to i8*
%20 = bitcast %..string* %6 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %19, i8* align 8 %20, i64 16, i1 false)
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !4448, metadata !DIExpression()), !dbg !4478
call void @llvm.dbg.value(metadata i8 0, metadata !4449, metadata !DIExpression()), !dbg !4479
%21 = bitcast { i128, i8 }* %8 to i8*, !dbg !4469
call void @llvm.memset.p0i8.i64(i8* %21, i8 0, i64 24, i1 false), !dbg !4469
call void @strconv.is_integer_negative_128({ i128, i8 }* %8, i128 %1, i1 %3, i64 %4, i8* %__.context_ptr), !dbg !4469
call void @llvm.dbg.value(metadata i8 undef, metadata !4449, metadata !DIExpression()), !dbg !4479
%22 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 5, !dbg !4480
%23 = load i8, i8* %22, align 1, !dbg !4480
%24 = trunc i8 %23 to i1, !dbg !4480
br i1 %24, label %if.then, label %cmp.or, !dbg !4480
cmp.or: ; preds = %decls
%25 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 6, !dbg !4480
%26 = load i8, i8* %25, align 1, !dbg !4480
%27 = trunc i8 %26 to i1, !dbg !4480
br i1 %27, label %if.then, label %if.done2, !dbg !4480
if.then: ; preds = %cmp.or, %decls
call void @llvm.dbg.value(metadata i64 0, metadata !4451, metadata !DIExpression()), !dbg !4481
%28 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 7, !dbg !4482
%29 = load i64, i64* %28, align 8, !dbg !4482
%30 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 8, !dbg !4482
%31 = load i64, i64* %30, align 8, !dbg !4482
%32 = add i64 %29, %31, !dbg !4482
%33 = add i64 %32, 3, !dbg !4482
call void @llvm.dbg.value(metadata i64 %33, metadata !4451, metadata !DIExpression()), !dbg !4481
%34 = icmp sgt i64 %33, 256, !dbg !4483
br i1 %34, label %if.then1, label %if.done2, !dbg !4483
if.then1: ; preds = %if.then
%35 = bitcast [2 x i64]* %9 to %..string*, !dbg !4470
store %..string { i8* getelementptr inbounds ([54 x i8], [54 x i8]* @"csbs$ba", i64 0, i64 0), i64 53 }, %..string* %35, align 8, !dbg !4470
%36 = load [2 x i64], [2 x i64]* %9, align 8, !dbg !4470
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, i32 724, i32 4, %..string { i8* getelementptr inbounds ([13 x i8], [13 x i8]* @"csbs$bd", i64 0, i64 0), i64 12 } }, %runtime.Source_Code_Location* %10, align 8, !dbg !4470
call void @runtime.panic([2 x i64] %36, %runtime.Source_Code_Location* %10, i8* %__.context_ptr), !dbg !4470
unreachable, !dbg !4470
if.done2: ; preds = %if.then, %cmp.or
call void @llvm.dbg.value(metadata i64 0, metadata !4454, metadata !DIExpression()), !dbg !4479
call void @llvm.dbg.value(metadata i64 0, metadata !4454, metadata !DIExpression()), !dbg !4479
%37 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 6, !dbg !4484
%38 = load i8, i8* %37, align 1, !dbg !4484
%39 = trunc i8 %38 to i1, !dbg !4484
br i1 %39, label %if.then3, label %if.else, !dbg !4484
if.then3: ; preds = %if.done2
%40 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 8, !dbg !4485
%41 = load i64, i64* %40, align 8, !dbg !4485
call void @llvm.dbg.value(metadata i64 %41, metadata !4454, metadata !DIExpression()), !dbg !4479
%42 = icmp eq i64 %41, 0, !dbg !4486
br i1 %42, label %cmp.and, label %if.done13, !dbg !4486
cmp.and: ; preds = %if.then3
%43 = icmp eq i128 %1, 0, !dbg !4486
br i1 %43, label %if.then4, label %if.done13, !dbg !4486
if.then4: ; preds = %cmp.and
call void @llvm.dbg.value(metadata i8 0, metadata !4455, metadata !DIExpression()), !dbg !4487
%44 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 3, !dbg !4488
%45 = load i8, i8* %44, align 1, !dbg !4488
call void @llvm.dbg.value(metadata i8 %45, metadata !4455, metadata !DIExpression()), !dbg !4487
store i8 0, i8* %44, align 1, !dbg !4489
%46 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 7, !dbg !4490
%47 = load i64, i64* %46, align 8, !dbg !4490
call void @fmt.fmt_write_padding(%fmt.Info* %0, i64 %47, i8* %__.context_ptr), !dbg !4490
store i8 %45, i8* %44, align 1, !dbg !4491
ret void, !dbg !4492
if.else: ; preds = %if.done2
%48 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 3, !dbg !4493
%49 = load i8, i8* %48, align 1, !dbg !4493
%50 = trunc i8 %49 to i1, !dbg !4493
br i1 %50, label %cmp.and6, label %if.done13, !dbg !4493
cmp.and6: ; preds = %if.else
%51 = load i8, i8* %22, align 1, !dbg !4493
%52 = trunc i8 %51 to i1, !dbg !4493
br i1 %52, label %if.then7, label %if.done13, !dbg !4493
if.then7: ; preds = %cmp.and6
call void @llvm.dbg.value(metadata i64 undef, metadata !4454, metadata !DIExpression()), !dbg !4479
br label %if.done13, !dbg !4495
if.done13: ; preds = %if.then7, %if.else, %cmp.and6, %if.then3, %cmp.and
%53 = sub i64 %2, 2, !dbg !4497
%54 = lshr i64 %53, 1, !dbg !4497
%55 = shl i64 %53, 63, !dbg !4497
%56 = or i64 %54, %55, !dbg !4497
switch i64 %56, label %switch.default.body [
i64 0, label %switch.done
i64 3, label %switch.done
i64 4, label %switch.done
i64 5, label %switch.done
i64 7, label %switch.done
], !dbg !4497
switch.default.body: ; preds = %if.done13
%57 = bitcast [2 x i64]* %11 to %..string*, !dbg !4473
store %..string { i8* getelementptr inbounds ([31 x i8], [31 x i8]* @"csbs$bc", i64 0, i64 0), i64 30 }, %..string* %57, align 8, !dbg !4473
%58 = load [2 x i64], [2 x i64]* %11, align 8, !dbg !4473
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, i32 750, i32 3, %..string { i8* getelementptr inbounds ([13 x i8], [13 x i8]* @"csbs$bd", i64 0, i64 0), i64 12 } }, %runtime.Source_Code_Location* %12, align 8, !dbg !4473
call void @runtime.panic([2 x i64] %58, %runtime.Source_Code_Location* %12, i8* %__.context_ptr), !dbg !4473
unreachable, !dbg !4473
switch.done: ; preds = %if.done13, %if.done13, %if.done13, %if.done13, %if.done13
%59 = bitcast [256 x i8]* %13 to i8*, !dbg !4475
call void @llvm.memset.p0i8.i64(i8* %59, i8 0, i64 256, i1 false), !dbg !4475
call void @llvm.dbg.value(metadata i64 0, metadata !4461, metadata !DIExpression()), !dbg !4479
call void @llvm.dbg.value(metadata i64 0, metadata !4461, metadata !DIExpression()), !dbg !4479
call void @llvm.dbg.value(metadata i8 0, metadata !4462, metadata !DIExpression()), !dbg !4479
%60 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 4, !dbg !4498
%61 = load i8, i8* %60, align 1, !dbg !4498
%62 = trunc i8 %61 to i1, !dbg !4498
br i1 %62, label %cmp.and14, label %if.done16, !dbg !4498
cmp.and14: ; preds = %switch.done
%63 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 3, !dbg !4498
%64 = load i8, i8* %63, align 1, !dbg !4498
%65 = trunc i8 %64 to i1, !dbg !4498
%spec.select = select i1 %65, i8 0, i8 1, !dbg !4498
br label %if.done16, !dbg !4498
if.done16: ; preds = %cmp.and14, %switch.done
%.032 = phi i8 [ 0, %switch.done ], [ %spec.select, %cmp.and14 ], !dbg !4479
call void @llvm.dbg.value(metadata i8 %.032, metadata !4462, metadata !DIExpression()), !dbg !4479
%66 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 1, !dbg !4499
%67 = load i8, i8* %66, align 1, !dbg !4499
%68 = trunc i8 %67 to i1, !dbg !4499
%69 = or i8 %.032, 2
%spec.select33 = select i1 %68, i8 %69, i8 %.032, !dbg !4499
call void @llvm.dbg.value(metadata i8 %spec.select33, metadata !4462, metadata !DIExpression()), !dbg !4479
%70 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 2, !dbg !4500
%71 = load i8, i8* %70, align 1, !dbg !4500
%72 = trunc i8 %71 to i1, !dbg !4500
%73 = or i8 %spec.select33, 4, !dbg !4500
%.2 = select i1 %72, i8 %73, i8 %spec.select33, !dbg !4500
call void @llvm.dbg.value(metadata i8 %.2, metadata !4462, metadata !DIExpression()), !dbg !4479
%74 = bitcast %..string* %14 to i8*, !dbg !4476
call void @llvm.memset.p0i8.i64(i8* %74, i8 0, i64 16, i1 false), !dbg !4476
%75 = bitcast [2 x i64]* %15 to %..string*, !dbg !4476
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %75, align 8, !dbg !4476
%76 = load [2 x i64], [2 x i64]* %15, align 8, !dbg !4476
call void @runtime.slice_expr_error_lo_hi([2 x i64] %76, i32 760, i32 34, i64 0, i64 256, i64 256), !dbg !4476
%77 = getelementptr [256 x i8], [256 x i8]* %13, i64 0, i64 0, !dbg !4476
%78 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %16, i32 0, i32 0, !dbg !4476
store i8* %77, i8** %78, align 8, !dbg !4476
%79 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %16, i32 0, i32 1, !dbg !4476
store i64 256, i64* %79, align 8, !dbg !4476
%80 = bitcast { i8*, i64 }* %16 to [2 x i64]*, !dbg !4476
%81 = load [2 x i64], [2 x i64]* %80, align 8, !dbg !4476
%82 = bitcast %..string* %7 to [2 x i64]*, !dbg !4476
%83 = load [2 x i64], [2 x i64]* %82, align 8, !dbg !4476
%84 = call [2 x i64] @strconv.append_bits_128([2 x i64] %81, i128 %1, i64 %2, i1 %3, i64 %4, [2 x i64] %83, i8 %.2, i8* %__.context_ptr), !dbg !4476
%85 = bitcast %..string* %17 to [2 x i64]*, !dbg !4476
store [2 x i64] %84, [2 x i64]* %85, align 8, !dbg !4476
%86 = bitcast %..string* %17 to i8*, !dbg !4476
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %74, i8* align 8 %86, i64 16, i1 false), !dbg !4476
%87 = load i8, i8* %60, align 1, !dbg !4501
%88 = trunc i8 %87 to i1, !dbg !4501
br i1 %88, label %cmp.and21, label %if.done31, !dbg !4501
cmp.and21: ; preds = %if.done16
%89 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 3, !dbg !4501
%90 = load i8, i8* %89, align 1, !dbg !4501
%91 = trunc i8 %90 to i1, !dbg !4501
br i1 %91, label %cmp.and22, label %if.done31, !dbg !4501
cmp.and22: ; preds = %cmp.and21
%92 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 9, !dbg !4501
%93 = load i64, i64* %92, align 8, !dbg !4501
%94 = icmp eq i64 %93, 0, !dbg !4501
br i1 %94, label %if.then23, label %if.done31, !dbg !4501
if.then23: ; preds = %cmp.and22
call void @llvm.dbg.value(metadata i8 0, metadata !4464, metadata !DIExpression()), !dbg !4502
call void @llvm.dbg.value(metadata i8 0, metadata !4464, metadata !DIExpression()), !dbg !4502
%95 = sub i64 %2, 2, !dbg !4503
%96 = lshr i64 %95, 1, !dbg !4503
%97 = shl i64 %95, 63, !dbg !4503
%98 = or i64 %96, %97, !dbg !4503
switch i64 %98, label %switch.done28 [
i64 0, label %switch.case.body24
i64 3, label %switch.case.body25
i64 5, label %switch.case.body26
i64 7, label %switch.case.body27
], !dbg !4503
switch.case.body24: ; preds = %if.then23
call void @llvm.dbg.value(metadata i8 98, metadata !4464, metadata !DIExpression()), !dbg !4502
br label %switch.done28, !dbg !4503
switch.case.body25: ; preds = %if.then23
call void @llvm.dbg.value(metadata i8 111, metadata !4464, metadata !DIExpression()), !dbg !4502
br label %switch.done28, !dbg !4503
switch.case.body26: ; preds = %if.then23
call void @llvm.dbg.value(metadata i8 122, metadata !4464, metadata !DIExpression()), !dbg !4502
br label %switch.done28, !dbg !4503
switch.case.body27: ; preds = %if.then23
call void @llvm.dbg.value(metadata i8 120, metadata !4464, metadata !DIExpression()), !dbg !4502
br label %switch.done28, !dbg !4503
switch.done28: ; preds = %switch.case.body27, %switch.case.body26, %switch.case.body25, %switch.case.body24, %if.then23
%.0 = phi i8 [ 0, %if.then23 ], [ 120, %switch.case.body27 ], [ 122, %switch.case.body26 ], [ 111, %switch.case.body25 ], [ 98, %switch.case.body24 ], !dbg !4502
call void @llvm.dbg.value(metadata i8 %.0, metadata !4464, metadata !DIExpression()), !dbg !4502
%99 = icmp ne i8 %.0, 0, !dbg !4504
br i1 %99, label %if.then29, label %if.done31, !dbg !4504
if.then29: ; preds = %switch.done28
%100 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 13, !dbg !4505
%101 = bitcast %io.Writer* %100 to [2 x i64]*, !dbg !4505
%102 = load [2 x i64], [2 x i64]* %101, align 8, !dbg !4505
%103 = call i32 @io.write_byte_to_writer([2 x i64] %102, i8 48, i8* %__.context_ptr), !dbg !4505
%104 = load [2 x i64], [2 x i64]* %101, align 8, !dbg !4508
%105 = call i32 @io.write_byte_to_writer([2 x i64] %104, i8 %.0, i8* %__.context_ptr), !dbg !4508
br label %if.done31, !dbg !4504
if.done31: ; preds = %switch.done28, %if.then29, %cmp.and22, %cmp.and21, %if.done16
call void @llvm.dbg.value(metadata i8 0, metadata !4467, metadata !DIExpression()), !dbg !4479
%106 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 3, !dbg !4509
%107 = load i8, i8* %106, align 1, !dbg !4509
call void @llvm.dbg.value(metadata i8 %107, metadata !4467, metadata !DIExpression()), !dbg !4479
store i8 0, i8* %106, align 1, !dbg !4510
%108 = bitcast %..string* %14 to [2 x i64]*, !dbg !4511
%109 = load [2 x i64], [2 x i64]* %108, align 8, !dbg !4511
call void @fmt._pad(%fmt.Info* %0, [2 x i64] %109, i8* %__.context_ptr), !dbg !4511
store i8 %107, i8* %106, align 1, !dbg !4512
ret void, !dbg !4478
}
; Function Attrs: nounwind
define dso_local float @__extendhfsf2(i16 %0) #0 !dbg !4513 {
decls:
call void @llvm.dbg.value(metadata i16 %0, metadata !4515, metadata !DIExpression()), !dbg !4516
%1 = call float @__gnu_h2f_ieee(i16 %0), !dbg !4517
ret float %1, !dbg !4517
}
; Function Attrs: nounwind
define dso_local double @__floattidf(i128 %0, i8* noalias nocapture nonnull %__.context_ptr) #0 !dbg !4519 {
decls:
call void @llvm.dbg.declare(metadata [2 x i32]* %1, metadata !4530, metadata !DIExpression()), !dbg !4532
%1 = alloca [2 x i32], align 4, !dbg !4532
call void @llvm.dbg.value(metadata i128 %0, metadata !4523, metadata !DIExpression()), !dbg !4533
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !4524, metadata !DIExpression()), !dbg !4534
%2 = icmp eq i128 %0, 0, !dbg !4535
br i1 %2, label %if.then, label %if.done, !dbg !4535
if.then: ; preds = %decls
ret double 0.000000e+00, !dbg !4536
if.done: ; preds = %decls
call void @llvm.dbg.value(metadata i128 0, metadata !4525, metadata !DIExpression()), !dbg !4539
call void @llvm.dbg.value(metadata i128 %0, metadata !4525, metadata !DIExpression()), !dbg !4539
call void @llvm.dbg.value(metadata i128 0, metadata !4527, metadata !DIExpression()), !dbg !4539
%3 = ashr i128 %0, 127, !dbg !4540
call void @llvm.dbg.value(metadata i128 %3, metadata !4527, metadata !DIExpression()), !dbg !4539
%4 = xor i128 %0, %3, !dbg !4541
%5 = sub i128 %4, %3, !dbg !4541
call void @llvm.dbg.value(metadata i128 %5, metadata !4525, metadata !DIExpression()), !dbg !4539
call void @llvm.dbg.value(metadata i128 0, metadata !4528, metadata !DIExpression()), !dbg !4539
%6 = call i128 @llvm.ctlz.i128(i128 %5, i1 false), !dbg !4542
%7 = sub i128 128, %6, !dbg !4542
call void @llvm.dbg.value(metadata i128 %7, metadata !4528, metadata !DIExpression()), !dbg !4539
call void @llvm.dbg.value(metadata i32 0, metadata !4529, metadata !DIExpression()), !dbg !4539
%8 = sub i128 %7, 1, !dbg !4543
%9 = trunc i128 %8 to i32, !dbg !4543
call void @llvm.dbg.value(metadata i32 %9, metadata !4529, metadata !DIExpression()), !dbg !4539
%10 = icmp sgt i128 %7, 53, !dbg !4544
br i1 %10, label %if.then1, label %if.else, !dbg !4544
if.then1: ; preds = %if.done
switch i128 %7, label %switch.default.body [
i128 54, label %switch.case.body
i128 55, label %switch.done
], !dbg !4545
switch.case.body: ; preds = %if.then1
%11 = shl i128 %5, 1, !dbg !4548
call void @llvm.dbg.value(metadata i128 %11, metadata !4525, metadata !DIExpression()), !dbg !4539
br label %switch.done, !dbg !4545
switch.default.body: ; preds = %if.then1
%12 = sub i128 %7, 55, !dbg !4550
%13 = icmp ult i128 %12, 128, !dbg !4550
%14 = lshr i128 %5, %12, !dbg !4550
%15 = select i1 %13, i128 %14, i128 0, !dbg !4550
%16 = sub i128 183, %7, !dbg !4550
%17 = icmp ult i128 %16, 128, !dbg !4550
%18 = lshr i128 -1, %16, !dbg !4550
%19 = select i1 %17, i128 %18, i128 0, !dbg !4550
%20 = and i128 %5, %19, !dbg !4550
%21 = icmp ne i128 %20, 0, !dbg !4550
%22 = zext i1 %21 to i128, !dbg !4550
%23 = or i128 %15, %22, !dbg !4550
call void @llvm.dbg.value(metadata i128 %23, metadata !4525, metadata !DIExpression()), !dbg !4539
br label %switch.done, !dbg !4545
switch.done: ; preds = %if.then1, %switch.default.body, %switch.case.body
%.06 = phi i128 [ %23, %switch.default.body ], [ %11, %switch.case.body ], [ %5, %if.then1 ], !dbg !4539
call void @llvm.dbg.value(metadata i128 %.06, metadata !4525, metadata !DIExpression()), !dbg !4539
%24 = and i128 %.06, 4, !dbg !4551
%25 = icmp ne i128 %24, 0, !dbg !4551
%26 = zext i1 %25 to i128, !dbg !4551
%27 = or i128 %.06, %26, !dbg !4551
call void @llvm.dbg.value(metadata i128 %27, metadata !4525, metadata !DIExpression()), !dbg !4539
%28 = add i128 %27, 1, !dbg !4552
call void @llvm.dbg.value(metadata i128 %28, metadata !4525, metadata !DIExpression()), !dbg !4539
%29 = ashr i128 %28, 2, !dbg !4553
call void @llvm.dbg.value(metadata i128 %29, metadata !4525, metadata !DIExpression()), !dbg !4539
%30 = and i128 %29, 9007199254740992, !dbg !4554
%31 = icmp ne i128 %30, 0, !dbg !4554
%32 = ashr i128 %29, 1, !dbg !4554
%33 = add i32 %9, 1, !dbg !4554
%.17 = select i1 %31, i128 %32, i128 %29, !dbg !4554
%.0 = select i1 %31, i32 %33, i32 %9, !dbg !4554
br label %if.done5, !dbg !4554
if.else: ; preds = %if.done
%34 = sub i128 53, %7, !dbg !4555
%35 = icmp ult i128 %34, 128, !dbg !4555
%36 = shl i128 %5, %34, !dbg !4555
%37 = select i1 %35, i128 %36, i128 0, !dbg !4555
call void @llvm.dbg.value(metadata i128 %37, metadata !4525, metadata !DIExpression()), !dbg !4539
br label %if.done5, !dbg !4544
if.done5: ; preds = %switch.done, %if.else
%.2 = phi i128 [ %37, %if.else ], [ %.17, %switch.done ], !dbg !4557
%.1 = phi i32 [ %9, %if.else ], [ %.0, %switch.done ], !dbg !4539
call void @llvm.dbg.value(metadata i32 %.1, metadata !4529, metadata !DIExpression()), !dbg !4539
call void @llvm.dbg.value(metadata i128 %.2, metadata !4525, metadata !DIExpression()), !dbg !4539
%38 = bitcast [2 x i32]* %1 to i8*, !dbg !4532
call void @llvm.memset.p0i8.i64(i8* %38, i8 0, i64 8, i1 false), !dbg !4532
%39 = getelementptr [2 x i32], [2 x i32]* %1, i64 0, i64 0, !dbg !4558
%40 = trunc i128 %3 to i32, !dbg !4558
%41 = and i32 %40, -2147483648, !dbg !4558
%42 = add i32 %.1, 1023, !dbg !4558
%43 = shl i32 %42, 20, !dbg !4558
%44 = or i32 %41, %43, !dbg !4558
%45 = trunc i128 %.2 to i64, !dbg !4558
%46 = lshr i64 %45, 32, !dbg !4558
%47 = and i64 %46, 1048575, !dbg !4558
%48 = trunc i64 %47 to i32, !dbg !4558
%49 = or i32 %44, %48, !dbg !4558
store i32 %49, i32* %39, align 4, !dbg !4558
%50 = getelementptr [2 x i32], [2 x i32]* %1, i64 0, i64 1, !dbg !4559
%51 = trunc i128 %.2 to i32, !dbg !4559
store i32 %51, i32* %50, align 4, !dbg !4559
%52 = bitcast [2 x i32]* %1 to double*, !dbg !4560
%53 = load double, double* %52, align 8, !dbg !4560
ret double %53, !dbg !4560
}
define internal void @fmt.fmt_rune(%fmt.Info* %0, i32 %1, i32 %2, i8* noalias nocapture nonnull %__.context_ptr) !dbg !4561 {
decls:
%3 = alloca { i64, i32 }, align 8, !dbg !4569
call void @llvm.dbg.value(metadata %fmt.Info* %0, metadata !4565, metadata !DIExpression()), !dbg !4572
call void @llvm.dbg.value(metadata i32 %1, metadata !4566, metadata !DIExpression()), !dbg !4572
call void @llvm.dbg.value(metadata i32 %2, metadata !4567, metadata !DIExpression()), !dbg !4572
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !4568, metadata !DIExpression()), !dbg !4573
switch i32 %2, label %switch.default.body [
i32 99, label %switch.case.body
i32 114, label %switch.case.body
i32 118, label %switch.case.body
i32 113, label %switch.case.body1
], !dbg !4574
switch.case.body: ; preds = %decls, %decls, %decls
%4 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 13, !dbg !4569
%5 = bitcast %io.Writer* %4 to [2 x i64]*, !dbg !4569
%6 = load [2 x i64], [2 x i64]* %5, align 8, !dbg !4569
%7 = call [2 x i64] @io.write_rune([2 x i64] %6, i32 %1, i8* %__.context_ptr), !dbg !4569
%8 = bitcast { i64, i32 }* %3 to [2 x i64]*, !dbg !4569
store [2 x i64] %7, [2 x i64]* %8, align 8, !dbg !4569
br label %switch.done, !dbg !4574
switch.case.body1: ; preds = %decls
%9 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 13, !dbg !4575
%10 = bitcast %io.Writer* %9 to [2 x i64]*, !dbg !4575
%11 = load [2 x i64], [2 x i64]* %10, align 8, !dbg !4575
%12 = call i64 @strings.write_quoted_rune([2 x i64] %11, i32 %1, i8* %__.context_ptr), !dbg !4575
br label %switch.done, !dbg !4574
switch.default.body: ; preds = %decls
%13 = sext i32 %1 to i64, !dbg !4576
call void @fmt.fmt_int(%fmt.Info* %0, i64 %13, i1 false, i64 32, i32 %2, i8* %__.context_ptr), !dbg !4576
br label %switch.done, !dbg !4574
switch.done: ; preds = %switch.default.body, %switch.case.body1, %switch.case.body
ret void, !dbg !4573
}
; Function Attrs: nounwind
define dso_local double @__floattidf_unsigned(i128 %0, i8* noalias nocapture nonnull %__.context_ptr) #0 !dbg !4577 {
decls:
call void @llvm.dbg.declare(metadata [2 x i32]* %1, metadata !4587, metadata !DIExpression()), !dbg !4588
%1 = alloca [2 x i32], align 4, !dbg !4588
call void @llvm.dbg.value(metadata i128 %0, metadata !4581, metadata !DIExpression()), !dbg !4589
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !4582, metadata !DIExpression()), !dbg !4590
%2 = icmp eq i128 %0, 0, !dbg !4591
br i1 %2, label %if.then, label %if.done, !dbg !4591
if.then: ; preds = %decls
ret double 0.000000e+00, !dbg !4592
if.done: ; preds = %decls
call void @llvm.dbg.value(metadata i128 0, metadata !4583, metadata !DIExpression()), !dbg !4595
call void @llvm.dbg.value(metadata i128 %0, metadata !4583, metadata !DIExpression()), !dbg !4595
call void @llvm.dbg.value(metadata i128 0, metadata !4585, metadata !DIExpression()), !dbg !4595
%3 = call i128 @llvm.ctlz.i128(i128 %0, i1 false), !dbg !4596
%4 = sub i128 128, %3, !dbg !4596
call void @llvm.dbg.value(metadata i128 %4, metadata !4585, metadata !DIExpression()), !dbg !4595
call void @llvm.dbg.value(metadata i32 0, metadata !4586, metadata !DIExpression()), !dbg !4595
%5 = sub i128 %4, 1, !dbg !4597
%6 = trunc i128 %5 to i32, !dbg !4597
call void @llvm.dbg.value(metadata i32 %6, metadata !4586, metadata !DIExpression()), !dbg !4595
%7 = icmp ugt i128 %4, 53, !dbg !4598
br i1 %7, label %if.then1, label %if.else, !dbg !4598
if.then1: ; preds = %if.done
switch i128 %4, label %switch.default.body [
i128 54, label %switch.case.body
i128 55, label %switch.done
], !dbg !4599
switch.case.body: ; preds = %if.then1
%8 = shl i128 %0, 1, !dbg !4602
call void @llvm.dbg.value(metadata i128 %8, metadata !4583, metadata !DIExpression()), !dbg !4595
br label %switch.done, !dbg !4599
switch.default.body: ; preds = %if.then1
%9 = sub i128 %4, 55, !dbg !4604
%10 = icmp ult i128 %9, 128, !dbg !4604
%11 = lshr i128 %0, %9, !dbg !4604
%12 = select i1 %10, i128 %11, i128 0, !dbg !4604
%13 = sub i128 183, %4, !dbg !4604
%14 = icmp ult i128 %13, 128, !dbg !4604
%15 = lshr i128 -1, %13, !dbg !4604
%16 = select i1 %14, i128 %15, i128 0, !dbg !4604
%17 = and i128 %0, %16, !dbg !4604
%18 = icmp ne i128 %17, 0, !dbg !4604
%19 = zext i1 %18 to i128, !dbg !4604
%20 = or i128 %12, %19, !dbg !4604
call void @llvm.dbg.value(metadata i128 %20, metadata !4583, metadata !DIExpression()), !dbg !4595
br label %switch.done, !dbg !4599
switch.done: ; preds = %if.then1, %switch.default.body, %switch.case.body
%.06 = phi i128 [ %20, %switch.default.body ], [ %8, %switch.case.body ], [ %0, %if.then1 ], !dbg !4595
call void @llvm.dbg.value(metadata i128 %.06, metadata !4583, metadata !DIExpression()), !dbg !4595
%21 = and i128 %.06, 4, !dbg !4605
%22 = icmp ne i128 %21, 0, !dbg !4605
%23 = zext i1 %22 to i128, !dbg !4605
%24 = or i128 %.06, %23, !dbg !4605
call void @llvm.dbg.value(metadata i128 %24, metadata !4583, metadata !DIExpression()), !dbg !4595
%25 = add i128 %24, 1, !dbg !4606
call void @llvm.dbg.value(metadata i128 %25, metadata !4583, metadata !DIExpression()), !dbg !4595
%26 = lshr i128 %25, 2, !dbg !4607
call void @llvm.dbg.value(metadata i128 %26, metadata !4583, metadata !DIExpression()), !dbg !4595
%27 = and i128 %26, 9007199254740992, !dbg !4608
%28 = icmp ne i128 %27, 0, !dbg !4608
%29 = lshr i128 %26, 1, !dbg !4608
%30 = add i32 %6, 1, !dbg !4608
%.17 = select i1 %28, i128 %29, i128 %26, !dbg !4608
%.0 = select i1 %28, i32 %30, i32 %6, !dbg !4608
br label %if.done5, !dbg !4608
if.else: ; preds = %if.done
%31 = sub i128 53, %4, !dbg !4609
%32 = icmp ult i128 %31, 128, !dbg !4609
%33 = shl i128 %0, %31, !dbg !4609
%34 = select i1 %32, i128 %33, i128 0, !dbg !4609
call void @llvm.dbg.value(metadata i128 %34, metadata !4583, metadata !DIExpression()), !dbg !4595
br label %if.done5, !dbg !4598
if.done5: ; preds = %switch.done, %if.else
%.2 = phi i128 [ %34, %if.else ], [ %.17, %switch.done ], !dbg !4611
%.1 = phi i32 [ %6, %if.else ], [ %.0, %switch.done ], !dbg !4595
call void @llvm.dbg.value(metadata i32 %.1, metadata !4586, metadata !DIExpression()), !dbg !4595
call void @llvm.dbg.value(metadata i128 %.2, metadata !4583, metadata !DIExpression()), !dbg !4595
%35 = bitcast [2 x i32]* %1 to i8*, !dbg !4588
call void @llvm.memset.p0i8.i64(i8* %35, i8 0, i64 8, i1 false), !dbg !4588
%36 = getelementptr [2 x i32], [2 x i32]* %1, i64 0, i64 0, !dbg !4612
%37 = add i32 %.1, 1023, !dbg !4612
%38 = shl i32 %37, 20, !dbg !4612
%39 = trunc i128 %.2 to i64, !dbg !4612
%40 = lshr i64 %39, 32, !dbg !4612
%41 = and i64 %40, 1048575, !dbg !4612
%42 = trunc i64 %41 to i32, !dbg !4612
%43 = or i32 %38, %42, !dbg !4612
store i32 %43, i32* %36, align 4, !dbg !4612
%44 = getelementptr [2 x i32], [2 x i32]* %1, i64 0, i64 1, !dbg !4613
%45 = trunc i128 %.2 to i32, !dbg !4613
store i32 %45, i32* %44, align 4, !dbg !4613
%46 = bitcast [2 x i32]* %1 to double*, !dbg !4614
%47 = load double, double* %46, align 8, !dbg !4614
ret double %47, !dbg !4614
}
define internal void @fmt.fmt_int(%fmt.Info* %0, i64 %1, i1 zeroext %2, i64 %3, i32 %4, i8* noalias nocapture nonnull %__.context_ptr) !dbg !4615 {
decls:
%5 = alloca [2 x i64], align 8, !dbg !4628
%6 = alloca { i64, i32 }, align 8, !dbg !4628
call void @llvm.dbg.value(metadata %fmt.Info* %0, metadata !4619, metadata !DIExpression()), !dbg !4631
call void @llvm.dbg.value(metadata i64 %1, metadata !4620, metadata !DIExpression()), !dbg !4631
call void @llvm.dbg.value(metadata i8 undef, metadata !4621, metadata !DIExpression()), !dbg !4631
call void @llvm.dbg.value(metadata i64 %3, metadata !4622, metadata !DIExpression()), !dbg !4631
call void @llvm.dbg.value(metadata i32 %4, metadata !4623, metadata !DIExpression()), !dbg !4631
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !4624, metadata !DIExpression()), !dbg !4632
switch i32 %4, label %switch.default.body [
i32 118, label %switch.case.body
i32 98, label %switch.case.body1
i32 111, label %switch.case.body2
i32 105, label %switch.case.body3
i32 100, label %switch.case.body3
i32 122, label %switch.case.body4
i32 120, label %switch.case.body5
i32 88, label %switch.case.body6
i32 99, label %switch.case.body7
i32 114, label %switch.case.body7
i32 85, label %switch.case.body8
], !dbg !4633
switch.case.body: ; preds = %decls
%7 = load [2 x i64], [2 x i64]* bitcast (%..string* @fmt.__DIGITS_LOWER to [2 x i64]*), align 8, !dbg !4634
call void @fmt._fmt_int(%fmt.Info* %0, i64 %1, i64 10, i1 %2, i64 %3, [2 x i64] %7, i8* %__.context_ptr), !dbg !4634
br label %switch.done, !dbg !4633
switch.case.body1: ; preds = %decls
%8 = load [2 x i64], [2 x i64]* bitcast (%..string* @fmt.__DIGITS_LOWER to [2 x i64]*), align 8, !dbg !4635
call void @fmt._fmt_int(%fmt.Info* %0, i64 %1, i64 2, i1 %2, i64 %3, [2 x i64] %8, i8* %__.context_ptr), !dbg !4635
br label %switch.done, !dbg !4633
switch.case.body2: ; preds = %decls
%9 = load [2 x i64], [2 x i64]* bitcast (%..string* @fmt.__DIGITS_LOWER to [2 x i64]*), align 8, !dbg !4636
call void @fmt._fmt_int(%fmt.Info* %0, i64 %1, i64 8, i1 %2, i64 %3, [2 x i64] %9, i8* %__.context_ptr), !dbg !4636
br label %switch.done, !dbg !4633
switch.case.body3: ; preds = %decls, %decls
%10 = load [2 x i64], [2 x i64]* bitcast (%..string* @fmt.__DIGITS_LOWER to [2 x i64]*), align 8, !dbg !4637
call void @fmt._fmt_int(%fmt.Info* %0, i64 %1, i64 10, i1 %2, i64 %3, [2 x i64] %10, i8* %__.context_ptr), !dbg !4637
br label %switch.done, !dbg !4633
switch.case.body4: ; preds = %decls
%11 = load [2 x i64], [2 x i64]* bitcast (%..string* @fmt.__DIGITS_LOWER to [2 x i64]*), align 8, !dbg !4638
call void @fmt._fmt_int(%fmt.Info* %0, i64 %1, i64 12, i1 %2, i64 %3, [2 x i64] %11, i8* %__.context_ptr), !dbg !4638
br label %switch.done, !dbg !4633
switch.case.body5: ; preds = %decls
%12 = load [2 x i64], [2 x i64]* bitcast (%..string* @fmt.__DIGITS_LOWER to [2 x i64]*), align 8, !dbg !4639
call void @fmt._fmt_int(%fmt.Info* %0, i64 %1, i64 16, i1 %2, i64 %3, [2 x i64] %12, i8* %__.context_ptr), !dbg !4639
br label %switch.done, !dbg !4633
switch.case.body6: ; preds = %decls
%13 = load [2 x i64], [2 x i64]* bitcast (%..string* @fmt.__DIGITS_UPPER to [2 x i64]*), align 8, !dbg !4640
call void @fmt._fmt_int(%fmt.Info* %0, i64 %1, i64 16, i1 %2, i64 %3, [2 x i64] %13, i8* %__.context_ptr), !dbg !4640
br label %switch.done, !dbg !4633
switch.case.body7: ; preds = %decls, %decls
%14 = trunc i64 %1 to i32, !dbg !4641
call void @fmt.fmt_rune(%fmt.Info* %0, i32 %14, i32 %4, i8* %__.context_ptr), !dbg !4641
br label %switch.done, !dbg !4633
switch.case.body8: ; preds = %decls
call void @llvm.dbg.value(metadata i32 0, metadata !4625, metadata !DIExpression()), !dbg !4642
%15 = trunc i64 %1 to i32, !dbg !4643
call void @llvm.dbg.value(metadata i32 %15, metadata !4625, metadata !DIExpression()), !dbg !4642
%16 = icmp slt i32 %15, 0, !dbg !4644
br i1 %16, label %if.then, label %cmp.or, !dbg !4644
cmp.or: ; preds = %switch.case.body8
%17 = icmp sgt i32 %15, 1114111, !dbg !4644
br i1 %17, label %if.then, label %if.else, !dbg !4644
if.then: ; preds = %cmp.or, %switch.case.body8
call void @fmt.fmt_bad_verb(%fmt.Info* %0, i32 %4, i8* %__.context_ptr), !dbg !4645
br label %switch.done, !dbg !4644
if.else: ; preds = %cmp.or
%18 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 13, !dbg !4628
%19 = bitcast %io.Writer* %18 to [2 x i64]*, !dbg !4628
%20 = load [2 x i64], [2 x i64]* %19, align 8, !dbg !4628
%21 = bitcast [2 x i64]* %5 to %..string*, !dbg !4628
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$be", i64 0, i64 0), i64 2 }, %..string* %21, align 8, !dbg !4628
%22 = load [2 x i64], [2 x i64]* %5, align 8, !dbg !4628
%23 = call [2 x i64] @io.write_string([2 x i64] %20, [2 x i64] %22, i8* %__.context_ptr), !dbg !4628
%24 = bitcast { i64, i32 }* %6 to [2 x i64]*, !dbg !4628
store [2 x i64] %23, [2 x i64]* %24, align 8, !dbg !4628
%25 = load [2 x i64], [2 x i64]* bitcast (%..string* @fmt.__DIGITS_UPPER to [2 x i64]*), align 8, !dbg !4647
call void @fmt._fmt_int(%fmt.Info* %0, i64 %1, i64 16, i1 false, i64 %3, [2 x i64] %25, i8* %__.context_ptr), !dbg !4647
br label %switch.done, !dbg !4644
switch.default.body: ; preds = %decls
call void @fmt.fmt_bad_verb(%fmt.Info* %0, i32 %4, i8* %__.context_ptr), !dbg !4648
br label %switch.done, !dbg !4633
switch.done: ; preds = %if.then, %if.else, %switch.default.body, %switch.case.body7, %switch.case.body6, %switch.case.body5, %switch.case.body4, %switch.case.body3, %switch.case.body2, %switch.case.body1, %switch.case.body
ret void, !dbg !4632
}
; Function Attrs: nounwind
define dso_local i128 @__umodti3(i128 %0, i128 %1) #0 !dbg !4649 {
decls:
call void @llvm.dbg.declare(metadata i128* %2, metadata !4656, metadata !DIExpression()), !dbg !4658
%2 = alloca i128, align 16, !dbg !4658
call void @llvm.dbg.value(metadata i128 %0, metadata !4654, metadata !DIExpression()), !dbg !4659
call void @llvm.dbg.value(metadata i128 %1, metadata !4655, metadata !DIExpression()), !dbg !4659
store i128 undef, i128* %2, align 16, !dbg !4658
%3 = call i128 @runtime.udivmod128(i128 %0, i128 %1, i128* %2), !dbg !4660
%4 = load i128, i128* %2, align 16, !dbg !4661
ret i128 %4, !dbg !4661
}
define internal void @fmt.fmt_int_128(%fmt.Info* %0, i128 %1, i1 zeroext %2, i64 %3, i32 %4, i8* noalias nocapture nonnull %__.context_ptr) !dbg !4662 {
decls:
%5 = alloca [2 x i64], align 8, !dbg !4675
%6 = alloca { i64, i32 }, align 8, !dbg !4675
call void @llvm.dbg.value(metadata %fmt.Info* %0, metadata !4666, metadata !DIExpression()), !dbg !4678
call void @llvm.dbg.value(metadata i128 %1, metadata !4667, metadata !DIExpression()), !dbg !4678
call void @llvm.dbg.value(metadata i8 undef, metadata !4668, metadata !DIExpression()), !dbg !4678
call void @llvm.dbg.value(metadata i64 %3, metadata !4669, metadata !DIExpression()), !dbg !4678
call void @llvm.dbg.value(metadata i32 %4, metadata !4670, metadata !DIExpression()), !dbg !4678
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !4671, metadata !DIExpression()), !dbg !4679
switch i32 %4, label %switch.default.body [
i32 118, label %switch.case.body
i32 98, label %switch.case.body1
i32 111, label %switch.case.body2
i32 105, label %switch.case.body3
i32 100, label %switch.case.body3
i32 122, label %switch.case.body4
i32 120, label %switch.case.body5
i32 88, label %switch.case.body6
i32 99, label %switch.case.body7
i32 114, label %switch.case.body7
i32 85, label %switch.case.body8
], !dbg !4680
switch.case.body: ; preds = %decls
%7 = load [2 x i64], [2 x i64]* bitcast (%..string* @fmt.__DIGITS_LOWER to [2 x i64]*), align 8, !dbg !4681
call void @fmt._fmt_int_128(%fmt.Info* %0, i128 %1, i64 10, i1 %2, i64 %3, [2 x i64] %7, i8* %__.context_ptr), !dbg !4681
br label %switch.done, !dbg !4680
switch.case.body1: ; preds = %decls
%8 = load [2 x i64], [2 x i64]* bitcast (%..string* @fmt.__DIGITS_LOWER to [2 x i64]*), align 8, !dbg !4682
call void @fmt._fmt_int_128(%fmt.Info* %0, i128 %1, i64 2, i1 %2, i64 %3, [2 x i64] %8, i8* %__.context_ptr), !dbg !4682
br label %switch.done, !dbg !4680
switch.case.body2: ; preds = %decls
%9 = load [2 x i64], [2 x i64]* bitcast (%..string* @fmt.__DIGITS_LOWER to [2 x i64]*), align 8, !dbg !4683
call void @fmt._fmt_int_128(%fmt.Info* %0, i128 %1, i64 8, i1 %2, i64 %3, [2 x i64] %9, i8* %__.context_ptr), !dbg !4683
br label %switch.done, !dbg !4680
switch.case.body3: ; preds = %decls, %decls
%10 = load [2 x i64], [2 x i64]* bitcast (%..string* @fmt.__DIGITS_LOWER to [2 x i64]*), align 8, !dbg !4684
call void @fmt._fmt_int_128(%fmt.Info* %0, i128 %1, i64 10, i1 %2, i64 %3, [2 x i64] %10, i8* %__.context_ptr), !dbg !4684
br label %switch.done, !dbg !4680
switch.case.body4: ; preds = %decls
%11 = load [2 x i64], [2 x i64]* bitcast (%..string* @fmt.__DIGITS_LOWER to [2 x i64]*), align 8, !dbg !4685
call void @fmt._fmt_int_128(%fmt.Info* %0, i128 %1, i64 12, i1 %2, i64 %3, [2 x i64] %11, i8* %__.context_ptr), !dbg !4685
br label %switch.done, !dbg !4680
switch.case.body5: ; preds = %decls
%12 = load [2 x i64], [2 x i64]* bitcast (%..string* @fmt.__DIGITS_LOWER to [2 x i64]*), align 8, !dbg !4686
call void @fmt._fmt_int_128(%fmt.Info* %0, i128 %1, i64 16, i1 %2, i64 %3, [2 x i64] %12, i8* %__.context_ptr), !dbg !4686
br label %switch.done, !dbg !4680
switch.case.body6: ; preds = %decls
%13 = load [2 x i64], [2 x i64]* bitcast (%..string* @fmt.__DIGITS_UPPER to [2 x i64]*), align 8, !dbg !4687
call void @fmt._fmt_int_128(%fmt.Info* %0, i128 %1, i64 16, i1 %2, i64 %3, [2 x i64] %13, i8* %__.context_ptr), !dbg !4687
br label %switch.done, !dbg !4680
switch.case.body7: ; preds = %decls, %decls
%14 = trunc i128 %1 to i32, !dbg !4688
call void @fmt.fmt_rune(%fmt.Info* %0, i32 %14, i32 %4, i8* %__.context_ptr), !dbg !4688
br label %switch.done, !dbg !4680
switch.case.body8: ; preds = %decls
call void @llvm.dbg.value(metadata i32 0, metadata !4672, metadata !DIExpression()), !dbg !4689
%15 = trunc i128 %1 to i32, !dbg !4690
call void @llvm.dbg.value(metadata i32 %15, metadata !4672, metadata !DIExpression()), !dbg !4689
%16 = icmp slt i32 %15, 0, !dbg !4691
br i1 %16, label %if.then, label %cmp.or, !dbg !4691
cmp.or: ; preds = %switch.case.body8
%17 = icmp sgt i32 %15, 1114111, !dbg !4691
br i1 %17, label %if.then, label %if.else, !dbg !4691
if.then: ; preds = %cmp.or, %switch.case.body8
call void @fmt.fmt_bad_verb(%fmt.Info* %0, i32 %4, i8* %__.context_ptr), !dbg !4692
br label %switch.done, !dbg !4691
if.else: ; preds = %cmp.or
%18 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 13, !dbg !4675
%19 = bitcast %io.Writer* %18 to [2 x i64]*, !dbg !4675
%20 = load [2 x i64], [2 x i64]* %19, align 8, !dbg !4675
%21 = bitcast [2 x i64]* %5 to %..string*, !dbg !4675
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$be", i64 0, i64 0), i64 2 }, %..string* %21, align 8, !dbg !4675
%22 = load [2 x i64], [2 x i64]* %5, align 8, !dbg !4675
%23 = call [2 x i64] @io.write_string([2 x i64] %20, [2 x i64] %22, i8* %__.context_ptr), !dbg !4675
%24 = bitcast { i64, i32 }* %6 to [2 x i64]*, !dbg !4675
store [2 x i64] %23, [2 x i64]* %24, align 8, !dbg !4675
%25 = load [2 x i64], [2 x i64]* bitcast (%..string* @fmt.__DIGITS_UPPER to [2 x i64]*), align 8, !dbg !4694
call void @fmt._fmt_int_128(%fmt.Info* %0, i128 %1, i64 16, i1 false, i64 %3, [2 x i64] %25, i8* %__.context_ptr), !dbg !4694
br label %switch.done, !dbg !4691
switch.default.body: ; preds = %decls
call void @fmt.fmt_bad_verb(%fmt.Info* %0, i32 %4, i8* %__.context_ptr), !dbg !4695
br label %switch.done, !dbg !4680
switch.done: ; preds = %if.then, %if.else, %switch.default.body, %switch.case.body7, %switch.case.body6, %switch.case.body5, %switch.case.body4, %switch.case.body3, %switch.case.body2, %switch.case.body1, %switch.case.body
ret void, !dbg !4679
}
define internal void @fmt._pad(%fmt.Info* %0, [2 x i64] %1, i8* noalias nocapture nonnull %__.context_ptr) !dbg !4696 {
decls:
%2 = alloca { i8*, i64 }, align 8
%3 = alloca { i8*, i64 }, align 8
%4 = alloca [2 x i64], align 8, !dbg !4705
%5 = alloca [2 x i64], align 8, !dbg !4739
%6 = alloca %utf8.Accept_Range, align 1, !dbg !4740
%7 = alloca [2 x i64], align 8, !dbg !4740
%8 = alloca [2 x i64], align 8, !dbg !4741
%9 = alloca [2 x i64], align 8, !dbg !4742
%10 = alloca [2 x i64], align 8, !dbg !4743
%11 = alloca %..string, align 8
%12 = alloca %..string, align 8
%13 = alloca %..string, align 8
call void @llvm.dbg.declare(metadata %..string* %14, metadata !4701, metadata !DIExpression()), !dbg !4744
%14 = alloca %..string, align 8
%15 = alloca { i64, i32 }, align 8, !dbg !4745
%16 = alloca { i64, i32 }, align 8, !dbg !4748
%17 = alloca { i64, i32 }, align 8, !dbg !4751
call void @llvm.dbg.value(metadata %fmt.Info* %0, metadata !4700, metadata !DIExpression()), !dbg !4753
%18 = bitcast %..string* %13 to [2 x i64]*
store [2 x i64] %1, [2 x i64]* %18, align 8
%19 = bitcast %..string* %14 to i8*
%20 = bitcast %..string* %13 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %19, i8* align 8 %20, i64 16, i1 false)
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !4702, metadata !DIExpression()), !dbg !4754
%21 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 5, !dbg !4755
%22 = load i8, i8* %21, align 1, !dbg !4755
%23 = trunc i8 %22 to i1, !dbg !4755
br i1 %23, label %if.done, label %if.then, !dbg !4755
if.then: ; preds = %decls
%24 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 13, !dbg !4745
%25 = bitcast %io.Writer* %24 to [2 x i64]*, !dbg !4745
%26 = load [2 x i64], [2 x i64]* %25, align 8, !dbg !4745
%27 = bitcast %..string* %14 to [2 x i64]*, !dbg !4745
%28 = load [2 x i64], [2 x i64]* %27, align 8, !dbg !4745
%29 = call [2 x i64] @io.write_string([2 x i64] %26, [2 x i64] %28, i8* %__.context_ptr), !dbg !4745
%30 = bitcast { i64, i32 }* %15 to [2 x i64]*, !dbg !4745
store [2 x i64] %29, [2 x i64]* %30, align 8, !dbg !4745
ret void, !dbg !4756
if.done: ; preds = %decls
call void @llvm.dbg.value(metadata i64 0, metadata !4703, metadata !DIExpression()), !dbg !4757
%31 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 7, !dbg !4758
%32 = load i64, i64* %31, align 8, !dbg !4758
%33 = bitcast %..string* %14 to [2 x i64]*, !dbg !4758
%34 = load [2 x i64], [2 x i64]* %33, align 8, !dbg !4758
%35 = bitcast %..string* %11 to i8*, !dbg !4759
call void @llvm.lifetime.start.p0i8(i64 16, i8* %35), !dbg !4759
%36 = bitcast %..string* %12 to i8*, !dbg !4759
call void @llvm.lifetime.start.p0i8(i64 16, i8* %36), !dbg !4759
call void @llvm.dbg.declare(metadata !112, metadata !4736, metadata !DIExpression()), !dbg !4759
%37 = bitcast %..string* %11 to [2 x i64]*
store [2 x i64] %34, [2 x i64]* %37, align 8
%38 = bitcast %..string* %12 to i8*
%39 = bitcast %..string* %11 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %38, i8* align 8 %39, i64 16, i1 false)
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !4737, metadata !DIExpression()), !dbg !4760
%40 = bitcast %..string* %12 to { i8*, i64 }*, !dbg !4761
%41 = bitcast { i8*, i64 }* %40 to [2 x i64]*, !dbg !4761
%42 = load [2 x i64], [2 x i64]* %41, align 8, !dbg !4761
%43 = bitcast { i8*, i64 }* %2 to i8*, !dbg !4762
call void @llvm.lifetime.start.p0i8(i64 16, i8* %43), !dbg !4762
%44 = bitcast { i8*, i64 }* %3 to i8*, !dbg !4762
call void @llvm.lifetime.start.p0i8(i64 16, i8* %44), !dbg !4762
%45 = bitcast [2 x i64]* %4 to i8*, !dbg !4762
call void @llvm.lifetime.start.p0i8(i64 16, i8* %45), !dbg !4762
%46 = bitcast [2 x i64]* %5 to i8*, !dbg !4762
call void @llvm.lifetime.start.p0i8(i64 16, i8* %46), !dbg !4762
%47 = bitcast %utf8.Accept_Range* %6 to i8*, !dbg !4762
call void @llvm.lifetime.start.p0i8(i64 2, i8* %47), !dbg !4762
%48 = bitcast [2 x i64]* %7 to i8*, !dbg !4762
call void @llvm.lifetime.start.p0i8(i64 16, i8* %48), !dbg !4762
%49 = bitcast [2 x i64]* %8 to i8*, !dbg !4762
call void @llvm.lifetime.start.p0i8(i64 16, i8* %49), !dbg !4762
%50 = bitcast [2 x i64]* %9 to i8*, !dbg !4762
call void @llvm.lifetime.start.p0i8(i64 16, i8* %50), !dbg !4762
%51 = bitcast [2 x i64]* %10 to i8*, !dbg !4762
call void @llvm.lifetime.start.p0i8(i64 16, i8* %51), !dbg !4762
call void @llvm.dbg.declare(metadata !112, metadata !4713, metadata !DIExpression()), !dbg !4762
call void @llvm.dbg.declare(metadata !112, metadata !4721, metadata !DIExpression()), !dbg !4740
%52 = bitcast { i8*, i64 }* %2 to [2 x i64]*
store [2 x i64] %42, [2 x i64]* %52, align 8
%53 = bitcast { i8*, i64 }* %3 to i8*
%54 = bitcast { i8*, i64 }* %2 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %53, i8* align 8 %54, i64 16, i1 false)
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !4714, metadata !DIExpression()), !dbg !4763
call void @llvm.dbg.value(metadata i64 0, metadata !4715, metadata !DIExpression()), !dbg !4764
call void @llvm.dbg.value(metadata i64 0, metadata !4716, metadata !DIExpression()), !dbg !4764
%55 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %3, i32 0, i32 1, !dbg !4765
%56 = load i64, i64* %55, align 8, !dbg !4765
call void @llvm.dbg.value(metadata i64 %56, metadata !4716, metadata !DIExpression()), !dbg !4764
call void @llvm.dbg.value(metadata i64 0, metadata !4717, metadata !DIExpression()), !dbg !4766
br label %for.loop.i.i, !dbg !4767
for.loop.i.i: ; preds = %if.done23.i.i, %if.then4.i.i, %if.then1.i.i, %if.then.i.i, %if.done
%.025.i.i = phi i64 [ 0, %if.done ], [ %66, %if.then.i.i ], [ %74, %if.then1.i.i ], [ %80, %if.then4.i.i ], [ %122, %if.done23.i.i ], !dbg !4766
%.0.i.i = phi i64 [ 0, %if.done ], [ %67, %if.then.i.i ], [ %75, %if.then1.i.i ], [ %81, %if.then4.i.i ], [ %123, %if.done23.i.i ], !dbg !4764
call void @llvm.dbg.value(metadata i64 %.0.i.i, metadata !4715, metadata !DIExpression()), !dbg !4764
call void @llvm.dbg.value(metadata i64 %.025.i.i, metadata !4717, metadata !DIExpression()), !dbg !4766
%57 = icmp slt i64 %.025.i.i, %56, !dbg !4767
br i1 %57, label %for.body.i.i, label %utf8.rune_count_in_string.exit, !dbg !4767
for.body.i.i: ; preds = %for.loop.i.i
call void @llvm.dbg.value(metadata i8 0, metadata !4718, metadata !DIExpression()), !dbg !4768
%58 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %3, i32 0, i32 0, !dbg !4705
%59 = load i8*, i8** %58, align 8, !dbg !4705
%60 = load i64, i64* %55, align 8, !dbg !4705
%61 = bitcast [2 x i64]* %4 to %..string*, !dbg !4705
store %..string { i8* getelementptr inbounds ([56 x i8], [56 x i8]* @"csbs$7c", i64 0, i64 0), i64 55 }, %..string* %61, align 8, !dbg !4705
%62 = load [2 x i64], [2 x i64]* %4, align 8, !dbg !4705
call void @runtime.bounds_check_error([2 x i64] %62, i32 309, i32 11, i64 %.025.i.i, i64 %60), !dbg !4705
%63 = getelementptr i8, i8* %59, i64 %.025.i.i, !dbg !4705
%64 = load i8, i8* %63, align 1, !dbg !4705
call void @llvm.dbg.value(metadata i8 %64, metadata !4718, metadata !DIExpression()), !dbg !4768
%65 = icmp ult i8 %64, -128, !dbg !4769
br i1 %65, label %if.then.i.i, label %if.done.i.i, !dbg !4769
if.then.i.i: ; preds = %for.body.i.i
%66 = add i64 %.025.i.i, 1, !dbg !4770
call void @llvm.dbg.value(metadata i64 %66, metadata !4717, metadata !DIExpression()), !dbg !4766
%67 = add i64 %.0.i.i, 1, !dbg !4773
call void @llvm.dbg.value(metadata i64 %67, metadata !4715, metadata !DIExpression()), !dbg !4764
br label %for.loop.i.i, !dbg !4774
if.done.i.i: ; preds = %for.body.i.i
call void @llvm.dbg.value(metadata i8 0, metadata !4719, metadata !DIExpression()), !dbg !4768
%68 = zext i8 %64 to i64, !dbg !4739
%69 = getelementptr [256 x i8], [256 x i8]* @utf8.accept_sizes, i64 0, i64 %68, !dbg !4739
%70 = bitcast [2 x i64]* %5 to %..string*, !dbg !4739
store %..string { i8* getelementptr inbounds ([56 x i8], [56 x i8]* @"csbs$7c", i64 0, i64 0), i64 55 }, %..string* %70, align 8, !dbg !4739
%71 = load [2 x i64], [2 x i64]* %5, align 8, !dbg !4739
call void @runtime.bounds_check_error([2 x i64] %71, i32 314, i32 21, i64 %68, i64 256), !dbg !4739
%72 = load i8, i8* %69, align 1, !dbg !4739
call void @llvm.dbg.value(metadata i8 %72, metadata !4719, metadata !DIExpression()), !dbg !4768
%73 = icmp eq i8 %72, -15, !dbg !4775
br i1 %73, label %if.then1.i.i, label %if.done3.i.i, !dbg !4775
if.then1.i.i: ; preds = %if.done.i.i
%74 = add i64 %.025.i.i, 1, !dbg !4776
call void @llvm.dbg.value(metadata i64 %74, metadata !4717, metadata !DIExpression()), !dbg !4766
%75 = add i64 %.0.i.i, 1, !dbg !4779
call void @llvm.dbg.value(metadata i64 %75, metadata !4715, metadata !DIExpression()), !dbg !4764
br label %for.loop.i.i, !dbg !4780
if.done3.i.i: ; preds = %if.done.i.i
call void @llvm.dbg.value(metadata i64 0, metadata !4720, metadata !DIExpression()), !dbg !4768
%76 = and i8 %72, 7, !dbg !4781
%77 = zext i8 %76 to i64, !dbg !4781
call void @llvm.dbg.value(metadata i64 %77, metadata !4720, metadata !DIExpression()), !dbg !4768
%78 = add i64 %.025.i.i, %77, !dbg !4782
%79 = icmp sgt i64 %78, %56, !dbg !4782
br i1 %79, label %if.then4.i.i, label %if.done6.i.i, !dbg !4782
if.then4.i.i: ; preds = %if.done3.i.i
%80 = add i64 %.025.i.i, 1, !dbg !4783
call void @llvm.dbg.value(metadata i64 %80, metadata !4717, metadata !DIExpression()), !dbg !4766
%81 = add i64 %.0.i.i, 1, !dbg !4786
call void @llvm.dbg.value(metadata i64 %81, metadata !4715, metadata !DIExpression()), !dbg !4764
br label %for.loop.i.i, !dbg !4787
if.done6.i.i: ; preds = %if.done3.i.i
%82 = bitcast %utf8.Accept_Range* %6 to i8*, !dbg !4740
call void @llvm.memset.p0i8.i64(i8* %82, i8 0, i64 2, i1 false), !dbg !4740
%83 = lshr i8 %72, 4, !dbg !4740
%84 = zext i8 %83 to i64, !dbg !4740
%85 = getelementptr [5 x %utf8.Accept_Range], [5 x %utf8.Accept_Range]* @utf8.accept_ranges, i64 0, i64 %84, !dbg !4740
%86 = bitcast [2 x i64]* %7 to %..string*, !dbg !4740
store %..string { i8* getelementptr inbounds ([56 x i8], [56 x i8]* @"csbs$7c", i64 0, i64 0), i64 55 }, %..string* %86, align 8, !dbg !4740
%87 = load [2 x i64], [2 x i64]* %7, align 8, !dbg !4740
call void @runtime.bounds_check_error([2 x i64] %87, i32 324, i32 23, i64 %84, i64 5), !dbg !4740
%88 = bitcast %utf8.Accept_Range* %85 to i8*, !dbg !4740
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %82, i8* align 1 %88, i64 2, i1 false), !dbg !4740
call void @llvm.dbg.value(metadata i8 0, metadata !4722, metadata !DIExpression()), !dbg !4788
%89 = load i8*, i8** %58, align 8, !dbg !4741
%90 = add i64 %.025.i.i, 1, !dbg !4741
%91 = load i64, i64* %55, align 8, !dbg !4741
%92 = bitcast [2 x i64]* %8 to %..string*, !dbg !4741
store %..string { i8* getelementptr inbounds ([56 x i8], [56 x i8]* @"csbs$7c", i64 0, i64 0), i64 55 }, %..string* %92, align 8, !dbg !4741
%93 = load [2 x i64], [2 x i64]* %8, align 8, !dbg !4741
call void @runtime.bounds_check_error([2 x i64] %93, i32 325, i32 13, i64 %90, i64 %91), !dbg !4741
%94 = getelementptr i8, i8* %89, i64 %90, !dbg !4741
%95 = load i8, i8* %94, align 1, !dbg !4741
call void @llvm.dbg.value(metadata i8 %95, metadata !4722, metadata !DIExpression()), !dbg !4788
%96 = getelementptr inbounds %utf8.Accept_Range, %utf8.Accept_Range* %6, i32 0, i32 0, !dbg !4789
%97 = load i8, i8* %96, align 1, !dbg !4789
%98 = icmp ult i8 %95, %97, !dbg !4789
br i1 %98, label %if.done23.i.i, label %cmp.or.i.i, !dbg !4789
cmp.or.i.i: ; preds = %if.done6.i.i
%99 = getelementptr inbounds %utf8.Accept_Range, %utf8.Accept_Range* %6, i32 0, i32 1, !dbg !4789
%100 = load i8, i8* %99, align 1, !dbg !4789
%101 = icmp ult i8 %100, %95, !dbg !4789
br i1 %101, label %if.done23.i.i, label %if.else.i.i, !dbg !4789
if.else.i.i: ; preds = %cmp.or.i.i
%102 = icmp eq i64 %77, 2, !dbg !4790
br i1 %102, label %if.done23.i.i, label %if.init10.i.i, !dbg !4790
if.init10.i.i: ; preds = %if.else.i.i
call void @llvm.dbg.value(metadata i8 0, metadata !4724, metadata !DIExpression()), !dbg !4791
%103 = load i8*, i8** %58, align 8, !dbg !4742
%104 = add i64 %.025.i.i, 2, !dbg !4742
%105 = load i64, i64* %55, align 8, !dbg !4742
%106 = bitcast [2 x i64]* %9 to %..string*, !dbg !4742
store %..string { i8* getelementptr inbounds ([56 x i8], [56 x i8]* @"csbs$7c", i64 0, i64 0), i64 55 }, %..string* %106, align 8, !dbg !4742
%107 = load [2 x i64], [2 x i64]* %9, align 8, !dbg !4742
call void @runtime.bounds_check_error([2 x i64] %107, i32 329, i32 20, i64 %104, i64 %105), !dbg !4742
%108 = getelementptr i8, i8* %103, i64 %104, !dbg !4742
%109 = load i8, i8* %108, align 1, !dbg !4742
call void @llvm.dbg.value(metadata i8 %109, metadata !4724, metadata !DIExpression()), !dbg !4791
%110 = icmp ult i8 %109, -128, !dbg !4792
br i1 %110, label %if.done23.i.i, label %cmp.or11.i.i, !dbg !4792
cmp.or11.i.i: ; preds = %if.init10.i.i
%111 = icmp ult i8 -65, %109, !dbg !4792
br i1 %111, label %if.done23.i.i, label %if.else13.i.i, !dbg !4792
if.else13.i.i: ; preds = %cmp.or11.i.i
%112 = icmp eq i64 %77, 3, !dbg !4793
br i1 %112, label %if.done23.i.i, label %if.init16.i.i, !dbg !4793
if.init16.i.i: ; preds = %if.else13.i.i
call void @llvm.dbg.value(metadata i8 0, metadata !4727, metadata !DIExpression()), !dbg !4794
%113 = load i8*, i8** %58, align 8, !dbg !4743
%114 = add i64 %.025.i.i, 3, !dbg !4743
%115 = load i64, i64* %55, align 8, !dbg !4743
%116 = bitcast [2 x i64]* %10 to %..string*, !dbg !4743
store %..string { i8* getelementptr inbounds ([56 x i8], [56 x i8]* @"csbs$7c", i64 0, i64 0), i64 55 }, %..string* %116, align 8, !dbg !4743
%117 = load [2 x i64], [2 x i64]* %10, align 8, !dbg !4743
call void @runtime.bounds_check_error([2 x i64] %117, i32 333, i32 20, i64 %114, i64 %115), !dbg !4743
%118 = getelementptr i8, i8* %113, i64 %114, !dbg !4743
%119 = load i8, i8* %118, align 1, !dbg !4743
call void @llvm.dbg.value(metadata i8 %119, metadata !4727, metadata !DIExpression()), !dbg !4794
%120 = icmp ult i8 %119, -128, !dbg !4795
br i1 %120, label %if.then18.i.i, label %cmp.or17.i.i, !dbg !4795
cmp.or17.i.i: ; preds = %if.init16.i.i
%121 = icmp ult i8 -65, %119, !dbg !4795
br i1 %121, label %if.then18.i.i, label %if.done23.i.i, !dbg !4795
if.then18.i.i: ; preds = %cmp.or17.i.i, %if.init16.i.i
call void @llvm.dbg.value(metadata i64 1, metadata !4720, metadata !DIExpression()), !dbg !4768
br label %if.done23.i.i, !dbg !4795
if.done23.i.i: ; preds = %if.then18.i.i, %cmp.or17.i.i, %if.else13.i.i, %cmp.or11.i.i, %if.init10.i.i, %if.else.i.i, %cmp.or.i.i, %if.done6.i.i
%.4.i.i = phi i64 [ 1, %cmp.or.i.i ], [ 1, %if.done6.i.i ], [ %77, %if.else.i.i ], [ 1, %cmp.or11.i.i ], [ 1, %if.init10.i.i ], [ %77, %if.else13.i.i ], [ 1, %if.then18.i.i ], [ %77, %cmp.or17.i.i ], !dbg !4768
call void @llvm.dbg.value(metadata i64 %.4.i.i, metadata !4720, metadata !DIExpression()), !dbg !4768
%122 = add i64 %.025.i.i, %.4.i.i, !dbg !4796
call void @llvm.dbg.value(metadata i64 %122, metadata !4717, metadata !DIExpression()), !dbg !4766
%123 = add i64 %.0.i.i, 1, !dbg !4797
call void @llvm.dbg.value(metadata i64 %123, metadata !4715, metadata !DIExpression()), !dbg !4764
br label %for.loop.i.i, !dbg !4767
utf8.rune_count_in_string.exit: ; preds = %for.loop.i.i
%124 = bitcast { i8*, i64 }* %2 to i8*, !dbg !4798
call void @llvm.lifetime.end.p0i8(i64 16, i8* %124), !dbg !4798
%125 = bitcast { i8*, i64 }* %3 to i8*, !dbg !4798
call void @llvm.lifetime.end.p0i8(i64 16, i8* %125), !dbg !4798
%126 = bitcast [2 x i64]* %4 to i8*, !dbg !4798
call void @llvm.lifetime.end.p0i8(i64 16, i8* %126), !dbg !4798
%127 = bitcast [2 x i64]* %5 to i8*, !dbg !4798
call void @llvm.lifetime.end.p0i8(i64 16, i8* %127), !dbg !4798
%128 = bitcast %utf8.Accept_Range* %6 to i8*, !dbg !4798
call void @llvm.lifetime.end.p0i8(i64 2, i8* %128), !dbg !4798
%129 = bitcast [2 x i64]* %7 to i8*, !dbg !4798
call void @llvm.lifetime.end.p0i8(i64 16, i8* %129), !dbg !4798
%130 = bitcast [2 x i64]* %8 to i8*, !dbg !4798
call void @llvm.lifetime.end.p0i8(i64 16, i8* %130), !dbg !4798
%131 = bitcast [2 x i64]* %9 to i8*, !dbg !4798
call void @llvm.lifetime.end.p0i8(i64 16, i8* %131), !dbg !4798
%132 = bitcast [2 x i64]* %10 to i8*, !dbg !4798
call void @llvm.lifetime.end.p0i8(i64 16, i8* %132), !dbg !4798
%133 = bitcast %..string* %11 to i8*, !dbg !4761
call void @llvm.lifetime.end.p0i8(i64 16, i8* %133), !dbg !4761
%134 = bitcast %..string* %12 to i8*, !dbg !4761
call void @llvm.lifetime.end.p0i8(i64 16, i8* %134), !dbg !4761
%135 = sub i64 %32, %.0.i.i, !dbg !4758
call void @llvm.dbg.value(metadata i64 %135, metadata !4703, metadata !DIExpression()), !dbg !4757
%136 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 0, !dbg !4799
%137 = load i8, i8* %136, align 1, !dbg !4799
%138 = trunc i8 %137 to i1, !dbg !4799
br i1 %138, label %if.then1, label %if.else, !dbg !4799
if.then1: ; preds = %utf8.rune_count_in_string.exit
%139 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 13, !dbg !4748
%140 = bitcast %io.Writer* %139 to [2 x i64]*, !dbg !4748
%141 = load [2 x i64], [2 x i64]* %140, align 8, !dbg !4748
%142 = load [2 x i64], [2 x i64]* %33, align 8, !dbg !4748
%143 = call [2 x i64] @io.write_string([2 x i64] %141, [2 x i64] %142, i8* %__.context_ptr), !dbg !4748
%144 = bitcast { i64, i32 }* %16 to [2 x i64]*, !dbg !4748
store [2 x i64] %143, [2 x i64]* %144, align 8, !dbg !4748
call void @fmt.fmt_write_padding(%fmt.Info* %0, i64 %135, i8* %__.context_ptr), !dbg !4800
br label %if.done2, !dbg !4799
if.else: ; preds = %utf8.rune_count_in_string.exit
call void @fmt.fmt_write_padding(%fmt.Info* %0, i64 %135, i8* %__.context_ptr), !dbg !4801
%145 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 13, !dbg !4751
%146 = bitcast %io.Writer* %145 to [2 x i64]*, !dbg !4751
%147 = load [2 x i64], [2 x i64]* %146, align 8, !dbg !4751
%148 = load [2 x i64], [2 x i64]* %33, align 8, !dbg !4751
%149 = call [2 x i64] @io.write_string([2 x i64] %147, [2 x i64] %148, i8* %__.context_ptr), !dbg !4751
%150 = bitcast { i64, i32 }* %17 to [2 x i64]*, !dbg !4751
store [2 x i64] %149, [2 x i64]* %150, align 8, !dbg !4751
br label %if.done2, !dbg !4799
if.done2: ; preds = %if.else, %if.then1
ret void, !dbg !4754
}
define internal void @fmt.fmt_float(%fmt.Info* %0, double %1, i64 %2, i32 %3, i8* noalias nocapture nonnull %__.context_ptr) !dbg !4802 {
decls:
call void @llvm.dbg.declare(metadata [386 x i8]* %4, metadata !4814, metadata !DIExpression()), !dbg !4826
%4 = alloca [386 x i8], align 1, !dbg !4826
call void @llvm.dbg.declare(metadata %..string* %5, metadata !4818, metadata !DIExpression()), !dbg !4827
%5 = alloca %..string, align 8, !dbg !4827
%6 = alloca [2 x i64], align 8, !dbg !4827
%7 = alloca { i8*, i64 }, align 8, !dbg !4827
%8 = alloca %..string, align 8, !dbg !4827
call void @llvm.dbg.declare(metadata { i8*, i64 }* %9, metadata !4819, metadata !DIExpression()), !dbg !4828
%9 = alloca { i8*, i64 }, align 8, !dbg !4828
%10 = alloca [2 x i64], align 8, !dbg !4828
%11 = alloca { i8*, i64 }, align 8, !dbg !4828
%12 = alloca [2 x i64], align 8, !dbg !4829
%13 = alloca [2 x i64], align 8, !dbg !4829
%14 = alloca [2 x i64], align 8, !dbg !4830
%15 = alloca { i8*, i64 }, align 8, !dbg !4830
%16 = alloca [2 x i64], align 8, !dbg !4833
%17 = alloca [2 x i64], align 8, !dbg !4835
%18 = alloca [2 x i64], align 8, !dbg !4836
%19 = alloca [2 x i64], align 8, !dbg !4839
%20 = alloca [2 x i64], align 8, !dbg !4839
%21 = alloca { i64, i32 }, align 8, !dbg !4840
%22 = alloca [2 x i64], align 8, !dbg !4843
%23 = alloca [2 x i64], align 8, !dbg !4844
%24 = alloca [2 x i64], align 8, !dbg !4849
%25 = alloca { i8*, i64 }, align 8, !dbg !4849
%26 = alloca { i64, i32 }, align 8, !dbg !4849
%27 = alloca [2 x i64], align 8, !dbg !4850
%28 = alloca { i8*, i64 }, align 8, !dbg !4850
call void @llvm.dbg.declare(metadata [386 x i8]* %29, metadata !4821, metadata !DIExpression()), !dbg !4852
%29 = alloca [386 x i8], align 1, !dbg !4852
call void @llvm.dbg.declare(metadata %..string* %30, metadata !4822, metadata !DIExpression()), !dbg !4853
%30 = alloca %..string, align 8, !dbg !4853
%31 = alloca [2 x i64], align 8, !dbg !4853
%32 = alloca { i8*, i64 }, align 8, !dbg !4853
%33 = alloca %..string, align 8, !dbg !4853
call void @llvm.dbg.declare(metadata { i8*, i64 }* %34, metadata !4823, metadata !DIExpression()), !dbg !4854
%34 = alloca { i8*, i64 }, align 8, !dbg !4854
%35 = alloca [2 x i64], align 8, !dbg !4854
%36 = alloca { i8*, i64 }, align 8, !dbg !4854
%37 = alloca [2 x i64], align 8, !dbg !4855
%38 = alloca [2 x i64], align 8, !dbg !4855
%39 = alloca [2 x i64], align 8, !dbg !4856
%40 = alloca { i8*, i64 }, align 8, !dbg !4856
%41 = alloca [2 x i64], align 8, !dbg !4859
%42 = alloca [2 x i64], align 8, !dbg !4861
%43 = alloca [2 x i64], align 8, !dbg !4862
%44 = alloca [2 x i64], align 8, !dbg !4865
%45 = alloca [2 x i64], align 8, !dbg !4865
%46 = alloca { i64, i32 }, align 8, !dbg !4866
%47 = alloca [2 x i64], align 8, !dbg !4869
%48 = alloca [2 x i64], align 8, !dbg !4870
%49 = alloca [2 x i64], align 8, !dbg !4875
%50 = alloca { i8*, i64 }, align 8, !dbg !4875
%51 = alloca { i64, i32 }, align 8, !dbg !4875
%52 = alloca [2 x i64], align 8, !dbg !4876
%53 = alloca { i8*, i64 }, align 8, !dbg !4876
call void @llvm.dbg.declare(metadata %fmt.Info* %54, metadata !4824, metadata !DIExpression()), !dbg !4878
%54 = alloca %fmt.Info, align 8, !dbg !4878
%55 = alloca [2 x i64], align 8, !dbg !4879
%56 = alloca %runtime.Source_Code_Location, align 8, !dbg !4879
%57 = alloca [2 x i64], align 8, !dbg !4881
%58 = alloca { i64, i32 }, align 8, !dbg !4881
%59 = alloca [2 x i64], align 8, !dbg !4882
call void @llvm.dbg.value(metadata %fmt.Info* %0, metadata !4806, metadata !DIExpression()), !dbg !4883
call void @llvm.dbg.value(metadata double %1, metadata !4807, metadata !DIExpression()), !dbg !4883
call void @llvm.dbg.value(metadata i64 %2, metadata !4808, metadata !DIExpression()), !dbg !4883
call void @llvm.dbg.value(metadata i32 %3, metadata !4809, metadata !DIExpression()), !dbg !4883
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !4810, metadata !DIExpression()), !dbg !4884
switch i32 %3, label %switch.default.body50 [
i32 102, label %switch.case.body
i32 70, label %switch.case.body
i32 118, label %switch.case.body
i32 101, label %switch.case.body19
i32 69, label %switch.case.body19
i32 104, label %switch.case.body43
i32 72, label %switch.case.body43
], !dbg !4885
switch.case.body: ; preds = %decls, %decls, %decls
call void @llvm.dbg.value(metadata i64 0, metadata !4811, metadata !DIExpression()), !dbg !4886
call void @llvm.dbg.value(metadata i64 3, metadata !4811, metadata !DIExpression()), !dbg !4886
%60 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 6, !dbg !4887
%61 = load i8, i8* %60, align 1, !dbg !4887
%62 = trunc i8 %61 to i1, !dbg !4887
br i1 %62, label %if.then, label %if.done, !dbg !4887
if.then: ; preds = %switch.case.body
%63 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 8, !dbg !4888
%64 = load i64, i64* %63, align 8, !dbg !4888
call void @llvm.dbg.value(metadata i64 %64, metadata !4811, metadata !DIExpression()), !dbg !4886
br label %if.done, !dbg !4887
if.done: ; preds = %if.then, %switch.case.body
%.053 = phi i64 [ %64, %if.then ], [ 3, %switch.case.body ], !dbg !4883
call void @llvm.dbg.value(metadata i64 %.053, metadata !4811, metadata !DIExpression()), !dbg !4886
%65 = bitcast [386 x i8]* %4 to i8*, !dbg !4826
call void @llvm.memset.p0i8.i64(i8* %65, i8 0, i64 386, i1 false), !dbg !4826
%66 = bitcast %..string* %5 to i8*, !dbg !4827
call void @llvm.memset.p0i8.i64(i8* %66, i8 0, i64 16, i1 false), !dbg !4827
%67 = bitcast [2 x i64]* %6 to %..string*, !dbg !4827
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %67, align 8, !dbg !4827
%68 = load [2 x i64], [2 x i64]* %6, align 8, !dbg !4827
call void @runtime.slice_expr_error_lo_hi([2 x i64] %68, i32 872, i32 34, i64 1, i64 386, i64 386), !dbg !4827
%69 = getelementptr [386 x i8], [386 x i8]* %4, i64 0, i64 0, !dbg !4827
%70 = getelementptr i8, i8* %69, i64 1, !dbg !4827
%71 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %7, i32 0, i32 0, !dbg !4827
store i8* %70, i8** %71, align 8, !dbg !4827
%72 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %7, i32 0, i32 1, !dbg !4827
store i64 385, i64* %72, align 8, !dbg !4827
%73 = bitcast { i8*, i64 }* %7 to [2 x i64]*, !dbg !4827
%74 = load [2 x i64], [2 x i64]* %73, align 8, !dbg !4827
%75 = call [2 x i64] @strconv.append_float([2 x i64] %74, double %1, i8 102, i64 %.053, i64 %2, i8* %__.context_ptr), !dbg !4827
%76 = bitcast %..string* %8 to [2 x i64]*, !dbg !4827
store [2 x i64] %75, [2 x i64]* %76, align 8, !dbg !4827
%77 = bitcast %..string* %8 to i8*, !dbg !4827
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %66, i8* align 8 %77, i64 16, i1 false), !dbg !4827
%78 = bitcast { i8*, i64 }* %9 to i8*, !dbg !4828
call void @llvm.memset.p0i8.i64(i8* %78, i8 0, i64 16, i1 false), !dbg !4828
%79 = getelementptr inbounds %..string, %..string* %5, i32 0, i32 1, !dbg !4828
%80 = load i64, i64* %79, align 8, !dbg !4828
%81 = add i64 %80, 1, !dbg !4828
%82 = bitcast [2 x i64]* %10 to %..string*, !dbg !4828
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %82, align 8, !dbg !4828
%83 = load [2 x i64], [2 x i64]* %10, align 8, !dbg !4828
call void @runtime.slice_expr_error_hi([2 x i64] %83, i32 873, i32 11, i64 %81, i64 386), !dbg !4828
%84 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %11, i32 0, i32 0, !dbg !4828
store i8* %69, i8** %84, align 8, !dbg !4828
%85 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %11, i32 0, i32 1, !dbg !4828
store i64 %81, i64* %85, align 8, !dbg !4828
%86 = bitcast { i8*, i64 }* %11 to i8*, !dbg !4828
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %78, i8* align 8 %86, i64 16, i1 false), !dbg !4828
%87 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %9, i32 0, i32 0, !dbg !4829
%88 = load i8*, i8** %87, align 8, !dbg !4829
%89 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %9, i32 0, i32 1, !dbg !4829
%90 = load i64, i64* %89, align 8, !dbg !4829
%91 = bitcast [2 x i64]* %12 to %..string*, !dbg !4829
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %91, align 8, !dbg !4829
%92 = load [2 x i64], [2 x i64]* %12, align 8, !dbg !4829
call void @runtime.bounds_check_error([2 x i64] %92, i32 874, i32 8, i64 1, i64 %90), !dbg !4829
%93 = getelementptr i8, i8* %88, i64 1, !dbg !4829
%94 = load i8, i8* %93, align 1, !dbg !4829
%95 = icmp eq i8 %94, 43, !dbg !4829
br i1 %95, label %if.then1, label %cmp.or, !dbg !4829
cmp.or: ; preds = %if.done
%96 = load i8*, i8** %87, align 8, !dbg !4829
%97 = load i64, i64* %89, align 8, !dbg !4829
%98 = bitcast [2 x i64]* %13 to %..string*, !dbg !4829
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %98, align 8, !dbg !4829
%99 = load [2 x i64], [2 x i64]* %13, align 8, !dbg !4829
call void @runtime.bounds_check_error([2 x i64] %99, i32 874, i32 23, i64 1, i64 %97), !dbg !4829
%100 = getelementptr i8, i8* %96, i64 1, !dbg !4829
%101 = load i8, i8* %100, align 1, !dbg !4829
%102 = icmp eq i8 %101, 45, !dbg !4829
br i1 %102, label %if.then1, label %if.else, !dbg !4829
if.then1: ; preds = %cmp.or, %if.done
%103 = load i64, i64* %89, align 8, !dbg !4830
%104 = bitcast [2 x i64]* %14 to %..string*, !dbg !4830
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %104, align 8, !dbg !4830
%105 = load [2 x i64], [2 x i64]* %14, align 8, !dbg !4830
call void @runtime.slice_expr_error_lo_hi([2 x i64] %105, i32 875, i32 9, i64 1, i64 %103, i64 %103), !dbg !4830
%106 = load i8*, i8** %87, align 8, !dbg !4830
%107 = getelementptr i8, i8* %106, i64 1, !dbg !4830
%108 = sub i64 %103, 1, !dbg !4830
%109 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %15, i32 0, i32 0, !dbg !4830
store i8* %107, i8** %109, align 8, !dbg !4830
%110 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %15, i32 0, i32 1, !dbg !4830
store i64 %108, i64* %110, align 8, !dbg !4830
%111 = bitcast { i8*, i64 }* %15 to i8*, !dbg !4830
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %78, i8* align 8 %111, i64 16, i1 false), !dbg !4830
br label %if.done2, !dbg !4829
if.else: ; preds = %cmp.or
%112 = load i8*, i8** %87, align 8, !dbg !4833
%113 = load i64, i64* %89, align 8, !dbg !4833
%114 = bitcast [2 x i64]* %16 to %..string*, !dbg !4833
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %114, align 8, !dbg !4833
%115 = load [2 x i64], [2 x i64]* %16, align 8, !dbg !4833
call void @runtime.bounds_check_error([2 x i64] %115, i32 877, i32 6, i64 0, i64 %113), !dbg !4833
store i8 43, i8* %112, align 1, !dbg !4833
br label %if.done2, !dbg !4829
if.done2: ; preds = %if.else, %if.then1
%116 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 2, !dbg !4835
%117 = load i8, i8* %116, align 1, !dbg !4835
%118 = trunc i8 %117 to i1, !dbg !4835
br i1 %118, label %cmp.and, label %if.done5, !dbg !4835
cmp.and: ; preds = %if.done2
%119 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 1, !dbg !4835
%120 = load i8, i8* %119, align 1, !dbg !4835
%121 = trunc i8 %120 to i1, !dbg !4835
br i1 %121, label %if.done5, label %cmp.and3, !dbg !4835
cmp.and3: ; preds = %cmp.and
%122 = load i8*, i8** %87, align 8, !dbg !4835
%123 = load i64, i64* %89, align 8, !dbg !4835
%124 = bitcast [2 x i64]* %17 to %..string*, !dbg !4835
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %124, align 8, !dbg !4835
%125 = load [2 x i64], [2 x i64]* %17, align 8, !dbg !4835
call void @runtime.bounds_check_error([2 x i64] %125, i32 880, i32 32, i64 0, i64 %123), !dbg !4835
%126 = load i8, i8* %122, align 1, !dbg !4835
%127 = icmp eq i8 %126, 43, !dbg !4835
br i1 %127, label %if.then4, label %if.done5, !dbg !4835
if.then4: ; preds = %cmp.and3
%128 = load i8*, i8** %87, align 8, !dbg !4836
%129 = load i64, i64* %89, align 8, !dbg !4836
%130 = bitcast [2 x i64]* %18 to %..string*, !dbg !4836
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %130, align 8, !dbg !4836
%131 = load [2 x i64], [2 x i64]* %18, align 8, !dbg !4836
call void @runtime.bounds_check_error([2 x i64] %131, i32 881, i32 6, i64 0, i64 %129), !dbg !4836
store i8 32, i8* %128, align 1, !dbg !4836
br label %if.done5, !dbg !4835
if.done5: ; preds = %if.then4, %cmp.and3, %cmp.and, %if.done2
%132 = load i64, i64* %89, align 8, !dbg !4839
%133 = icmp sgt i64 %132, 1, !dbg !4839
br i1 %133, label %cmp.and6, label %if.done9, !dbg !4839
cmp.and6: ; preds = %if.done5
%134 = load i8*, i8** %87, align 8, !dbg !4839
%135 = bitcast [2 x i64]* %19 to %..string*, !dbg !4839
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %135, align 8, !dbg !4839
%136 = load [2 x i64], [2 x i64]* %19, align 8, !dbg !4839
call void @runtime.bounds_check_error([2 x i64] %136, i32 884, i32 23, i64 1, i64 %132), !dbg !4839
%137 = getelementptr i8, i8* %134, i64 1, !dbg !4839
%138 = load i8, i8* %137, align 1, !dbg !4839
%139 = icmp eq i8 %138, 78, !dbg !4839
br i1 %139, label %if.then8, label %cmp.or7, !dbg !4839
cmp.or7: ; preds = %cmp.and6
%140 = load i8*, i8** %87, align 8, !dbg !4839
%141 = load i64, i64* %89, align 8, !dbg !4839
%142 = bitcast [2 x i64]* %20 to %..string*, !dbg !4839
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %142, align 8, !dbg !4839
%143 = load [2 x i64], [2 x i64]* %20, align 8, !dbg !4839
call void @runtime.bounds_check_error([2 x i64] %143, i32 884, i32 38, i64 1, i64 %141), !dbg !4839
%144 = getelementptr i8, i8* %140, i64 1, !dbg !4839
%145 = load i8, i8* %144, align 1, !dbg !4839
%146 = icmp eq i8 %145, 73, !dbg !4839
br i1 %146, label %if.then8, label %if.done9, !dbg !4839
if.then8: ; preds = %cmp.or7, %cmp.and6
%147 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 13, !dbg !4840
%148 = bitcast { i8*, i64 }* %9 to %..string*, !dbg !4840
%149 = bitcast %io.Writer* %147 to [2 x i64]*, !dbg !4840
%150 = load [2 x i64], [2 x i64]* %149, align 8, !dbg !4840
%151 = bitcast %..string* %148 to [2 x i64]*, !dbg !4840
%152 = load [2 x i64], [2 x i64]* %151, align 8, !dbg !4840
%153 = call [2 x i64] @io.write_string([2 x i64] %150, [2 x i64] %152, i8* %__.context_ptr), !dbg !4840
%154 = bitcast { i64, i32 }* %21 to [2 x i64]*, !dbg !4840
store [2 x i64] %153, [2 x i64]* %154, align 8, !dbg !4840
ret void, !dbg !4891
if.done9: ; preds = %cmp.or7, %if.done5
%155 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 1, !dbg !4843
%156 = load i8, i8* %155, align 1, !dbg !4843
%157 = trunc i8 %156 to i1, !dbg !4843
br i1 %157, label %if.then11, label %cmp.or10, !dbg !4843
cmp.or10: ; preds = %if.done9
%158 = load i8*, i8** %87, align 8, !dbg !4843
%159 = load i64, i64* %89, align 8, !dbg !4843
%160 = bitcast [2 x i64]* %22 to %..string*, !dbg !4843
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %160, align 8, !dbg !4843
%161 = load [2 x i64], [2 x i64]* %22, align 8, !dbg !4843
call void @runtime.bounds_check_error([2 x i64] %161, i32 889, i32 19, i64 0, i64 %159), !dbg !4843
%162 = load i8, i8* %158, align 1, !dbg !4843
%163 = icmp ne i8 %162, 43, !dbg !4843
br i1 %163, label %if.then11, label %if.else17, !dbg !4843
if.then11: ; preds = %cmp.or10, %if.done9
%164 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 3, !dbg !4892
%165 = load i8, i8* %164, align 1, !dbg !4892
%166 = trunc i8 %165 to i1, !dbg !4892
br i1 %166, label %cmp.and12, label %if.else15, !dbg !4892
cmp.and12: ; preds = %if.then11
%167 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 5, !dbg !4892
%168 = load i8, i8* %167, align 1, !dbg !4892
%169 = trunc i8 %168 to i1, !dbg !4892
br i1 %169, label %cmp.and13, label %if.else15, !dbg !4892
cmp.and13: ; preds = %cmp.and12
%170 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 7, !dbg !4892
%171 = load i64, i64* %170, align 8, !dbg !4892
%172 = load i64, i64* %89, align 8, !dbg !4892
%173 = icmp sgt i64 %171, %172, !dbg !4892
br i1 %173, label %if.then14, label %if.else15, !dbg !4892
if.then14: ; preds = %cmp.and13
%174 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 13, !dbg !4844
%175 = load i8*, i8** %87, align 8, !dbg !4844
%176 = bitcast [2 x i64]* %23 to %..string*, !dbg !4844
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %176, align 8, !dbg !4844
%177 = load [2 x i64], [2 x i64]* %23, align 8, !dbg !4844
call void @runtime.bounds_check_error([2 x i64] %177, i32 891, i32 32, i64 0, i64 %172), !dbg !4844
%178 = load i8, i8* %175, align 1, !dbg !4844
%179 = bitcast %io.Writer* %174 to [2 x i64]*, !dbg !4844
%180 = load [2 x i64], [2 x i64]* %179, align 8, !dbg !4844
%181 = call i32 @io.write_byte_to_writer([2 x i64] %180, i8 %178, i8* %__.context_ptr), !dbg !4844
%182 = load i64, i64* %170, align 8, !dbg !4893
%183 = load i64, i64* %89, align 8, !dbg !4893
%184 = sub i64 %182, %183, !dbg !4893
call void @fmt.fmt_write_padding(%fmt.Info* %0, i64 %184, i8* %__.context_ptr), !dbg !4893
%185 = load i64, i64* %89, align 8, !dbg !4849
%186 = bitcast [2 x i64]* %24 to %..string*, !dbg !4849
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %186, align 8, !dbg !4849
%187 = load [2 x i64], [2 x i64]* %24, align 8, !dbg !4849
call void @runtime.slice_expr_error_lo_hi([2 x i64] %187, i32 893, i32 40, i64 1, i64 %185, i64 %185), !dbg !4849
%188 = load i8*, i8** %87, align 8, !dbg !4849
%189 = getelementptr i8, i8* %188, i64 1, !dbg !4849
%190 = sub i64 %185, 1, !dbg !4849
%191 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %25, i32 0, i32 0, !dbg !4849
store i8* %189, i8** %191, align 8, !dbg !4849
%192 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %25, i32 0, i32 1, !dbg !4849
store i64 %190, i64* %192, align 8, !dbg !4849
%193 = bitcast { i8*, i64 }* %25 to %..string*, !dbg !4849
%194 = load [2 x i64], [2 x i64]* %179, align 8, !dbg !4849
%195 = bitcast %..string* %193 to [2 x i64]*, !dbg !4849
%196 = load [2 x i64], [2 x i64]* %195, align 8, !dbg !4849
%197 = call [2 x i64] @io.write_string([2 x i64] %194, [2 x i64] %196, i8* %__.context_ptr), !dbg !4849
%198 = bitcast { i64, i32 }* %26 to [2 x i64]*, !dbg !4849
store [2 x i64] %197, [2 x i64]* %198, align 8, !dbg !4849
br label %switch.done51, !dbg !4892
if.else15: ; preds = %cmp.and13, %cmp.and12, %if.then11
%199 = bitcast { i8*, i64 }* %9 to %..string*, !dbg !4894
%200 = bitcast %..string* %199 to [2 x i64]*, !dbg !4894
%201 = load [2 x i64], [2 x i64]* %200, align 8, !dbg !4894
call void @fmt._pad(%fmt.Info* %0, [2 x i64] %201, i8* %__.context_ptr), !dbg !4894
br label %switch.done51, !dbg !4892
if.else17: ; preds = %cmp.or10
%202 = load i64, i64* %89, align 8, !dbg !4850
%203 = bitcast [2 x i64]* %27 to %..string*, !dbg !4850
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %203, align 8, !dbg !4850
%204 = load [2 x i64], [2 x i64]* %27, align 8, !dbg !4850
call void @runtime.slice_expr_error_lo_hi([2 x i64] %204, i32 898, i32 21, i64 1, i64 %202, i64 %202), !dbg !4850
%205 = load i8*, i8** %87, align 8, !dbg !4850
%206 = getelementptr i8, i8* %205, i64 1, !dbg !4850
%207 = sub i64 %202, 1, !dbg !4850
%208 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %28, i32 0, i32 0, !dbg !4850
store i8* %206, i8** %208, align 8, !dbg !4850
%209 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %28, i32 0, i32 1, !dbg !4850
store i64 %207, i64* %209, align 8, !dbg !4850
%210 = bitcast { i8*, i64 }* %28 to %..string*, !dbg !4850
%211 = bitcast %..string* %210 to [2 x i64]*, !dbg !4850
%212 = load [2 x i64], [2 x i64]* %211, align 8, !dbg !4850
call void @fmt._pad(%fmt.Info* %0, [2 x i64] %212, i8* %__.context_ptr), !dbg !4850
br label %switch.done51, !dbg !4843
switch.case.body19: ; preds = %decls, %decls
call void @llvm.dbg.value(metadata i64 0, metadata !4820, metadata !DIExpression()), !dbg !4886
call void @llvm.dbg.value(metadata i64 3, metadata !4820, metadata !DIExpression()), !dbg !4886
%213 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 6, !dbg !4896
%214 = load i8, i8* %213, align 1, !dbg !4896
%215 = trunc i8 %214 to i1, !dbg !4896
br i1 %215, label %if.then20, label %if.done21, !dbg !4896
if.then20: ; preds = %switch.case.body19
%216 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 8, !dbg !4897
%217 = load i64, i64* %216, align 8, !dbg !4897
call void @llvm.dbg.value(metadata i64 %217, metadata !4820, metadata !DIExpression()), !dbg !4886
br label %if.done21, !dbg !4896
if.done21: ; preds = %if.then20, %switch.case.body19
%.052 = phi i64 [ %217, %if.then20 ], [ 3, %switch.case.body19 ], !dbg !4883
call void @llvm.dbg.value(metadata i64 %.052, metadata !4820, metadata !DIExpression()), !dbg !4886
%218 = bitcast [386 x i8]* %29 to i8*, !dbg !4852
call void @llvm.memset.p0i8.i64(i8* %218, i8 0, i64 386, i1 false), !dbg !4852
%219 = bitcast %..string* %30 to i8*, !dbg !4853
call void @llvm.memset.p0i8.i64(i8* %219, i8 0, i64 16, i1 false), !dbg !4853
%220 = bitcast [2 x i64]* %31 to %..string*, !dbg !4853
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %220, align 8, !dbg !4853
%221 = load [2 x i64], [2 x i64]* %31, align 8, !dbg !4853
call void @runtime.slice_expr_error_lo_hi([2 x i64] %221, i32 908, i32 34, i64 1, i64 386, i64 386), !dbg !4853
%222 = getelementptr [386 x i8], [386 x i8]* %29, i64 0, i64 0, !dbg !4853
%223 = getelementptr i8, i8* %222, i64 1, !dbg !4853
%224 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %32, i32 0, i32 0, !dbg !4853
store i8* %223, i8** %224, align 8, !dbg !4853
%225 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %32, i32 0, i32 1, !dbg !4853
store i64 385, i64* %225, align 8, !dbg !4853
%226 = bitcast { i8*, i64 }* %32 to [2 x i64]*, !dbg !4853
%227 = load [2 x i64], [2 x i64]* %226, align 8, !dbg !4853
%228 = call [2 x i64] @strconv.append_float([2 x i64] %227, double %1, i8 101, i64 %.052, i64 %2, i8* %__.context_ptr), !dbg !4853
%229 = bitcast %..string* %33 to [2 x i64]*, !dbg !4853
store [2 x i64] %228, [2 x i64]* %229, align 8, !dbg !4853
%230 = bitcast %..string* %33 to i8*, !dbg !4853
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %219, i8* align 8 %230, i64 16, i1 false), !dbg !4853
%231 = bitcast { i8*, i64 }* %34 to i8*, !dbg !4854
call void @llvm.memset.p0i8.i64(i8* %231, i8 0, i64 16, i1 false), !dbg !4854
%232 = getelementptr inbounds %..string, %..string* %30, i32 0, i32 1, !dbg !4854
%233 = load i64, i64* %232, align 8, !dbg !4854
%234 = add i64 %233, 1, !dbg !4854
%235 = bitcast [2 x i64]* %35 to %..string*, !dbg !4854
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %235, align 8, !dbg !4854
%236 = load [2 x i64], [2 x i64]* %35, align 8, !dbg !4854
call void @runtime.slice_expr_error_hi([2 x i64] %236, i32 909, i32 11, i64 %234, i64 386), !dbg !4854
%237 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %36, i32 0, i32 0, !dbg !4854
store i8* %222, i8** %237, align 8, !dbg !4854
%238 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %36, i32 0, i32 1, !dbg !4854
store i64 %234, i64* %238, align 8, !dbg !4854
%239 = bitcast { i8*, i64 }* %36 to i8*, !dbg !4854
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %231, i8* align 8 %239, i64 16, i1 false), !dbg !4854
%240 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %34, i32 0, i32 0, !dbg !4855
%241 = load i8*, i8** %240, align 8, !dbg !4855
%242 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %34, i32 0, i32 1, !dbg !4855
%243 = load i64, i64* %242, align 8, !dbg !4855
%244 = bitcast [2 x i64]* %37 to %..string*, !dbg !4855
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %244, align 8, !dbg !4855
%245 = load [2 x i64], [2 x i64]* %37, align 8, !dbg !4855
call void @runtime.bounds_check_error([2 x i64] %245, i32 910, i32 8, i64 1, i64 %243), !dbg !4855
%246 = getelementptr i8, i8* %241, i64 1, !dbg !4855
%247 = load i8, i8* %246, align 1, !dbg !4855
%248 = icmp eq i8 %247, 43, !dbg !4855
br i1 %248, label %if.then23, label %cmp.or22, !dbg !4855
cmp.or22: ; preds = %if.done21
%249 = load i8*, i8** %240, align 8, !dbg !4855
%250 = load i64, i64* %242, align 8, !dbg !4855
%251 = bitcast [2 x i64]* %38 to %..string*, !dbg !4855
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %251, align 8, !dbg !4855
%252 = load [2 x i64], [2 x i64]* %38, align 8, !dbg !4855
call void @runtime.bounds_check_error([2 x i64] %252, i32 910, i32 23, i64 1, i64 %250), !dbg !4855
%253 = getelementptr i8, i8* %249, i64 1, !dbg !4855
%254 = load i8, i8* %253, align 1, !dbg !4855
%255 = icmp eq i8 %254, 45, !dbg !4855
br i1 %255, label %if.then23, label %if.else24, !dbg !4855
if.then23: ; preds = %cmp.or22, %if.done21
%256 = load i64, i64* %242, align 8, !dbg !4856
%257 = bitcast [2 x i64]* %39 to %..string*, !dbg !4856
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %257, align 8, !dbg !4856
%258 = load [2 x i64], [2 x i64]* %39, align 8, !dbg !4856
call void @runtime.slice_expr_error_lo_hi([2 x i64] %258, i32 911, i32 9, i64 1, i64 %256, i64 %256), !dbg !4856
%259 = load i8*, i8** %240, align 8, !dbg !4856
%260 = getelementptr i8, i8* %259, i64 1, !dbg !4856
%261 = sub i64 %256, 1, !dbg !4856
%262 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %40, i32 0, i32 0, !dbg !4856
store i8* %260, i8** %262, align 8, !dbg !4856
%263 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %40, i32 0, i32 1, !dbg !4856
store i64 %261, i64* %263, align 8, !dbg !4856
%264 = bitcast { i8*, i64 }* %40 to i8*, !dbg !4856
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %231, i8* align 8 %264, i64 16, i1 false), !dbg !4856
br label %if.done25, !dbg !4855
if.else24: ; preds = %cmp.or22
%265 = load i8*, i8** %240, align 8, !dbg !4859
%266 = load i64, i64* %242, align 8, !dbg !4859
%267 = bitcast [2 x i64]* %41 to %..string*, !dbg !4859
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %267, align 8, !dbg !4859
%268 = load [2 x i64], [2 x i64]* %41, align 8, !dbg !4859
call void @runtime.bounds_check_error([2 x i64] %268, i32 913, i32 6, i64 0, i64 %266), !dbg !4859
store i8 43, i8* %265, align 1, !dbg !4859
br label %if.done25, !dbg !4855
if.done25: ; preds = %if.else24, %if.then23
%269 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 2, !dbg !4861
%270 = load i8, i8* %269, align 1, !dbg !4861
%271 = trunc i8 %270 to i1, !dbg !4861
br i1 %271, label %cmp.and26, label %if.done29, !dbg !4861
cmp.and26: ; preds = %if.done25
%272 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 1, !dbg !4861
%273 = load i8, i8* %272, align 1, !dbg !4861
%274 = trunc i8 %273 to i1, !dbg !4861
br i1 %274, label %if.done29, label %cmp.and27, !dbg !4861
cmp.and27: ; preds = %cmp.and26
%275 = load i8*, i8** %240, align 8, !dbg !4861
%276 = load i64, i64* %242, align 8, !dbg !4861
%277 = bitcast [2 x i64]* %42 to %..string*, !dbg !4861
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %277, align 8, !dbg !4861
%278 = load [2 x i64], [2 x i64]* %42, align 8, !dbg !4861
call void @runtime.bounds_check_error([2 x i64] %278, i32 916, i32 32, i64 0, i64 %276), !dbg !4861
%279 = load i8, i8* %275, align 1, !dbg !4861
%280 = icmp eq i8 %279, 43, !dbg !4861
br i1 %280, label %if.then28, label %if.done29, !dbg !4861
if.then28: ; preds = %cmp.and27
%281 = load i8*, i8** %240, align 8, !dbg !4862
%282 = load i64, i64* %242, align 8, !dbg !4862
%283 = bitcast [2 x i64]* %43 to %..string*, !dbg !4862
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %283, align 8, !dbg !4862
%284 = load [2 x i64], [2 x i64]* %43, align 8, !dbg !4862
call void @runtime.bounds_check_error([2 x i64] %284, i32 917, i32 6, i64 0, i64 %282), !dbg !4862
store i8 32, i8* %281, align 1, !dbg !4862
br label %if.done29, !dbg !4861
if.done29: ; preds = %if.then28, %cmp.and27, %cmp.and26, %if.done25
%285 = load i64, i64* %242, align 8, !dbg !4865
%286 = icmp sgt i64 %285, 1, !dbg !4865
br i1 %286, label %cmp.and30, label %if.done33, !dbg !4865
cmp.and30: ; preds = %if.done29
%287 = load i8*, i8** %240, align 8, !dbg !4865
%288 = bitcast [2 x i64]* %44 to %..string*, !dbg !4865
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %288, align 8, !dbg !4865
%289 = load [2 x i64], [2 x i64]* %44, align 8, !dbg !4865
call void @runtime.bounds_check_error([2 x i64] %289, i32 920, i32 23, i64 1, i64 %285), !dbg !4865
%290 = getelementptr i8, i8* %287, i64 1, !dbg !4865
%291 = load i8, i8* %290, align 1, !dbg !4865
%292 = icmp eq i8 %291, 78, !dbg !4865
br i1 %292, label %if.then32, label %cmp.or31, !dbg !4865
cmp.or31: ; preds = %cmp.and30
%293 = load i8*, i8** %240, align 8, !dbg !4865
%294 = load i64, i64* %242, align 8, !dbg !4865
%295 = bitcast [2 x i64]* %45 to %..string*, !dbg !4865
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %295, align 8, !dbg !4865
%296 = load [2 x i64], [2 x i64]* %45, align 8, !dbg !4865
call void @runtime.bounds_check_error([2 x i64] %296, i32 920, i32 38, i64 1, i64 %294), !dbg !4865
%297 = getelementptr i8, i8* %293, i64 1, !dbg !4865
%298 = load i8, i8* %297, align 1, !dbg !4865
%299 = icmp eq i8 %298, 73, !dbg !4865
br i1 %299, label %if.then32, label %if.done33, !dbg !4865
if.then32: ; preds = %cmp.or31, %cmp.and30
%300 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 13, !dbg !4866
%301 = bitcast { i8*, i64 }* %34 to %..string*, !dbg !4866
%302 = bitcast %io.Writer* %300 to [2 x i64]*, !dbg !4866
%303 = load [2 x i64], [2 x i64]* %302, align 8, !dbg !4866
%304 = bitcast %..string* %301 to [2 x i64]*, !dbg !4866
%305 = load [2 x i64], [2 x i64]* %304, align 8, !dbg !4866
%306 = call [2 x i64] @io.write_string([2 x i64] %303, [2 x i64] %305, i8* %__.context_ptr), !dbg !4866
%307 = bitcast { i64, i32 }* %46 to [2 x i64]*, !dbg !4866
store [2 x i64] %306, [2 x i64]* %307, align 8, !dbg !4866
ret void, !dbg !4900
if.done33: ; preds = %cmp.or31, %if.done29
%308 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 1, !dbg !4869
%309 = load i8, i8* %308, align 1, !dbg !4869
%310 = trunc i8 %309 to i1, !dbg !4869
br i1 %310, label %if.then35, label %cmp.or34, !dbg !4869
cmp.or34: ; preds = %if.done33
%311 = getelementptr inbounds %..string, %..string* %30, i32 0, i32 0, !dbg !4869
%312 = load i8*, i8** %311, align 8, !dbg !4869
%313 = load i64, i64* %232, align 8, !dbg !4869
%314 = bitcast [2 x i64]* %47 to %..string*, !dbg !4869
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %314, align 8, !dbg !4869
%315 = load [2 x i64], [2 x i64]* %47, align 8, !dbg !4869
call void @runtime.bounds_check_error([2 x i64] %315, i32 925, i32 21, i64 0, i64 %313), !dbg !4869
%316 = load i8, i8* %312, align 1, !dbg !4869
%317 = icmp ne i8 %316, 43, !dbg !4869
br i1 %317, label %if.then35, label %if.else41, !dbg !4869
if.then35: ; preds = %cmp.or34, %if.done33
%318 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 3, !dbg !4901
%319 = load i8, i8* %318, align 1, !dbg !4901
%320 = trunc i8 %319 to i1, !dbg !4901
br i1 %320, label %cmp.and36, label %if.else39, !dbg !4901
cmp.and36: ; preds = %if.then35
%321 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 5, !dbg !4901
%322 = load i8, i8* %321, align 1, !dbg !4901
%323 = trunc i8 %322 to i1, !dbg !4901
br i1 %323, label %cmp.and37, label %if.else39, !dbg !4901
cmp.and37: ; preds = %cmp.and36
%324 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 7, !dbg !4901
%325 = load i64, i64* %324, align 8, !dbg !4901
%326 = load i64, i64* %242, align 8, !dbg !4901
%327 = icmp sgt i64 %325, %326, !dbg !4901
br i1 %327, label %if.then38, label %if.else39, !dbg !4901
if.then38: ; preds = %cmp.and37
%328 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 13, !dbg !4870
%329 = load i8*, i8** %240, align 8, !dbg !4870
%330 = bitcast [2 x i64]* %48 to %..string*, !dbg !4870
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %330, align 8, !dbg !4870
%331 = load [2 x i64], [2 x i64]* %48, align 8, !dbg !4870
call void @runtime.bounds_check_error([2 x i64] %331, i32 927, i32 32, i64 0, i64 %326), !dbg !4870
%332 = load i8, i8* %329, align 1, !dbg !4870
%333 = bitcast %io.Writer* %328 to [2 x i64]*, !dbg !4870
%334 = load [2 x i64], [2 x i64]* %333, align 8, !dbg !4870
%335 = call i32 @io.write_byte_to_writer([2 x i64] %334, i8 %332, i8* %__.context_ptr), !dbg !4870
%336 = load i64, i64* %324, align 8, !dbg !4902
%337 = load i64, i64* %242, align 8, !dbg !4902
%338 = sub i64 %336, %337, !dbg !4902
call void @fmt.fmt_write_padding(%fmt.Info* %0, i64 %338, i8* %__.context_ptr), !dbg !4902
%339 = load i64, i64* %242, align 8, !dbg !4875
%340 = bitcast [2 x i64]* %49 to %..string*, !dbg !4875
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %340, align 8, !dbg !4875
%341 = load [2 x i64], [2 x i64]* %49, align 8, !dbg !4875
call void @runtime.slice_expr_error_lo_hi([2 x i64] %341, i32 929, i32 40, i64 1, i64 %339, i64 %339), !dbg !4875
%342 = load i8*, i8** %240, align 8, !dbg !4875
%343 = getelementptr i8, i8* %342, i64 1, !dbg !4875
%344 = sub i64 %339, 1, !dbg !4875
%345 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %50, i32 0, i32 0, !dbg !4875
store i8* %343, i8** %345, align 8, !dbg !4875
%346 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %50, i32 0, i32 1, !dbg !4875
store i64 %344, i64* %346, align 8, !dbg !4875
%347 = bitcast { i8*, i64 }* %50 to %..string*, !dbg !4875
%348 = load [2 x i64], [2 x i64]* %333, align 8, !dbg !4875
%349 = bitcast %..string* %347 to [2 x i64]*, !dbg !4875
%350 = load [2 x i64], [2 x i64]* %349, align 8, !dbg !4875
%351 = call [2 x i64] @io.write_string([2 x i64] %348, [2 x i64] %350, i8* %__.context_ptr), !dbg !4875
%352 = bitcast { i64, i32 }* %51 to [2 x i64]*, !dbg !4875
store [2 x i64] %351, [2 x i64]* %352, align 8, !dbg !4875
br label %switch.done51, !dbg !4901
if.else39: ; preds = %cmp.and37, %cmp.and36, %if.then35
%353 = bitcast { i8*, i64 }* %34 to %..string*, !dbg !4903
%354 = bitcast %..string* %353 to [2 x i64]*, !dbg !4903
%355 = load [2 x i64], [2 x i64]* %354, align 8, !dbg !4903
call void @fmt._pad(%fmt.Info* %0, [2 x i64] %355, i8* %__.context_ptr), !dbg !4903
br label %switch.done51, !dbg !4901
if.else41: ; preds = %cmp.or34
%356 = load i64, i64* %242, align 8, !dbg !4876
%357 = bitcast [2 x i64]* %52 to %..string*, !dbg !4876
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %357, align 8, !dbg !4876
%358 = load [2 x i64], [2 x i64]* %52, align 8, !dbg !4876
call void @runtime.slice_expr_error_lo_hi([2 x i64] %358, i32 934, i32 21, i64 1, i64 %356, i64 %356), !dbg !4876
%359 = load i8*, i8** %240, align 8, !dbg !4876
%360 = getelementptr i8, i8* %359, i64 1, !dbg !4876
%361 = sub i64 %356, 1, !dbg !4876
%362 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %53, i32 0, i32 0, !dbg !4876
store i8* %360, i8** %362, align 8, !dbg !4876
%363 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %53, i32 0, i32 1, !dbg !4876
store i64 %361, i64* %363, align 8, !dbg !4876
%364 = bitcast { i8*, i64 }* %53 to %..string*, !dbg !4876
%365 = bitcast %..string* %364 to [2 x i64]*, !dbg !4876
%366 = load [2 x i64], [2 x i64]* %365, align 8, !dbg !4876
call void @fmt._pad(%fmt.Info* %0, [2 x i64] %366, i8* %__.context_ptr), !dbg !4876
br label %switch.done51, !dbg !4869
switch.case.body43: ; preds = %decls, %decls
%367 = bitcast %fmt.Info* %54 to i8*, !dbg !4878
%368 = bitcast %fmt.Info* %0 to i8*, !dbg !4878
%369 = getelementptr i8, i8* %367, i64 80, !dbg !4878
call void @llvm.memset.p0i8.i64(i8* align 8 %369, i8 0, i64 0, i1 false), !dbg !4878
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %367, i8* align 8 %368, i64 80, i1 false), !dbg !4878
%370 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 4, !dbg !4905
store i8 0, i8* %370, align 1, !dbg !4905
%371 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 7, !dbg !4906
store i64 %2, i64* %371, align 8, !dbg !4906
%372 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 3, !dbg !4907
store i8 1, i8* %372, align 1, !dbg !4907
%373 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 1, !dbg !4908
store i8 0, i8* %373, align 1, !dbg !4908
call void @llvm.dbg.value(metadata i64 0, metadata !4825, metadata !DIExpression()), !dbg !4886
switch i64 %2, label %switch.default.body [
i64 16, label %switch.case.body44
i64 32, label %switch.case.body45
i64 64, label %switch.case.body46
], !dbg !4909
switch.case.body44: ; preds = %switch.case.body43
%374 = fptrunc double %1 to half, !dbg !4910
%375 = bitcast half %374 to i16, !dbg !4910
%376 = zext i16 %375 to i64, !dbg !4910
call void @llvm.dbg.value(metadata i64 %376, metadata !4825, metadata !DIExpression()), !dbg !4886
br label %switch.done, !dbg !4909
switch.case.body45: ; preds = %switch.case.body43
%377 = fptrunc double %1 to float, !dbg !4911
%378 = bitcast float %377 to i32, !dbg !4911
%379 = zext i32 %378 to i64, !dbg !4911
call void @llvm.dbg.value(metadata i64 %379, metadata !4825, metadata !DIExpression()), !dbg !4886
br label %switch.done, !dbg !4909
switch.case.body46: ; preds = %switch.case.body43
%380 = bitcast double %1 to i64, !dbg !4912
call void @llvm.dbg.value(metadata i64 %380, metadata !4825, metadata !DIExpression()), !dbg !4886
br label %switch.done, !dbg !4909
switch.default.body: ; preds = %switch.case.body43
%381 = bitcast [2 x i64]* %55 to %..string*, !dbg !4879
store %..string { i8* getelementptr inbounds ([21 x i8], [21 x i8]* @"csbs$bf", i64 0, i64 0), i64 20 }, %..string* %381, align 8, !dbg !4879
%382 = load [2 x i64], [2 x i64]* %55, align 8, !dbg !4879
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, i32 950, i32 9, %..string { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"csbs$c0", i64 0, i64 0), i64 9 } }, %runtime.Source_Code_Location* %56, align 8, !dbg !4879
call void @runtime.panic([2 x i64] %382, %runtime.Source_Code_Location* %56, i8* %__.context_ptr), !dbg !4879
unreachable, !dbg !4879
switch.done: ; preds = %switch.case.body46, %switch.case.body45, %switch.case.body44
%.0 = phi i64 [ %380, %switch.case.body46 ], [ %379, %switch.case.body45 ], [ %376, %switch.case.body44 ], !dbg !4913
call void @llvm.dbg.value(metadata i64 %.0, metadata !4825, metadata !DIExpression()), !dbg !4886
%383 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 13, !dbg !4881
%384 = bitcast %io.Writer* %383 to [2 x i64]*, !dbg !4881
%385 = load [2 x i64], [2 x i64]* %384, align 8, !dbg !4881
%386 = bitcast [2 x i64]* %57 to %..string*, !dbg !4881
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$c1", i64 0, i64 0), i64 2 }, %..string* %386, align 8, !dbg !4881
%387 = load [2 x i64], [2 x i64]* %57, align 8, !dbg !4881
%388 = call [2 x i64] @io.write_string([2 x i64] %385, [2 x i64] %387, i8* %__.context_ptr), !dbg !4881
%389 = bitcast { i64, i32 }* %58 to [2 x i64]*, !dbg !4881
store [2 x i64] %388, [2 x i64]* %389, align 8, !dbg !4881
%390 = icmp eq i32 %3, 104, !dbg !4882
%391 = load %..string, %..string* @fmt.__DIGITS_LOWER, align 8, !dbg !4882
%392 = load %..string, %..string* @fmt.__DIGITS_UPPER, align 8, !dbg !4882
%393 = select i1 %390, %..string %391, %..string %392, !dbg !4882
%394 = bitcast [2 x i64]* %59 to %..string*, !dbg !4882
store %..string %393, %..string* %394, align 8, !dbg !4882
%395 = load [2 x i64], [2 x i64]* %59, align 8, !dbg !4882
call void @fmt._fmt_int(%fmt.Info* %0, i64 %.0, i64 16, i1 false, i64 %2, [2 x i64] %395, i8* %__.context_ptr), !dbg !4882
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %368, i8* align 8 %367, i64 80, i1 false), !dbg !4914
br label %switch.done51, !dbg !4885
switch.default.body50: ; preds = %decls
call void @fmt.fmt_bad_verb(%fmt.Info* %0, i32 %3, i8* %__.context_ptr), !dbg !4915
br label %switch.done51, !dbg !4885
switch.done51: ; preds = %if.else41, %if.else39, %if.then38, %if.else17, %if.else15, %if.then14, %switch.default.body50, %switch.done
ret void, !dbg !4884
}
; Function Attrs: nounwind
define dso_local i128 @__udivmodti4(i128 %0, i128 %1, i128* %2) #0 !dbg !4916 {
decls:
call void @llvm.dbg.value(metadata i128 %0, metadata !4918, metadata !DIExpression()), !dbg !4921
call void @llvm.dbg.value(metadata i128 %1, metadata !4919, metadata !DIExpression()), !dbg !4921
call void @llvm.dbg.value(metadata i128* %2, metadata !4920, metadata !DIExpression()), !dbg !4921
%3 = call i128 @runtime.udivmod128(i128 %0, i128 %1, i128* %2), !dbg !4922
ret i128 %3, !dbg !4922
}
define internal void @reflect.write_typeid_writer([2 x i64] %0, i64 %1, i8* noalias nocapture nonnull %__.context_ptr) !dbg !4924 {
decls:
%2 = alloca %io.Writer, align 8
call void @llvm.dbg.declare(metadata %io.Writer* %3, metadata !4928, metadata !DIExpression()), !dbg !4931
%3 = alloca %io.Writer, align 8
%4 = bitcast %io.Writer* %2 to [2 x i64]*
store [2 x i64] %0, [2 x i64]* %4, align 8
%5 = bitcast %io.Writer* %3 to i8*
%6 = bitcast %io.Writer* %2 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %5, i8* align 8 %6, i64 16, i1 false)
call void @llvm.dbg.value(metadata i64 %1, metadata !4929, metadata !DIExpression()), !dbg !4932
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !4930, metadata !DIExpression()), !dbg !4933
%7 = call %runtime.Type_Info* @runtime.__type_info_of(i64 %1), !dbg !4934
%8 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !4934
%9 = load [2 x i64], [2 x i64]* %8, align 8, !dbg !4934
%10 = call i64 @reflect.write_type_writer([2 x i64] %9, %runtime.Type_Info* %7, i8* %__.context_ptr), !dbg !4934
ret void, !dbg !4933
}
; Function Attrs: nounwind
define dso_local i128 @__udivti3(i128 %0, i128 %1) #0 !dbg !4936 {
decls:
call void @llvm.dbg.value(metadata i128 %0, metadata !4938, metadata !DIExpression()), !dbg !4940
call void @llvm.dbg.value(metadata i128 %1, metadata !4939, metadata !DIExpression()), !dbg !4940
%2 = call i128 @__udivmodti4(i128 %0, i128 %1, i128* null), !dbg !4941
ret i128 %2, !dbg !4941
}
; Function Attrs: nounwind
define dso_local i128 @__modti3(i128 %0, i128 %1) #0 !dbg !4943 {
decls:
call void @llvm.dbg.declare(metadata i128* %2, metadata !4954, metadata !DIExpression()), !dbg !4955
%2 = alloca i128, align 16, !dbg !4955
call void @llvm.dbg.value(metadata i128 %0, metadata !4947, metadata !DIExpression()), !dbg !4956
call void @llvm.dbg.value(metadata i128 %1, metadata !4948, metadata !DIExpression()), !dbg !4956
call void @llvm.dbg.value(metadata i128 0, metadata !4949, metadata !DIExpression()), !dbg !4957
%3 = ashr i128 %0, 127, !dbg !4958
call void @llvm.dbg.value(metadata i128 %3, metadata !4949, metadata !DIExpression()), !dbg !4957
call void @llvm.dbg.value(metadata i128 0, metadata !4951, metadata !DIExpression()), !dbg !4957
%4 = ashr i128 %1, 127, !dbg !4959
call void @llvm.dbg.value(metadata i128 %4, metadata !4951, metadata !DIExpression()), !dbg !4957
call void @llvm.dbg.value(metadata i128 0, metadata !4952, metadata !DIExpression()), !dbg !4957
%5 = xor i128 %0, %3, !dbg !4960
%6 = sub i128 %5, %3, !dbg !4960
call void @llvm.dbg.value(metadata i128 %6, metadata !4952, metadata !DIExpression()), !dbg !4957
call void @llvm.dbg.value(metadata i128 0, metadata !4953, metadata !DIExpression()), !dbg !4957
%7 = xor i128 %1, %4, !dbg !4961
%8 = sub i128 %7, %4, !dbg !4961
call void @llvm.dbg.value(metadata i128 %8, metadata !4953, metadata !DIExpression()), !dbg !4957
store i128 undef, i128* %2, align 16, !dbg !4955
%9 = call i128 @runtime.udivmod128(i128 %6, i128 %8, i128* %2), !dbg !4962
%10 = load i128, i128* %2, align 16, !dbg !4963
%11 = xor i128 %10, %3, !dbg !4963
%12 = sub i128 %11, %3, !dbg !4963
ret i128 %12, !dbg !4963
}
define internal void @fmt.fmt_string(%fmt.Info* %0, [2 x i64] %1, i32 %2, i8* noalias nocapture nonnull %__.context_ptr) !dbg !4964 {
decls:
%3 = alloca %..string, align 8
call void @llvm.dbg.declare(metadata %..string* %4, metadata !4969, metadata !DIExpression()), !dbg !4979
%4 = alloca %..string, align 8
%5 = alloca { i64, i32 }, align 8, !dbg !4980
call void @llvm.dbg.declare(metadata %..string* %6, metadata !4977, metadata !DIExpression()), !dbg !4981
%6 = alloca %..string, align 8, !dbg !4981
%7 = alloca [2 x i64], align 8, !dbg !4982
call void @llvm.dbg.value(metadata %fmt.Info* %0, metadata !4968, metadata !DIExpression()), !dbg !4983
%8 = bitcast %..string* %3 to [2 x i64]*
store [2 x i64] %1, [2 x i64]* %8, align 8
%9 = bitcast %..string* %4 to i8*
%10 = bitcast %..string* %3 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %9, i8* align 8 %10, i64 16, i1 false)
call void @llvm.dbg.value(metadata i32 %2, metadata !4970, metadata !DIExpression()), !dbg !4983
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !4971, metadata !DIExpression()), !dbg !4984
switch i32 %2, label %switch.default.body [
i32 115, label %switch.case.body
i32 118, label %switch.case.body
i32 113, label %switch.case.body1
i32 120, label %switch.case.body2
i32 88, label %switch.case.body2
], !dbg !4985
switch.case.body: ; preds = %decls, %decls
%11 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 13, !dbg !4980
%12 = bitcast %io.Writer* %11 to [2 x i64]*, !dbg !4980
%13 = load [2 x i64], [2 x i64]* %12, align 8, !dbg !4980
%14 = bitcast %..string* %4 to [2 x i64]*, !dbg !4980
%15 = load [2 x i64], [2 x i64]* %14, align 8, !dbg !4980
%16 = call [2 x i64] @io.write_string([2 x i64] %13, [2 x i64] %15, i8* %__.context_ptr), !dbg !4980
%17 = bitcast { i64, i32 }* %5 to [2 x i64]*, !dbg !4980
store [2 x i64] %16, [2 x i64]* %17, align 8, !dbg !4980
%18 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 5, !dbg !4986
%19 = load i8, i8* %18, align 1, !dbg !4986
%20 = trunc i8 %19 to i1, !dbg !4986
br i1 %20, label %cmp.and, label %switch.done, !dbg !4986
cmp.and: ; preds = %switch.case.body
%21 = getelementptr inbounds %..string, %..string* %4, i32 0, i32 1, !dbg !4986
%22 = load i64, i64* %21, align 8, !dbg !4986
%23 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 7, !dbg !4986
%24 = load i64, i64* %23, align 8, !dbg !4986
%25 = icmp slt i64 %22, %24, !dbg !4986
br i1 %25, label %for.interval.loop, label %switch.done, !dbg !4986
for.interval.loop: ; preds = %cmp.and, %for.interval.body
%.014 = phi i64 [ %33, %for.interval.body ], [ 0, %cmp.and ], !dbg !4987
%.013 = phi i64 [ %32, %for.interval.body ], [ 0, %cmp.and ], !dbg !4987
%26 = load i64, i64* %23, align 8, !dbg !4987
%27 = load i64, i64* %21, align 8, !dbg !4987
%28 = sub i64 %26, %27, !dbg !4987
%29 = icmp slt i64 %.013, %28, !dbg !4987
br i1 %29, label %for.interval.body, label %switch.done, !dbg !4987
for.interval.body: ; preds = %for.interval.loop
%30 = load [2 x i64], [2 x i64]* %12, align 8, !dbg !4990
%31 = call i32 @io.write_byte_to_writer([2 x i64] %30, i8 32, i8* %__.context_ptr), !dbg !4990
%32 = add i64 %.013, 1, !dbg !4987
%33 = add i64 %.014, 1, !dbg !4987
br label %for.interval.loop, !dbg !4987
switch.case.body1: ; preds = %decls
%34 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 13, !dbg !4993
%35 = bitcast %io.Writer* %34 to [2 x i64]*, !dbg !4993
%36 = load [2 x i64], [2 x i64]* %35, align 8, !dbg !4993
%37 = bitcast %..string* %4 to [2 x i64]*, !dbg !4993
%38 = load [2 x i64], [2 x i64]* %37, align 8, !dbg !4993
%39 = call i64 @strings.write_quoted_string_writer([2 x i64] %36, [2 x i64] %38, i8 34, i8* %__.context_ptr), !dbg !4993
br label %switch.done, !dbg !4985
switch.case.body2: ; preds = %decls, %decls
call void @llvm.dbg.value(metadata i8 0, metadata !4972, metadata !DIExpression()), !dbg !4994
%40 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 2, !dbg !4995
%41 = load i8, i8* %40, align 1, !dbg !4995
call void @llvm.dbg.value(metadata i8 %41, metadata !4972, metadata !DIExpression()), !dbg !4994
store i8 0, i8* %40, align 1, !dbg !4996
call void @llvm.dbg.value(metadata i64 0, metadata !4975, metadata !DIExpression()), !dbg !4997
br label %for.interval.loop3, !dbg !4998
for.interval.loop3: ; preds = %if.done9, %switch.case.body2
%.012 = phi i64 [ 0, %switch.case.body2 ], [ %64, %if.done9 ], !dbg !4998
%.0 = phi i64 [ 0, %switch.case.body2 ], [ %65, %if.done9 ], !dbg !4998
%42 = getelementptr inbounds %..string, %..string* %4, i32 0, i32 1, !dbg !4998
%43 = load i64, i64* %42, align 8, !dbg !4998
%44 = icmp slt i64 %.012, %43, !dbg !4998
br i1 %44, label %for.interval.body4, label %defer, !dbg !4998
for.interval.body4: ; preds = %for.interval.loop3
call void @llvm.dbg.value(metadata i64 %.012, metadata !4975, metadata !DIExpression()), !dbg !4997
%45 = icmp sgt i64 %.012, 0, !dbg !4999
br i1 %45, label %cmp.and5, label %if.done7, !dbg !4999
cmp.and5: ; preds = %for.interval.body4
%46 = trunc i8 %41 to i1, !dbg !4999
br i1 %46, label %if.then6, label %if.done7, !dbg !4999
if.then6: ; preds = %cmp.and5
%47 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 13, !dbg !5000
%48 = bitcast %io.Writer* %47 to [2 x i64]*, !dbg !5000
%49 = load [2 x i64], [2 x i64]* %48, align 8, !dbg !5000
%50 = call i32 @io.write_byte_to_writer([2 x i64] %49, i8 32, i8* %__.context_ptr), !dbg !5000
br label %if.done7, !dbg !4999
if.done7: ; preds = %if.then6, %cmp.and5, %for.interval.body4
%51 = bitcast %..string* %6 to i8*, !dbg !4981
%52 = getelementptr i8, i8* %51, i64 16, !dbg !4981
call void @llvm.memset.p0i8.i64(i8* align 8 %52, i8 0, i64 0, i1 false), !dbg !4981
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %51, i8* align 8 bitcast (%..string* @fmt.__DIGITS_UPPER to i8*), i64 16, i1 false), !dbg !4981
%53 = icmp eq i32 %2, 120, !dbg !5003
br i1 %53, label %if.then8, label %if.done9, !dbg !5003
if.then8: ; preds = %if.done7
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %51, i8* align 8 bitcast (%..string* @fmt.__DIGITS_LOWER to i8*), i64 16, i1 false), !dbg !5004
br label %if.done9, !dbg !5003
if.done9: ; preds = %if.then8, %if.done7
%54 = getelementptr inbounds %..string, %..string* %4, i32 0, i32 0, !dbg !4982
%55 = load i8*, i8** %54, align 8, !dbg !4982
%56 = load i64, i64* %42, align 8, !dbg !4982
%57 = bitcast [2 x i64]* %7 to %..string*, !dbg !4982
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %57, align 8, !dbg !4982
%58 = load [2 x i64], [2 x i64]* %7, align 8, !dbg !4982
call void @runtime.bounds_check_error([2 x i64] %58, i32 989, i32 23, i64 %.012, i64 %56), !dbg !4982
%59 = getelementptr i8, i8* %55, i64 %.012, !dbg !4982
%60 = load i8, i8* %59, align 1, !dbg !4982
%61 = zext i8 %60 to i64, !dbg !4982
%62 = bitcast %..string* %6 to [2 x i64]*, !dbg !4982
%63 = load [2 x i64], [2 x i64]* %62, align 8, !dbg !4982
call void @fmt._fmt_int(%fmt.Info* %0, i64 %61, i64 16, i1 false, i64 8, [2 x i64] %63, i8* %__.context_ptr), !dbg !4982
%64 = add i64 %.012, 1, !dbg !4998
%65 = add i64 %.0, 1, !dbg !4998
br label %for.interval.loop3, !dbg !4998
defer: ; preds = %for.interval.loop3
store i8 %41, i8* %40, align 1, !dbg !5007
br label %switch.done, !dbg !4985
switch.default.body: ; preds = %decls
call void @fmt.fmt_bad_verb(%fmt.Info* %0, i32 %2, i8* %__.context_ptr), !dbg !5008
br label %switch.done, !dbg !4985
switch.done: ; preds = %switch.case.body, %cmp.and, %for.interval.loop, %switch.default.body, %defer, %switch.case.body1
ret void, !dbg !4984
}
define internal void @fmt.fmt_cstring(%fmt.Info* %0, i8* %1, i32 %2, i8* noalias nocapture nonnull %__.context_ptr) !dbg !5009 {
decls:
%3 = alloca %..string, align 8, !dbg !5017
call void @llvm.dbg.value(metadata %fmt.Info* %0, metadata !5013, metadata !DIExpression()), !dbg !5019
call void @llvm.dbg.value(metadata i8* %1, metadata !5014, metadata !DIExpression()), !dbg !5019
call void @llvm.dbg.value(metadata i32 %2, metadata !5015, metadata !DIExpression()), !dbg !5019
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !5016, metadata !DIExpression()), !dbg !5020
%4 = call [2 x i64] @runtime.cstring_to_string(i8* %1), !dbg !5017
%5 = bitcast %..string* %3 to [2 x i64]*, !dbg !5017
store [2 x i64] %4, [2 x i64]* %5, align 8, !dbg !5017
call void @fmt.fmt_string(%fmt.Info* %0, [2 x i64] %4, i32 %2, i8* %__.context_ptr), !dbg !5017
ret void, !dbg !5020
}
; Function Attrs: nounwind
define dso_local i128 @__divti3(i128 %0, i128 %1) #0 !dbg !5021 {
decls:
call void @llvm.dbg.value(metadata i128 %0, metadata !5023, metadata !DIExpression()), !dbg !5027
call void @llvm.dbg.value(metadata i128 %1, metadata !5024, metadata !DIExpression()), !dbg !5027
call void @llvm.dbg.value(metadata i128 0, metadata !5025, metadata !DIExpression()), !dbg !5028
%2 = call i128 @__udivmodti4(i128 %0, i128 %1, i128* null), !dbg !5029
call void @llvm.dbg.value(metadata i128 %2, metadata !5025, metadata !DIExpression()), !dbg !5028
ret i128 %2, !dbg !5030
}
define internal i64 @reflect.write_type_writer([2 x i64] %0, %runtime.Type_Info* %1, i8* noalias nocapture nonnull %__.context_ptr) !dbg !5031 {
decls:
%2 = alloca %io.Writer, align 8
call void @llvm.dbg.declare(metadata %io.Writer* %3, metadata !5035, metadata !DIExpression()), !dbg !5087
%3 = alloca %io.Writer, align 8
%4 = alloca [2 x i64], align 8, !dbg !5088
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Named* %5, metadata !5039, metadata !DIExpression()), !dbg !5091
%5 = alloca %runtime.Type_Info_Named, align 8, !dbg !5092
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Integer* %6, metadata !5041, metadata !DIExpression()), !dbg !5091
%6 = alloca %runtime.Type_Info_Integer, align 1, !dbg !5092
%7 = alloca [2 x i64], align 8, !dbg !5093
%8 = alloca [2 x i64], align 8, !dbg !5095
%9 = alloca [2 x i64], align 8, !dbg !5096
%10 = alloca { i64, i32 }, align 8, !dbg !5097
%11 = alloca [2 x i64], align 8, !dbg !5098
%12 = alloca [2 x i64], align 8, !dbg !5100
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Rune* %13, metadata !5042, metadata !DIExpression()), !dbg !5091
%13 = alloca %runtime.Type_Info_Rune, align 1, !dbg !5092
%14 = alloca [2 x i64], align 8, !dbg !5101
%15 = alloca { i64, i32 }, align 8, !dbg !5101
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Float* %16, metadata !5043, metadata !DIExpression()), !dbg !5091
%16 = alloca %runtime.Type_Info_Float, align 1, !dbg !5092
%17 = alloca { i64, i32 }, align 8, !dbg !5102
%18 = alloca [2 x i64], align 8, !dbg !5103
%19 = alloca [2 x i64], align 8, !dbg !5105
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Complex* %20, metadata !5044, metadata !DIExpression()), !dbg !5091
%20 = alloca %runtime.Type_Info_Complex, align 1, !dbg !5092
%21 = alloca [2 x i64], align 8, !dbg !5106
%22 = alloca { i64, i32 }, align 8, !dbg !5106
%23 = alloca { i64, i32 }, align 8, !dbg !5107
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Quaternion* %24, metadata !5045, metadata !DIExpression()), !dbg !5091
%24 = alloca %runtime.Type_Info_Quaternion, align 1, !dbg !5092
%25 = alloca [2 x i64], align 8, !dbg !5108
%26 = alloca { i64, i32 }, align 8, !dbg !5108
%27 = alloca { i64, i32 }, align 8, !dbg !5109
call void @llvm.dbg.declare(metadata %runtime.Type_Info_String* %28, metadata !5046, metadata !DIExpression()), !dbg !5091
%28 = alloca %runtime.Type_Info_String, align 1, !dbg !5092
%29 = alloca [2 x i64], align 8, !dbg !5110
%30 = alloca [2 x i64], align 8, !dbg !5113
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Boolean* %31, metadata !5047, metadata !DIExpression()), !dbg !5091
%31 = alloca %runtime.Type_Info_Boolean, align 1, !dbg !5092
%32 = alloca [2 x i64], align 8, !dbg !5115
%33 = alloca { i64, i32 }, align 8, !dbg !5117
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Any* %34, metadata !5048, metadata !DIExpression()), !dbg !5091
%34 = alloca %runtime.Type_Info_Any, align 1, !dbg !5092
%35 = alloca [2 x i64], align 8, !dbg !5118
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Type_Id* %36, metadata !5049, metadata !DIExpression()), !dbg !5091
%36 = alloca %runtime.Type_Info_Type_Id, align 1, !dbg !5092
%37 = alloca [2 x i64], align 8, !dbg !5119
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Pointer* %38, metadata !5050, metadata !DIExpression()), !dbg !5091
%38 = alloca %runtime.Type_Info_Pointer, align 8, !dbg !5092
%39 = alloca [2 x i64], align 8, !dbg !5120
%40 = alloca [2 x i64], align 8, !dbg !5123
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Multi_Pointer* %41, metadata !5051, metadata !DIExpression()), !dbg !5091
%41 = alloca %runtime.Type_Info_Multi_Pointer, align 8, !dbg !5092
%42 = alloca [2 x i64], align 8, !dbg !5125
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Procedure* %43, metadata !5052, metadata !DIExpression()), !dbg !5091
%43 = alloca %runtime.Type_Info_Procedure, align 8, !dbg !5092
%44 = alloca [2 x i64], align 8, !dbg !5126
%45 = alloca [2 x i64], align 8, !dbg !5127
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Tuple* %46, metadata !5053, metadata !DIExpression()), !dbg !5129
%46 = alloca %runtime.Type_Info_Tuple, align 8, !dbg !5129
%47 = alloca { %runtime.Type_Info_Tuple, i8 }, align 8, !dbg !5129
%48 = alloca [2 x i64], align 8, !dbg !5129
%49 = alloca [2 x i64], align 8, !dbg !5130
%50 = alloca [2 x i64], align 8, !dbg !5131
%51 = alloca [2 x i64], align 8, !dbg !5135
%52 = alloca [2 x i64], align 8, !dbg !5136
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Tuple* %53, metadata !5059, metadata !DIExpression()), !dbg !5091
%53 = alloca %runtime.Type_Info_Tuple, align 8, !dbg !5092
%54 = alloca [2 x i64], align 8, !dbg !5139
call void @llvm.dbg.declare(metadata %..string* %55, metadata !5061, metadata !DIExpression()), !dbg !5142
%55 = alloca %..string, align 8, !dbg !5143
call void @llvm.dbg.declare(metadata %..string* %56, metadata !5061, metadata !DIExpression()), !dbg !5142
%56 = alloca %..string, align 8, !dbg !5143
%57 = alloca [2 x i64], align 8, !dbg !5144
%58 = alloca [2 x i64], align 8, !dbg !5147
%59 = alloca [2 x i64], align 8, !dbg !5148
%60 = alloca [2 x i64], align 8, !dbg !5151
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Array* %61, metadata !5066, metadata !DIExpression()), !dbg !5091
%61 = alloca %runtime.Type_Info_Array, align 8, !dbg !5092
%62 = alloca [2 x i64], align 8, !dbg !5154
%63 = alloca { i64, i32 }, align 8, !dbg !5154
%64 = alloca { i64, i32 }, align 8, !dbg !5155
%65 = alloca [2 x i64], align 8, !dbg !5156
%66 = alloca { i64, i32 }, align 8, !dbg !5156
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Enumerated_Array* %67, metadata !5067, metadata !DIExpression()), !dbg !5091
%67 = alloca %runtime.Type_Info_Enumerated_Array, align 8, !dbg !5092
%68 = alloca [2 x i64], align 8, !dbg !5157
%69 = alloca [2 x i64], align 8, !dbg !5158
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Dynamic_Array* %70, metadata !5068, metadata !DIExpression()), !dbg !5091
%70 = alloca %runtime.Type_Info_Dynamic_Array, align 8, !dbg !5092
%71 = alloca [2 x i64], align 8, !dbg !5159
%72 = alloca { i64, i32 }, align 8, !dbg !5159
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Slice* %73, metadata !5069, metadata !DIExpression()), !dbg !5091
%73 = alloca %runtime.Type_Info_Slice, align 8, !dbg !5092
%74 = alloca [2 x i64], align 8, !dbg !5160
%75 = alloca { i64, i32 }, align 8, !dbg !5160
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Map* %76, metadata !5070, metadata !DIExpression()), !dbg !5091
%76 = alloca %runtime.Type_Info_Map, align 8, !dbg !5092
%77 = alloca [2 x i64], align 8, !dbg !5161
%78 = alloca { i64, i32 }, align 8, !dbg !5161
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Struct* %79, metadata !5071, metadata !DIExpression()), !dbg !5091
%79 = alloca %runtime.Type_Info_Struct, align 8, !dbg !5092
%80 = alloca [2 x i64], align 8, !dbg !5162
%81 = alloca { i64, i32 }, align 8, !dbg !5162
%82 = alloca { i64, i32 }, align 8, !dbg !5164
%83 = alloca [2 x i64], align 8, !dbg !5165
%84 = alloca { i64, i32 }, align 8, !dbg !5165
%85 = alloca [2 x i64], align 8, !dbg !5166
%86 = alloca { i64, i32 }, align 8, !dbg !5166
%87 = alloca [2 x i64], align 8, !dbg !5167
%88 = alloca [2 x i64], align 8, !dbg !5168
%89 = alloca [2 x i64], align 8, !dbg !5171
%90 = alloca [2 x i64], align 8, !dbg !5174
%91 = alloca { i64, i32 }, align 8, !dbg !5174
%92 = alloca { i64, i32 }, align 8, !dbg !5177
call void @llvm.dbg.declare(metadata %..string* %93, metadata !5072, metadata !DIExpression()), !dbg !5178
%93 = alloca %..string, align 8, !dbg !5179
call void @llvm.dbg.declare(metadata %..string* %94, metadata !5072, metadata !DIExpression()), !dbg !5178
%94 = alloca %..string, align 8, !dbg !5179
%95 = alloca [2 x i64], align 8, !dbg !5180
%96 = alloca { i64, i32 }, align 8, !dbg !5184
%97 = alloca [2 x i64], align 8, !dbg !5185
%98 = alloca { i64, i32 }, align 8, !dbg !5185
%99 = alloca [2 x i64], align 8, !dbg !5186
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Union* %100, metadata !5075, metadata !DIExpression()), !dbg !5091
%100 = alloca %runtime.Type_Info_Union, align 8, !dbg !5092
%101 = alloca [2 x i64], align 8, !dbg !5187
%102 = alloca [2 x i64], align 8, !dbg !5188
%103 = alloca { i64, i32 }, align 8, !dbg !5191
%104 = alloca [2 x i64], align 8, !dbg !5192
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Enum* %105, metadata !5079, metadata !DIExpression()), !dbg !5091
%105 = alloca %runtime.Type_Info_Enum, align 8, !dbg !5092
%106 = alloca [2 x i64], align 8, !dbg !5196
%107 = alloca [2 x i64], align 8, !dbg !5197
call void @llvm.dbg.declare(metadata %..string* %108, metadata !5080, metadata !DIExpression()), !dbg !5198
%108 = alloca %..string, align 8, !dbg !5199
call void @llvm.dbg.declare(metadata %..string* %109, metadata !5080, metadata !DIExpression()), !dbg !5198
%109 = alloca %..string, align 8, !dbg !5199
%110 = alloca [2 x i64], align 8, !dbg !5200
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Bit_Set* %111, metadata !5083, metadata !DIExpression()), !dbg !5091
%111 = alloca %runtime.Type_Info_Bit_Set, align 8, !dbg !5092
%112 = alloca [2 x i64], align 8, !dbg !5204
%113 = alloca [2 x i64], align 8, !dbg !5205
%114 = alloca { i64, i32 }, align 8, !dbg !5207
%115 = alloca [2 x i64], align 8, !dbg !5208
%116 = alloca { i64, i32 }, align 8, !dbg !5209
%117 = alloca [2 x i64], align 8, !dbg !5210
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Simd_Vector* %118, metadata !5084, metadata !DIExpression()), !dbg !5091
%118 = alloca %runtime.Type_Info_Simd_Vector, align 8, !dbg !5092
%119 = alloca [2 x i64], align 8, !dbg !5213
%120 = alloca { i64, i32 }, align 8, !dbg !5214
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Relative_Pointer* %121, metadata !5085, metadata !DIExpression()), !dbg !5091
%121 = alloca %runtime.Type_Info_Relative_Pointer, align 8, !dbg !5092
%122 = alloca [2 x i64], align 8, !dbg !5215
%123 = alloca [2 x i64], align 8, !dbg !5216
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Relative_Slice* %124, metadata !5086, metadata !DIExpression()), !dbg !5091
%124 = alloca %runtime.Type_Info_Relative_Slice, align 8, !dbg !5092
%125 = alloca [2 x i64], align 8, !dbg !5217
%126 = alloca [2 x i64], align 8, !dbg !5218
%127 = bitcast %io.Writer* %2 to [2 x i64]*
store [2 x i64] %0, [2 x i64]* %127, align 8
%128 = bitcast %io.Writer* %3 to i8*
%129 = bitcast %io.Writer* %2 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %128, i8* align 8 %129, i64 16, i1 false)
call void @llvm.dbg.value(metadata %runtime.Type_Info* %1, metadata !5036, metadata !DIExpression()), !dbg !5219
call void @llvm.dbg.value(metadata i64 0, metadata !5037, metadata !DIExpression()), !dbg !5219
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !5038, metadata !DIExpression()), !dbg !5220
%130 = icmp eq %runtime.Type_Info* %1, null, !dbg !5221
br i1 %130, label %if.then, label %if.done, !dbg !5221
if.then: ; preds = %decls
%131 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5088
%132 = load [2 x i64], [2 x i64]* %131, align 8, !dbg !5088
%133 = bitcast [2 x i64]* %4 to %..string*, !dbg !5088
store %..string { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"csbs$c2", i64 0, i64 0), i64 3 }, %..string* %133, align 8, !dbg !5088
%134 = load [2 x i64], [2 x i64]* %4, align 8, !dbg !5088
%135 = call i64 @strings.write_string_writer([2 x i64] %132, [2 x i64] %134, i8* %__.context_ptr), !dbg !5088
call void @llvm.dbg.value(metadata i64 %135, metadata !5037, metadata !DIExpression()), !dbg !5219
ret i64 %135, !dbg !5088
if.done: ; preds = %decls
%136 = getelementptr inbounds %runtime.Type_Info, %runtime.Type_Info* %1, i32 0, i32 4, !dbg !5092
%137 = bitcast { [0 x i64], [120 x i8], i64 }* %136 to i8*, !dbg !5092
%138 = getelementptr inbounds { [0 x i64], [120 x i8], i64 }, { [0 x i64], [120 x i8], i64 }* %136, i32 0, i32 2, !dbg !5092
%139 = load i64, i64* %138, align 8, !dbg !5092
switch i64 %139, label %typeswitch.done [
i64 1, label %typeswitch.body
i64 2, label %typeswitch.body1
i64 3, label %typeswitch.body10
i64 4, label %typeswitch.body11
i64 5, label %typeswitch.body16
i64 6, label %typeswitch.body17
i64 7, label %typeswitch.body18
i64 8, label %typeswitch.body22
i64 9, label %typeswitch.body26
i64 10, label %typeswitch.body27
i64 11, label %typeswitch.body28
i64 12, label %typeswitch.body32
i64 13, label %typeswitch.body33
i64 18, label %typeswitch.body41
i64 14, label %typeswitch.body53
i64 15, label %typeswitch.body54
i64 16, label %typeswitch.body55
i64 17, label %typeswitch.body56
i64 22, label %typeswitch.body57
i64 19, label %typeswitch.body58
i64 20, label %typeswitch.body75
i64 21, label %typeswitch.body83
i64 23, label %typeswitch.body89
i64 24, label %typeswitch.body97
i64 25, label %typeswitch.body98
i64 26, label %typeswitch.body99
], !dbg !5092
typeswitch.body: ; preds = %if.done
%140 = bitcast %runtime.Type_Info_Named* %5 to i8*, !dbg !5092
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %140, i8* align 8 %137, i64 80, i1 false), !dbg !5092
%141 = getelementptr inbounds %runtime.Type_Info_Named, %runtime.Type_Info_Named* %5, i32 0, i32 0, !dbg !5222
%142 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5222
%143 = load [2 x i64], [2 x i64]* %142, align 8, !dbg !5222
%144 = bitcast %..string* %141 to [2 x i64]*, !dbg !5222
%145 = load [2 x i64], [2 x i64]* %144, align 8, !dbg !5222
%146 = call i64 @strings.write_string_writer([2 x i64] %143, [2 x i64] %145, i8* %__.context_ptr), !dbg !5222
call void @llvm.dbg.value(metadata i64 %146, metadata !5037, metadata !DIExpression()), !dbg !5219
ret i64 %146, !dbg !5222
typeswitch.body1: ; preds = %if.done
%147 = bitcast %runtime.Type_Info_Integer* %6 to i8*, !dbg !5092
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %147, i8* align 1 %137, i64 2, i1 false), !dbg !5092
%148 = getelementptr inbounds %runtime.Type_Info, %runtime.Type_Info* %1, i32 0, i32 3, !dbg !5223
%149 = load i64, i64* %148, align 8, !dbg !5223
switch i64 %149, label %switch.default.body [
i64 4683743612465315841, label %switch.case.body
i64 72057594037928035, label %switch.case.body2
i64 72057594037927998, label %switch.case.body3
], !dbg !5223
switch.case.body: ; preds = %typeswitch.body1
%150 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5093
%151 = load [2 x i64], [2 x i64]* %150, align 8, !dbg !5093
%152 = bitcast [2 x i64]* %7 to %..string*, !dbg !5093
store %..string { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"csbs$c3", i64 0, i64 0), i64 3 }, %..string* %152, align 8, !dbg !5093
%153 = load [2 x i64], [2 x i64]* %7, align 8, !dbg !5093
%154 = call i64 @strings.write_string_writer([2 x i64] %151, [2 x i64] %153, i8* %__.context_ptr), !dbg !5093
call void @llvm.dbg.value(metadata i64 %154, metadata !5037, metadata !DIExpression()), !dbg !5219
ret i64 %154, !dbg !5093
switch.case.body2: ; preds = %typeswitch.body1
%155 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5095
%156 = load [2 x i64], [2 x i64]* %155, align 8, !dbg !5095
%157 = bitcast [2 x i64]* %8 to %..string*, !dbg !5095
store %..string { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"csbs$c4", i64 0, i64 0), i64 4 }, %..string* %157, align 8, !dbg !5095
%158 = load [2 x i64], [2 x i64]* %8, align 8, !dbg !5095
%159 = call i64 @strings.write_string_writer([2 x i64] %156, [2 x i64] %158, i8* %__.context_ptr), !dbg !5095
call void @llvm.dbg.value(metadata i64 %159, metadata !5037, metadata !DIExpression()), !dbg !5219
ret i64 %159, !dbg !5095
switch.case.body3: ; preds = %typeswitch.body1
%160 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5096
%161 = load [2 x i64], [2 x i64]* %160, align 8, !dbg !5096
%162 = bitcast [2 x i64]* %9 to %..string*, !dbg !5096
store %..string { i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"csbs$c5", i64 0, i64 0), i64 7 }, %..string* %162, align 8, !dbg !5096
%163 = load [2 x i64], [2 x i64]* %9, align 8, !dbg !5096
%164 = call i64 @strings.write_string_writer([2 x i64] %161, [2 x i64] %163, i8* %__.context_ptr), !dbg !5096
call void @llvm.dbg.value(metadata i64 %164, metadata !5037, metadata !DIExpression()), !dbg !5219
ret i64 %164, !dbg !5096
switch.default.body: ; preds = %typeswitch.body1
%165 = getelementptr inbounds %runtime.Type_Info_Integer, %runtime.Type_Info_Integer* %6, i32 0, i32 0, !dbg !5224
%166 = load i8, i8* %165, align 1, !dbg !5224
%167 = trunc i8 %166 to i1, !dbg !5224
%. = select i1 %167, i8 105, i8 117, !dbg !5224
%168 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5224
%169 = load [2 x i64], [2 x i64]* %168, align 8, !dbg !5224
%170 = call i32 @io.write_byte_to_writer([2 x i64] %169, i8 %., i8* %__.context_ptr), !dbg !5224
%171 = call i64 @reflect.write_type_writer._n1-0(i32 %170, i8* %__.context_ptr), !dbg !5224
call void @llvm.dbg.value(metadata i64 %171, metadata !5037, metadata !DIExpression()), !dbg !5219
%172 = getelementptr inbounds %runtime.Type_Info, %runtime.Type_Info* %1, i32 0, i32 0, !dbg !5097
%173 = load i64, i64* %172, align 8, !dbg !5097
%174 = mul i64 8, %173, !dbg !5097
%175 = load [2 x i64], [2 x i64]* %168, align 8, !dbg !5097
%176 = call [2 x i64] @io.write_i64([2 x i64] %175, i64 %174, i64 10, i8* %__.context_ptr), !dbg !5097
%177 = bitcast { i64, i32 }* %10 to [2 x i64]*, !dbg !5097
store [2 x i64] %176, [2 x i64]* %177, align 8, !dbg !5097
%178 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %10, i32 0, i32 0, !dbg !5097
%179 = load i64, i64* %178, align 8, !dbg !5097
%180 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %10, i32 0, i32 1, !dbg !5097
%181 = load i32, i32* %180, align 4, !dbg !5097
%182 = call i64 @reflect.write_type_writer._n2-1(i64 %179, i32 %181, i8* %__.context_ptr), !dbg !5097
%183 = add i64 %171, %182, !dbg !5097
call void @llvm.dbg.value(metadata i64 %183, metadata !5037, metadata !DIExpression()), !dbg !5219
%184 = getelementptr inbounds %runtime.Type_Info_Integer, %runtime.Type_Info_Integer* %6, i32 0, i32 1, !dbg !5225
%185 = load i8, i8* %184, align 1, !dbg !5225
switch i8 %185, label %typeswitch.done [
i8 2, label %switch.case.body8
i8 1, label %switch.case.body7
], !dbg !5225
switch.case.body7: ; preds = %switch.default.body
%186 = load [2 x i64], [2 x i64]* %168, align 8, !dbg !5098
%187 = bitcast [2 x i64]* %11 to %..string*, !dbg !5098
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$c6", i64 0, i64 0), i64 2 }, %..string* %187, align 8, !dbg !5098
%188 = load [2 x i64], [2 x i64]* %11, align 8, !dbg !5098
%189 = call i64 @strings.write_string_writer([2 x i64] %186, [2 x i64] %188, i8* %__.context_ptr), !dbg !5098
%190 = add i64 %183, %189, !dbg !5098
call void @llvm.dbg.value(metadata i64 %190, metadata !5037, metadata !DIExpression()), !dbg !5219
br label %typeswitch.done, !dbg !5225
switch.case.body8: ; preds = %switch.default.body
%191 = load [2 x i64], [2 x i64]* %168, align 8, !dbg !5100
%192 = bitcast [2 x i64]* %12 to %..string*, !dbg !5100
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$c7", i64 0, i64 0), i64 2 }, %..string* %192, align 8, !dbg !5100
%193 = load [2 x i64], [2 x i64]* %12, align 8, !dbg !5100
%194 = call i64 @strings.write_string_writer([2 x i64] %191, [2 x i64] %193, i8* %__.context_ptr), !dbg !5100
%195 = add i64 %183, %194, !dbg !5100
call void @llvm.dbg.value(metadata i64 %195, metadata !5037, metadata !DIExpression()), !dbg !5219
br label %typeswitch.done, !dbg !5225
typeswitch.body10: ; preds = %if.done
%196 = bitcast %runtime.Type_Info_Rune* %13 to i8*, !dbg !5092
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %196, i8* align 1 %137, i64 0, i1 false), !dbg !5092
%197 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5101
%198 = load [2 x i64], [2 x i64]* %197, align 8, !dbg !5101
%199 = bitcast [2 x i64]* %14 to %..string*, !dbg !5101
store %..string { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"csbs$c8", i64 0, i64 0), i64 4 }, %..string* %199, align 8, !dbg !5101
%200 = load [2 x i64], [2 x i64]* %14, align 8, !dbg !5101
%201 = call [2 x i64] @io.write_string([2 x i64] %198, [2 x i64] %200, i8* %__.context_ptr), !dbg !5101
%202 = bitcast { i64, i32 }* %15 to [2 x i64]*, !dbg !5101
store [2 x i64] %201, [2 x i64]* %202, align 8, !dbg !5101
%203 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %15, i32 0, i32 0, !dbg !5101
%204 = load i64, i64* %203, align 8, !dbg !5101
%205 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %15, i32 0, i32 1, !dbg !5101
%206 = load i32, i32* %205, align 4, !dbg !5101
%207 = call i64 @reflect.write_type_writer._n2-1(i64 %204, i32 %206, i8* %__.context_ptr), !dbg !5101
call void @llvm.dbg.value(metadata i64 %207, metadata !5037, metadata !DIExpression()), !dbg !5219
br label %typeswitch.done, !dbg !5092
typeswitch.body11: ; preds = %if.done
%208 = bitcast %runtime.Type_Info_Float* %16 to i8*, !dbg !5092
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %208, i8* align 1 %137, i64 1, i1 false), !dbg !5092
%209 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5226
%210 = load [2 x i64], [2 x i64]* %209, align 8, !dbg !5226
%211 = call i32 @io.write_byte_to_writer([2 x i64] %210, i8 102, i8* %__.context_ptr), !dbg !5226
%212 = call i64 @reflect.write_type_writer._n1-0(i32 %211, i8* %__.context_ptr), !dbg !5226
call void @llvm.dbg.value(metadata i64 %212, metadata !5037, metadata !DIExpression()), !dbg !5219
%213 = getelementptr inbounds %runtime.Type_Info, %runtime.Type_Info* %1, i32 0, i32 0, !dbg !5102
%214 = load i64, i64* %213, align 8, !dbg !5102
%215 = mul i64 8, %214, !dbg !5102
%216 = load [2 x i64], [2 x i64]* %209, align 8, !dbg !5102
%217 = call [2 x i64] @io.write_i64([2 x i64] %216, i64 %215, i64 10, i8* %__.context_ptr), !dbg !5102
%218 = bitcast { i64, i32 }* %17 to [2 x i64]*, !dbg !5102
store [2 x i64] %217, [2 x i64]* %218, align 8, !dbg !5102
%219 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %17, i32 0, i32 0, !dbg !5102
%220 = load i64, i64* %219, align 8, !dbg !5102
%221 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %17, i32 0, i32 1, !dbg !5102
%222 = load i32, i32* %221, align 4, !dbg !5102
%223 = call i64 @reflect.write_type_writer._n2-1(i64 %220, i32 %222, i8* %__.context_ptr), !dbg !5102
%224 = add i64 %212, %223, !dbg !5102
call void @llvm.dbg.value(metadata i64 %224, metadata !5037, metadata !DIExpression()), !dbg !5219
%225 = getelementptr inbounds %runtime.Type_Info_Float, %runtime.Type_Info_Float* %16, i32 0, i32 0, !dbg !5227
%226 = load i8, i8* %225, align 1, !dbg !5227
switch i8 %226, label %typeswitch.done [
i8 2, label %switch.case.body14
i8 1, label %switch.case.body13
], !dbg !5227
switch.case.body13: ; preds = %typeswitch.body11
%227 = load [2 x i64], [2 x i64]* %209, align 8, !dbg !5103
%228 = bitcast [2 x i64]* %18 to %..string*, !dbg !5103
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$c6", i64 0, i64 0), i64 2 }, %..string* %228, align 8, !dbg !5103
%229 = load [2 x i64], [2 x i64]* %18, align 8, !dbg !5103
%230 = call i64 @strings.write_string_writer([2 x i64] %227, [2 x i64] %229, i8* %__.context_ptr), !dbg !5103
%231 = add i64 %224, %230, !dbg !5103
call void @llvm.dbg.value(metadata i64 %231, metadata !5037, metadata !DIExpression()), !dbg !5219
br label %typeswitch.done, !dbg !5227
switch.case.body14: ; preds = %typeswitch.body11
%232 = load [2 x i64], [2 x i64]* %209, align 8, !dbg !5105
%233 = bitcast [2 x i64]* %19 to %..string*, !dbg !5105
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$c7", i64 0, i64 0), i64 2 }, %..string* %233, align 8, !dbg !5105
%234 = load [2 x i64], [2 x i64]* %19, align 8, !dbg !5105
%235 = call i64 @strings.write_string_writer([2 x i64] %232, [2 x i64] %234, i8* %__.context_ptr), !dbg !5105
%236 = add i64 %224, %235, !dbg !5105
call void @llvm.dbg.value(metadata i64 %236, metadata !5037, metadata !DIExpression()), !dbg !5219
br label %typeswitch.done, !dbg !5227
typeswitch.body16: ; preds = %if.done
%237 = bitcast %runtime.Type_Info_Complex* %20 to i8*, !dbg !5092
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %237, i8* align 1 %137, i64 0, i1 false), !dbg !5092
%238 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5106
%239 = load [2 x i64], [2 x i64]* %238, align 8, !dbg !5106
%240 = bitcast [2 x i64]* %21 to %..string*, !dbg !5106
store %..string { i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"csbs$c9", i64 0, i64 0), i64 7 }, %..string* %240, align 8, !dbg !5106
%241 = load [2 x i64], [2 x i64]* %21, align 8, !dbg !5106
%242 = call [2 x i64] @io.write_string([2 x i64] %239, [2 x i64] %241, i8* %__.context_ptr), !dbg !5106
%243 = bitcast { i64, i32 }* %22 to [2 x i64]*, !dbg !5106
store [2 x i64] %242, [2 x i64]* %243, align 8, !dbg !5106
%244 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %22, i32 0, i32 0, !dbg !5106
%245 = load i64, i64* %244, align 8, !dbg !5106
%246 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %22, i32 0, i32 1, !dbg !5106
%247 = load i32, i32* %246, align 4, !dbg !5106
%248 = call i64 @reflect.write_type_writer._n2-1(i64 %245, i32 %247, i8* %__.context_ptr), !dbg !5106
call void @llvm.dbg.value(metadata i64 %248, metadata !5037, metadata !DIExpression()), !dbg !5219
%249 = getelementptr inbounds %runtime.Type_Info, %runtime.Type_Info* %1, i32 0, i32 0, !dbg !5107
%250 = load i64, i64* %249, align 8, !dbg !5107
%251 = mul i64 8, %250, !dbg !5107
%252 = load [2 x i64], [2 x i64]* %238, align 8, !dbg !5107
%253 = call [2 x i64] @io.write_i64([2 x i64] %252, i64 %251, i64 10, i8* %__.context_ptr), !dbg !5107
%254 = bitcast { i64, i32 }* %23 to [2 x i64]*, !dbg !5107
store [2 x i64] %253, [2 x i64]* %254, align 8, !dbg !5107
%255 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %23, i32 0, i32 0, !dbg !5107
%256 = load i64, i64* %255, align 8, !dbg !5107
%257 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %23, i32 0, i32 1, !dbg !5107
%258 = load i32, i32* %257, align 4, !dbg !5107
%259 = call i64 @reflect.write_type_writer._n2-1(i64 %256, i32 %258, i8* %__.context_ptr), !dbg !5107
%260 = add i64 %248, %259, !dbg !5107
call void @llvm.dbg.value(metadata i64 %260, metadata !5037, metadata !DIExpression()), !dbg !5219
br label %typeswitch.done, !dbg !5092
typeswitch.body17: ; preds = %if.done
%261 = bitcast %runtime.Type_Info_Quaternion* %24 to i8*, !dbg !5092
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %261, i8* align 1 %137, i64 0, i1 false), !dbg !5092
%262 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5108
%263 = load [2 x i64], [2 x i64]* %262, align 8, !dbg !5108
%264 = bitcast [2 x i64]* %25 to %..string*, !dbg !5108
store %..string { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"csbs$ca", i64 0, i64 0), i64 10 }, %..string* %264, align 8, !dbg !5108
%265 = load [2 x i64], [2 x i64]* %25, align 8, !dbg !5108
%266 = call [2 x i64] @io.write_string([2 x i64] %263, [2 x i64] %265, i8* %__.context_ptr), !dbg !5108
%267 = bitcast { i64, i32 }* %26 to [2 x i64]*, !dbg !5108
store [2 x i64] %266, [2 x i64]* %267, align 8, !dbg !5108
%268 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %26, i32 0, i32 0, !dbg !5108
%269 = load i64, i64* %268, align 8, !dbg !5108
%270 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %26, i32 0, i32 1, !dbg !5108
%271 = load i32, i32* %270, align 4, !dbg !5108
%272 = call i64 @reflect.write_type_writer._n2-1(i64 %269, i32 %271, i8* %__.context_ptr), !dbg !5108
call void @llvm.dbg.value(metadata i64 %272, metadata !5037, metadata !DIExpression()), !dbg !5219
%273 = getelementptr inbounds %runtime.Type_Info, %runtime.Type_Info* %1, i32 0, i32 0, !dbg !5109
%274 = load i64, i64* %273, align 8, !dbg !5109
%275 = mul i64 8, %274, !dbg !5109
%276 = load [2 x i64], [2 x i64]* %262, align 8, !dbg !5109
%277 = call [2 x i64] @io.write_i64([2 x i64] %276, i64 %275, i64 10, i8* %__.context_ptr), !dbg !5109
%278 = bitcast { i64, i32 }* %27 to [2 x i64]*, !dbg !5109
store [2 x i64] %277, [2 x i64]* %278, align 8, !dbg !5109
%279 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %27, i32 0, i32 0, !dbg !5109
%280 = load i64, i64* %279, align 8, !dbg !5109
%281 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %27, i32 0, i32 1, !dbg !5109
%282 = load i32, i32* %281, align 4, !dbg !5109
%283 = call i64 @reflect.write_type_writer._n2-1(i64 %280, i32 %282, i8* %__.context_ptr), !dbg !5109
%284 = add i64 %272, %283, !dbg !5109
call void @llvm.dbg.value(metadata i64 %284, metadata !5037, metadata !DIExpression()), !dbg !5219
br label %typeswitch.done, !dbg !5092
typeswitch.body18: ; preds = %if.done
%285 = bitcast %runtime.Type_Info_String* %28 to i8*, !dbg !5092
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %285, i8* align 1 %137, i64 1, i1 false), !dbg !5092
%286 = getelementptr inbounds %runtime.Type_Info_String, %runtime.Type_Info_String* %28, i32 0, i32 0, !dbg !5228
%287 = load i8, i8* %286, align 1, !dbg !5228
%288 = trunc i8 %287 to i1, !dbg !5228
%289 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5229
%290 = load [2 x i64], [2 x i64]* %289, align 8, !dbg !5229
br i1 %288, label %if.then19, label %if.else20, !dbg !5228
if.then19: ; preds = %typeswitch.body18
%291 = bitcast [2 x i64]* %29 to %..string*, !dbg !5110
store %..string { i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"csbs$cb", i64 0, i64 0), i64 7 }, %..string* %291, align 8, !dbg !5110
%292 = load [2 x i64], [2 x i64]* %29, align 8, !dbg !5110
%293 = call i64 @strings.write_string_writer([2 x i64] %290, [2 x i64] %292, i8* %__.context_ptr), !dbg !5110
call void @llvm.dbg.value(metadata i64 %293, metadata !5037, metadata !DIExpression()), !dbg !5219
br label %typeswitch.done, !dbg !5228
if.else20: ; preds = %typeswitch.body18
%294 = bitcast [2 x i64]* %30 to %..string*, !dbg !5113
store %..string { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"csbs$cc", i64 0, i64 0), i64 6 }, %..string* %294, align 8, !dbg !5113
%295 = load [2 x i64], [2 x i64]* %30, align 8, !dbg !5113
%296 = call i64 @strings.write_string_writer([2 x i64] %290, [2 x i64] %295, i8* %__.context_ptr), !dbg !5113
call void @llvm.dbg.value(metadata i64 %296, metadata !5037, metadata !DIExpression()), !dbg !5219
br label %typeswitch.done, !dbg !5228
typeswitch.body22: ; preds = %if.done
%297 = bitcast %runtime.Type_Info_Boolean* %31 to i8*, !dbg !5092
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %297, i8* align 1 %137, i64 0, i1 false), !dbg !5092
%298 = getelementptr inbounds %runtime.Type_Info, %runtime.Type_Info* %1, i32 0, i32 3, !dbg !5230
%299 = load i64, i64* %298, align 8, !dbg !5230
%cond = icmp eq i64 %299, 504403158265495575, !dbg !5230
%300 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5231
%301 = load [2 x i64], [2 x i64]* %300, align 8, !dbg !5231
br i1 %cond, label %switch.case.body23, label %switch.default.body24, !dbg !5230
switch.case.body23: ; preds = %typeswitch.body22
%302 = bitcast [2 x i64]* %32 to %..string*, !dbg !5115
store %..string { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"csbs$cd", i64 0, i64 0), i64 4 }, %..string* %302, align 8, !dbg !5115
%303 = load [2 x i64], [2 x i64]* %32, align 8, !dbg !5115
%304 = call i64 @strings.write_string_writer([2 x i64] %301, [2 x i64] %303, i8* %__.context_ptr), !dbg !5115
call void @llvm.dbg.value(metadata i64 %304, metadata !5037, metadata !DIExpression()), !dbg !5219
br label %typeswitch.done, !dbg !5230
switch.default.body24: ; preds = %typeswitch.body22
%305 = call i32 @io.write_byte_to_writer([2 x i64] %301, i8 98, i8* %__.context_ptr), !dbg !5232
%306 = call i64 @reflect.write_type_writer._n1-0(i32 %305, i8* %__.context_ptr), !dbg !5232
call void @llvm.dbg.value(metadata i64 %306, metadata !5037, metadata !DIExpression()), !dbg !5219
%307 = getelementptr inbounds %runtime.Type_Info, %runtime.Type_Info* %1, i32 0, i32 0, !dbg !5117
%308 = load i64, i64* %307, align 8, !dbg !5117
%309 = mul i64 8, %308, !dbg !5117
%310 = load [2 x i64], [2 x i64]* %300, align 8, !dbg !5117
%311 = call [2 x i64] @io.write_i64([2 x i64] %310, i64 %309, i64 10, i8* %__.context_ptr), !dbg !5117
%312 = bitcast { i64, i32 }* %33 to [2 x i64]*, !dbg !5117
store [2 x i64] %311, [2 x i64]* %312, align 8, !dbg !5117
%313 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %33, i32 0, i32 0, !dbg !5117
%314 = load i64, i64* %313, align 8, !dbg !5117
%315 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %33, i32 0, i32 1, !dbg !5117
%316 = load i32, i32* %315, align 4, !dbg !5117
%317 = call i64 @reflect.write_type_writer._n2-1(i64 %314, i32 %316, i8* %__.context_ptr), !dbg !5117
%318 = add i64 %306, %317, !dbg !5117
call void @llvm.dbg.value(metadata i64 %318, metadata !5037, metadata !DIExpression()), !dbg !5219
br label %typeswitch.done, !dbg !5230
typeswitch.body26: ; preds = %if.done
%319 = bitcast %runtime.Type_Info_Any* %34 to i8*, !dbg !5092
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %319, i8* align 1 %137, i64 0, i1 false), !dbg !5092
%320 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5118
%321 = load [2 x i64], [2 x i64]* %320, align 8, !dbg !5118
%322 = bitcast [2 x i64]* %35 to %..string*, !dbg !5118
store %..string { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"csbs$ce", i64 0, i64 0), i64 3 }, %..string* %322, align 8, !dbg !5118
%323 = load [2 x i64], [2 x i64]* %35, align 8, !dbg !5118
%324 = call i64 @strings.write_string_writer([2 x i64] %321, [2 x i64] %323, i8* %__.context_ptr), !dbg !5118
call void @llvm.dbg.value(metadata i64 %324, metadata !5037, metadata !DIExpression()), !dbg !5219
br label %typeswitch.done, !dbg !5092
typeswitch.body27: ; preds = %if.done
%325 = bitcast %runtime.Type_Info_Type_Id* %36 to i8*, !dbg !5092
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %325, i8* align 1 %137, i64 0, i1 false), !dbg !5092
%326 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5119
%327 = load [2 x i64], [2 x i64]* %326, align 8, !dbg !5119
%328 = bitcast [2 x i64]* %37 to %..string*, !dbg !5119
store %..string { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"csbs$cf", i64 0, i64 0), i64 6 }, %..string* %328, align 8, !dbg !5119
%329 = load [2 x i64], [2 x i64]* %37, align 8, !dbg !5119
%330 = call i64 @strings.write_string_writer([2 x i64] %327, [2 x i64] %329, i8* %__.context_ptr), !dbg !5119
call void @llvm.dbg.value(metadata i64 %330, metadata !5037, metadata !DIExpression()), !dbg !5219
br label %typeswitch.done, !dbg !5092
typeswitch.body28: ; preds = %if.done
%331 = bitcast %runtime.Type_Info_Pointer* %38 to i8*, !dbg !5092
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %331, i8* align 8 %137, i64 8, i1 false), !dbg !5092
%332 = getelementptr inbounds %runtime.Type_Info_Pointer, %runtime.Type_Info_Pointer* %38, i32 0, i32 0, !dbg !5233
%333 = load %runtime.Type_Info*, %runtime.Type_Info** %332, align 8, !dbg !5233
%334 = icmp eq %runtime.Type_Info* %333, null, !dbg !5233
%335 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5234
%336 = load [2 x i64], [2 x i64]* %335, align 8, !dbg !5234
br i1 %334, label %if.then29, label %if.else30, !dbg !5233
if.then29: ; preds = %typeswitch.body28
%337 = bitcast [2 x i64]* %39 to %..string*, !dbg !5120
store %..string { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"csbs$d0", i64 0, i64 0), i64 6 }, %..string* %337, align 8, !dbg !5120
%338 = load [2 x i64], [2 x i64]* %39, align 8, !dbg !5120
%339 = call i64 @strings.write_string_writer([2 x i64] %336, [2 x i64] %338, i8* %__.context_ptr), !dbg !5120
br label %typeswitch.done, !dbg !5233
if.else30: ; preds = %typeswitch.body28
%340 = bitcast [2 x i64]* %40 to %..string*, !dbg !5123
store %..string { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"csbs$d1", i64 0, i64 0), i64 1 }, %..string* %340, align 8, !dbg !5123
%341 = load [2 x i64], [2 x i64]* %40, align 8, !dbg !5123
%342 = call i64 @strings.write_string_writer([2 x i64] %336, [2 x i64] %341, i8* %__.context_ptr), !dbg !5123
%343 = load %runtime.Type_Info*, %runtime.Type_Info** %332, align 8, !dbg !5235
%344 = load [2 x i64], [2 x i64]* %335, align 8, !dbg !5235
%345 = call i64 @reflect.write_type_writer([2 x i64] %344, %runtime.Type_Info* %343, i8* %__.context_ptr), !dbg !5235
br label %typeswitch.done, !dbg !5233
typeswitch.body32: ; preds = %if.done
%346 = bitcast %runtime.Type_Info_Multi_Pointer* %41 to i8*, !dbg !5092
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %346, i8* align 8 %137, i64 8, i1 false), !dbg !5092
%347 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5125
%348 = load [2 x i64], [2 x i64]* %347, align 8, !dbg !5125
%349 = bitcast [2 x i64]* %42 to %..string*, !dbg !5125
store %..string { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"csbs$d2", i64 0, i64 0), i64 3 }, %..string* %349, align 8, !dbg !5125
%350 = load [2 x i64], [2 x i64]* %42, align 8, !dbg !5125
%351 = call i64 @strings.write_string_writer([2 x i64] %348, [2 x i64] %350, i8* %__.context_ptr), !dbg !5125
%352 = getelementptr inbounds %runtime.Type_Info_Multi_Pointer, %runtime.Type_Info_Multi_Pointer* %41, i32 0, i32 0, !dbg !5236
%353 = load %runtime.Type_Info*, %runtime.Type_Info** %352, align 8, !dbg !5236
%354 = load [2 x i64], [2 x i64]* %347, align 8, !dbg !5236
%355 = call i64 @reflect.write_type_writer([2 x i64] %354, %runtime.Type_Info* %353, i8* %__.context_ptr), !dbg !5236
br label %typeswitch.done, !dbg !5092
typeswitch.body33: ; preds = %if.done
%356 = bitcast %runtime.Type_Info_Procedure* %43 to i8*, !dbg !5092
%357 = getelementptr i8, i8* %356, i64 24, !dbg !5092
call void @llvm.memset.p0i8.i64(i8* align 8 %357, i8 0, i64 0, i1 false), !dbg !5092
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %356, i8* align 8 %137, i64 24, i1 false), !dbg !5092
%358 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5126
%359 = load [2 x i64], [2 x i64]* %358, align 8, !dbg !5126
%360 = bitcast [2 x i64]* %44 to %..string*, !dbg !5126
store %..string { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"csbs$d3", i64 0, i64 0), i64 4 }, %..string* %360, align 8, !dbg !5126
%361 = load [2 x i64], [2 x i64]* %44, align 8, !dbg !5126
%362 = call i64 @strings.write_string_writer([2 x i64] %359, [2 x i64] %361, i8* %__.context_ptr), !dbg !5126
call void @llvm.dbg.value(metadata i64 %362, metadata !5037, metadata !DIExpression()), !dbg !5219
%363 = getelementptr inbounds %runtime.Type_Info_Procedure, %runtime.Type_Info_Procedure* %43, i32 0, i32 0, !dbg !5237
%364 = load %runtime.Type_Info*, %runtime.Type_Info** %363, align 8, !dbg !5237
%365 = icmp eq %runtime.Type_Info* %364, null, !dbg !5237
br i1 %365, label %if.then34, label %if.else35, !dbg !5237
if.then34: ; preds = %typeswitch.body33
%366 = load [2 x i64], [2 x i64]* %358, align 8, !dbg !5127
%367 = bitcast [2 x i64]* %45 to %..string*, !dbg !5127
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$d4", i64 0, i64 0), i64 2 }, %..string* %367, align 8, !dbg !5127
%368 = load [2 x i64], [2 x i64]* %45, align 8, !dbg !5127
%369 = call i64 @strings.write_string_writer([2 x i64] %366, [2 x i64] %368, i8* %__.context_ptr), !dbg !5127
%370 = add i64 %362, %369, !dbg !5127
call void @llvm.dbg.value(metadata i64 %370, metadata !5037, metadata !DIExpression()), !dbg !5219
br label %if.done38, !dbg !5237
if.else35: ; preds = %typeswitch.body33
%371 = bitcast %runtime.Type_Info_Tuple* %46 to i8*, !dbg !5129
call void @llvm.memset.p0i8.i64(i8* %371, i8 0, i64 32, i1 false), !dbg !5129
%372 = load %runtime.Type_Info*, %runtime.Type_Info** %363, align 8, !dbg !5129
%373 = getelementptr inbounds %runtime.Type_Info, %runtime.Type_Info* %372, i32 0, i32 4, !dbg !5129
%374 = bitcast { %runtime.Type_Info_Tuple, i8 }* %47 to i8*, !dbg !5129
call void @llvm.memset.p0i8.i64(i8* %374, i8 0, i64 40, i1 false), !dbg !5129
%375 = getelementptr inbounds { %runtime.Type_Info_Tuple, i8 }, { %runtime.Type_Info_Tuple, i8 }* %47, i32 0, i32 0, !dbg !5129
%376 = getelementptr inbounds { %runtime.Type_Info_Tuple, i8 }, { %runtime.Type_Info_Tuple, i8 }* %47, i32 0, i32 1, !dbg !5129
%377 = getelementptr inbounds { [0 x i64], [120 x i8], i64 }, { [0 x i64], [120 x i8], i64 }* %373, i32 0, i32 2, !dbg !5129
%378 = load i64, i64* %377, align 8, !dbg !5129
%379 = icmp eq i64 %378, 18, !dbg !5129
br i1 %379, label %union_cast.ok, label %union_cast.end, !dbg !5129
union_cast.ok: ; preds = %if.else35
%380 = bitcast { [0 x i64], [120 x i8], i64 }* %373 to %runtime.Type_Info_Tuple*, !dbg !5129
%381 = bitcast %runtime.Type_Info_Tuple* %375 to i8*, !dbg !5129
%382 = bitcast %runtime.Type_Info_Tuple* %380 to i8*, !dbg !5129
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %381, i8* align 8 %382, i64 32, i1 false), !dbg !5129
store i8 1, i8* %376, align 1, !dbg !5129
br label %union_cast.end, !dbg !5129
union_cast.end: ; preds = %union_cast.ok, %if.else35
%383 = load i8, i8* %376, align 1, !dbg !5129
%384 = bitcast { [0 x i64], [120 x i8], i64 }* %373 to i8*, !dbg !5129
%385 = icmp ne i8 %383, 0, !dbg !5129
%386 = bitcast [2 x i64]* %48 to %..string*, !dbg !5129
store %..string { i8* getelementptr inbounds ([52 x i8], [52 x i8]* @"csbs$d5", i64 0, i64 0), i64 51 }, %..string* %386, align 8, !dbg !5129
%387 = load [2 x i64], [2 x i64]* %48, align 8, !dbg !5129
call void @runtime.type_assertion_check2(i1 %385, [2 x i64] %387, i32 428, i32 21, i64 1369094286720630787, i64 3602879701896396853, i8* %384), !dbg !5129
%388 = bitcast %runtime.Type_Info_Tuple* %375 to i8*, !dbg !5129
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %371, i8* align 8 %388, i64 32, i1 false), !dbg !5129
%389 = load [2 x i64], [2 x i64]* %358, align 8, !dbg !5130
%390 = bitcast [2 x i64]* %49 to %..string*, !dbg !5130
store %..string { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"csbs$d6", i64 0, i64 0), i64 1 }, %..string* %390, align 8, !dbg !5130
%391 = load [2 x i64], [2 x i64]* %49, align 8, !dbg !5130
%392 = call i64 @strings.write_string_writer([2 x i64] %389, [2 x i64] %391, i8* %__.context_ptr), !dbg !5130
%393 = add i64 %362, %392, !dbg !5130
call void @llvm.dbg.value(metadata i64 %393, metadata !5037, metadata !DIExpression()), !dbg !5219
call void @llvm.dbg.value(metadata %runtime.Type_Info* null, metadata !5056, metadata !DIExpression()), !dbg !5238
call void @llvm.dbg.value(metadata i64 0, metadata !5058, metadata !DIExpression()), !dbg !5238
%394 = getelementptr inbounds %runtime.Type_Info_Tuple, %runtime.Type_Info_Tuple* %46, i32 0, i32 0, !dbg !5239
%395 = getelementptr inbounds { %runtime.Type_Info**, i64 }, { %runtime.Type_Info**, i64 }* %394, i32 0, i32 1, !dbg !5239
%396 = load i64, i64* %395, align 8, !dbg !5239
br label %for.index.loop, !dbg !5239
for.index.loop: ; preds = %if.done37, %union_cast.end
%.0103 = phi i64 [ -1, %union_cast.end ], [ %397, %if.done37 ], !dbg !5239
%.4 = phi i64 [ %393, %union_cast.end ], [ %411, %if.done37 ], !dbg !5240
call void @llvm.dbg.value(metadata i64 %.4, metadata !5037, metadata !DIExpression()), !dbg !5219
%397 = add i64 %.0103, 1, !dbg !5239
%398 = icmp slt i64 %397, %396, !dbg !5239
br i1 %398, label %for.index.body, label %for.index.done, !dbg !5239
for.index.body: ; preds = %for.index.loop
%399 = getelementptr inbounds { %runtime.Type_Info**, i64 }, { %runtime.Type_Info**, i64 }* %394, i32 0, i32 0, !dbg !5239
%400 = load %runtime.Type_Info**, %runtime.Type_Info*** %399, align 8, !dbg !5239
%401 = getelementptr %runtime.Type_Info*, %runtime.Type_Info** %400, i64 %397, !dbg !5239
%402 = load %runtime.Type_Info*, %runtime.Type_Info** %401, align 8, !dbg !5239
call void @llvm.dbg.value(metadata %runtime.Type_Info* %402, metadata !5056, metadata !DIExpression()), !dbg !5238
call void @llvm.dbg.value(metadata i64 %397, metadata !5058, metadata !DIExpression()), !dbg !5238
%403 = icmp sgt i64 %397, 0, !dbg !5241
br i1 %403, label %if.then36, label %if.done37, !dbg !5241
if.then36: ; preds = %for.index.body
%404 = load [2 x i64], [2 x i64]* %358, align 8, !dbg !5131
%405 = bitcast [2 x i64]* %50 to %..string*, !dbg !5131
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$d7", i64 0, i64 0), i64 2 }, %..string* %405, align 8, !dbg !5131
%406 = load [2 x i64], [2 x i64]* %50, align 8, !dbg !5131
%407 = call i64 @strings.write_string_writer([2 x i64] %404, [2 x i64] %406, i8* %__.context_ptr), !dbg !5131
%408 = add i64 %.4, %407, !dbg !5131
call void @llvm.dbg.value(metadata i64 %408, metadata !5037, metadata !DIExpression()), !dbg !5219
br label %if.done37, !dbg !5241
if.done37: ; preds = %if.then36, %for.index.body
%.5 = phi i64 [ %408, %if.then36 ], [ %.4, %for.index.body ], !dbg !5240
call void @llvm.dbg.value(metadata i64 %.5, metadata !5037, metadata !DIExpression()), !dbg !5219
%409 = load [2 x i64], [2 x i64]* %358, align 8, !dbg !5242
%410 = call i64 @reflect.write_type_writer([2 x i64] %409, %runtime.Type_Info* %402, i8* %__.context_ptr), !dbg !5242
%411 = add i64 %.5, %410, !dbg !5242
call void @llvm.dbg.value(metadata i64 %411, metadata !5037, metadata !DIExpression()), !dbg !5219
br label %for.index.loop, !dbg !5239
for.index.done: ; preds = %for.index.loop
%412 = load [2 x i64], [2 x i64]* %358, align 8, !dbg !5135
%413 = bitcast [2 x i64]* %51 to %..string*, !dbg !5135
store %..string { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"csbs$d8", i64 0, i64 0), i64 1 }, %..string* %413, align 8, !dbg !5135
%414 = load [2 x i64], [2 x i64]* %51, align 8, !dbg !5135
%415 = call i64 @strings.write_string_writer([2 x i64] %412, [2 x i64] %414, i8* %__.context_ptr), !dbg !5135
%416 = add i64 %.4, %415, !dbg !5135
call void @llvm.dbg.value(metadata i64 %416, metadata !5037, metadata !DIExpression()), !dbg !5219
br label %if.done38, !dbg !5237
if.done38: ; preds = %for.index.done, %if.then34
%.6 = phi i64 [ %370, %if.then34 ], [ %416, %for.index.done ], !dbg !5243
call void @llvm.dbg.value(metadata i64 %.6, metadata !5037, metadata !DIExpression()), !dbg !5219
%417 = getelementptr inbounds %runtime.Type_Info_Procedure, %runtime.Type_Info_Procedure* %43, i32 0, i32 1, !dbg !5244
%418 = load %runtime.Type_Info*, %runtime.Type_Info** %417, align 8, !dbg !5244
%419 = icmp ne %runtime.Type_Info* %418, null, !dbg !5244
br i1 %419, label %if.then39, label %typeswitch.done, !dbg !5244
if.then39: ; preds = %if.done38
%420 = load [2 x i64], [2 x i64]* %358, align 8, !dbg !5136
%421 = bitcast [2 x i64]* %52 to %..string*, !dbg !5136
store %..string { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"csbs$d9", i64 0, i64 0), i64 4 }, %..string* %421, align 8, !dbg !5136
%422 = load [2 x i64], [2 x i64]* %52, align 8, !dbg !5136
%423 = call i64 @strings.write_string_writer([2 x i64] %420, [2 x i64] %422, i8* %__.context_ptr), !dbg !5136
%424 = add i64 %.6, %423, !dbg !5136
call void @llvm.dbg.value(metadata i64 %424, metadata !5037, metadata !DIExpression()), !dbg !5219
%425 = load %runtime.Type_Info*, %runtime.Type_Info** %417, align 8, !dbg !5245
%426 = load [2 x i64], [2 x i64]* %358, align 8, !dbg !5245
%427 = call i64 @reflect.write_type_writer([2 x i64] %426, %runtime.Type_Info* %425, i8* %__.context_ptr), !dbg !5245
%428 = add i64 %424, %427, !dbg !5245
call void @llvm.dbg.value(metadata i64 %428, metadata !5037, metadata !DIExpression()), !dbg !5219
br label %typeswitch.done, !dbg !5244
typeswitch.body41: ; preds = %if.done
%429 = bitcast %runtime.Type_Info_Tuple* %53 to i8*, !dbg !5092
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %429, i8* align 8 %137, i64 32, i1 false), !dbg !5092
call void @llvm.dbg.value(metadata i64 0, metadata !5060, metadata !DIExpression()), !dbg !5246
%430 = getelementptr inbounds %runtime.Type_Info_Tuple, %runtime.Type_Info_Tuple* %53, i32 0, i32 1, !dbg !5247
%431 = getelementptr inbounds { %..string*, i64 }, { %..string*, i64 }* %430, i32 0, i32 1, !dbg !5247
%432 = load i64, i64* %431, align 8, !dbg !5247
call void @llvm.dbg.value(metadata i64 %432, metadata !5060, metadata !DIExpression()), !dbg !5246
%433 = icmp ne i64 %432, 1, !dbg !5248
br i1 %433, label %if.then42, label %if.done43, !dbg !5248
if.then42: ; preds = %typeswitch.body41
%434 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5139
%435 = load [2 x i64], [2 x i64]* %434, align 8, !dbg !5139
%436 = bitcast [2 x i64]* %54 to %..string*, !dbg !5139
store %..string { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"csbs$d6", i64 0, i64 0), i64 1 }, %..string* %436, align 8, !dbg !5139
%437 = load [2 x i64], [2 x i64]* %54, align 8, !dbg !5139
%438 = call i64 @strings.write_string_writer([2 x i64] %435, [2 x i64] %437, i8* %__.context_ptr), !dbg !5139
call void @llvm.dbg.value(metadata i64 %438, metadata !5037, metadata !DIExpression()), !dbg !5219
br label %if.done43, !dbg !5248
if.done43: ; preds = %if.then42, %typeswitch.body41
%.8 = phi i64 [ %438, %if.then42 ], [ 0, %typeswitch.body41 ]
call void @llvm.dbg.value(metadata i64 %.8, metadata !5037, metadata !DIExpression()), !dbg !5219
%439 = bitcast %..string* %55 to i8*, !dbg !5143
call void @llvm.memset.p0i8.i64(i8* %439, i8 0, i64 16, i1 false), !dbg !5143
call void @llvm.dbg.value(metadata i64 0, metadata !5063, metadata !DIExpression()), !dbg !5249
%440 = load i64, i64* %431, align 8, !dbg !5143
br label %for.index.loop44, !dbg !5143
for.index.loop44: ; preds = %if.done49, %if.done43
%.0104 = phi i64 [ -1, %if.done43 ], [ %441, %if.done49 ], !dbg !5143
%.9 = phi i64 [ %.8, %if.done43 ], [ %481, %if.done49 ], !dbg !5219
call void @llvm.dbg.value(metadata i64 %.9, metadata !5037, metadata !DIExpression()), !dbg !5219
%441 = add i64 %.0104, 1, !dbg !5143
%442 = icmp slt i64 %441, %440, !dbg !5143
br i1 %442, label %for.index.body45, label %for.index.done50, !dbg !5143
for.index.body45: ; preds = %for.index.loop44
%443 = getelementptr inbounds { %..string*, i64 }, { %..string*, i64 }* %430, i32 0, i32 0, !dbg !5143
%444 = load %..string*, %..string** %443, align 8, !dbg !5143
%445 = getelementptr %..string, %..string* %444, i64 %441, !dbg !5143
%446 = bitcast %..string* %56 to i8*, !dbg !5143
%447 = bitcast %..string* %445 to i8*, !dbg !5143
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %446, i8* align 8 %447, i64 16, i1 false), !dbg !5143
call void @llvm.dbg.value(metadata i64 %441, metadata !5063, metadata !DIExpression()), !dbg !5249
%448 = icmp sgt i64 %441, 0, !dbg !5250
br i1 %448, label %if.then46, label %if.done47, !dbg !5250
if.then46: ; preds = %for.index.body45
%449 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5144
%450 = load [2 x i64], [2 x i64]* %449, align 8, !dbg !5144
%451 = bitcast [2 x i64]* %57 to %..string*, !dbg !5144
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$d7", i64 0, i64 0), i64 2 }, %..string* %451, align 8, !dbg !5144
%452 = load [2 x i64], [2 x i64]* %57, align 8, !dbg !5144
%453 = call i64 @strings.write_string_writer([2 x i64] %450, [2 x i64] %452, i8* %__.context_ptr), !dbg !5144
%454 = add i64 %.9, %453, !dbg !5144
call void @llvm.dbg.value(metadata i64 %454, metadata !5037, metadata !DIExpression()), !dbg !5219
br label %if.done47, !dbg !5250
if.done47: ; preds = %if.then46, %for.index.body45
%.10 = phi i64 [ %454, %if.then46 ], [ %.9, %for.index.body45 ], !dbg !5219
call void @llvm.dbg.value(metadata i64 %.10, metadata !5037, metadata !DIExpression()), !dbg !5219
call void @llvm.dbg.value(metadata %runtime.Type_Info* null, metadata !5064, metadata !DIExpression()), !dbg !5251
%455 = getelementptr inbounds %runtime.Type_Info_Tuple, %runtime.Type_Info_Tuple* %53, i32 0, i32 0, !dbg !5147
%456 = getelementptr inbounds { %runtime.Type_Info**, i64 }, { %runtime.Type_Info**, i64 }* %455, i32 0, i32 0, !dbg !5147
%457 = load %runtime.Type_Info**, %runtime.Type_Info*** %456, align 8, !dbg !5147
%458 = getelementptr inbounds { %runtime.Type_Info**, i64 }, { %runtime.Type_Info**, i64 }* %455, i32 0, i32 1, !dbg !5147
%459 = load i64, i64* %458, align 8, !dbg !5147
%460 = bitcast [2 x i64]* %58 to %..string*, !dbg !5147
store %..string { i8* getelementptr inbounds ([52 x i8], [52 x i8]* @"csbs$d5", i64 0, i64 0), i64 51 }, %..string* %460, align 8, !dbg !5147
%461 = load [2 x i64], [2 x i64]* %58, align 8, !dbg !5147
call void @runtime.bounds_check_error([2 x i64] %461, i32 448, i32 20, i64 %441, i64 %459), !dbg !5147
%462 = getelementptr %runtime.Type_Info*, %runtime.Type_Info** %457, i64 %441, !dbg !5147
%463 = load %runtime.Type_Info*, %runtime.Type_Info** %462, align 8, !dbg !5147
call void @llvm.dbg.value(metadata %runtime.Type_Info* %463, metadata !5064, metadata !DIExpression()), !dbg !5251
%464 = getelementptr inbounds %..string, %..string* %56, i32 0, i32 1, !dbg !5252
%465 = load i64, i64* %464, align 8, !dbg !5252
%466 = icmp sgt i64 %465, 0, !dbg !5252
br i1 %466, label %if.then48, label %if.done49, !dbg !5252
if.then48: ; preds = %if.done47
%467 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5253
%468 = load [2 x i64], [2 x i64]* %467, align 8, !dbg !5253
%469 = bitcast %..string* %56 to [2 x i64]*, !dbg !5253
%470 = load [2 x i64], [2 x i64]* %469, align 8, !dbg !5253
%471 = call i64 @strings.write_string_writer([2 x i64] %468, [2 x i64] %470, i8* %__.context_ptr), !dbg !5253
%472 = add i64 %.10, %471, !dbg !5253
call void @llvm.dbg.value(metadata i64 %472, metadata !5037, metadata !DIExpression()), !dbg !5219
%473 = load [2 x i64], [2 x i64]* %467, align 8, !dbg !5148
%474 = bitcast [2 x i64]* %59 to %..string*, !dbg !5148
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$7b", i64 0, i64 0), i64 2 }, %..string* %474, align 8, !dbg !5148
%475 = load [2 x i64], [2 x i64]* %59, align 8, !dbg !5148
%476 = call i64 @strings.write_string_writer([2 x i64] %473, [2 x i64] %475, i8* %__.context_ptr), !dbg !5148
%477 = add i64 %472, %476, !dbg !5148
call void @llvm.dbg.value(metadata i64 %477, metadata !5037, metadata !DIExpression()), !dbg !5219
br label %if.done49, !dbg !5252
if.done49: ; preds = %if.then48, %if.done47
%.11 = phi i64 [ %477, %if.then48 ], [ %.10, %if.done47 ], !dbg !5251
call void @llvm.dbg.value(metadata i64 %.11, metadata !5037, metadata !DIExpression()), !dbg !5219
%478 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5254
%479 = load [2 x i64], [2 x i64]* %478, align 8, !dbg !5254
%480 = call i64 @reflect.write_type_writer([2 x i64] %479, %runtime.Type_Info* %463, i8* %__.context_ptr), !dbg !5254
%481 = add i64 %.11, %480, !dbg !5254
call void @llvm.dbg.value(metadata i64 %481, metadata !5037, metadata !DIExpression()), !dbg !5219
br label %for.index.loop44, !dbg !5143
for.index.done50: ; preds = %for.index.loop44
br i1 %433, label %if.then51, label %typeswitch.done, !dbg !5255
if.then51: ; preds = %for.index.done50
%482 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5151
%483 = load [2 x i64], [2 x i64]* %482, align 8, !dbg !5151
%484 = bitcast [2 x i64]* %60 to %..string*, !dbg !5151
store %..string { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"csbs$d8", i64 0, i64 0), i64 1 }, %..string* %484, align 8, !dbg !5151
%485 = load [2 x i64], [2 x i64]* %60, align 8, !dbg !5151
%486 = call i64 @strings.write_string_writer([2 x i64] %483, [2 x i64] %485, i8* %__.context_ptr), !dbg !5151
%487 = add i64 %.9, %486, !dbg !5151
call void @llvm.dbg.value(metadata i64 %487, metadata !5037, metadata !DIExpression()), !dbg !5219
br label %typeswitch.done, !dbg !5255
typeswitch.body53: ; preds = %if.done
%488 = bitcast %runtime.Type_Info_Array* %61 to i8*, !dbg !5092
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %488, i8* align 8 %137, i64 24, i1 false), !dbg !5092
%489 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5154
%490 = load [2 x i64], [2 x i64]* %489, align 8, !dbg !5154
%491 = bitcast [2 x i64]* %62 to %..string*, !dbg !5154
store %..string { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"csbs$da", i64 0, i64 0), i64 1 }, %..string* %491, align 8, !dbg !5154
%492 = load [2 x i64], [2 x i64]* %62, align 8, !dbg !5154
%493 = call [2 x i64] @io.write_string([2 x i64] %490, [2 x i64] %492, i8* %__.context_ptr), !dbg !5154
%494 = bitcast { i64, i32 }* %63 to [2 x i64]*, !dbg !5154
store [2 x i64] %493, [2 x i64]* %494, align 8, !dbg !5154
%495 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %63, i32 0, i32 0, !dbg !5154
%496 = load i64, i64* %495, align 8, !dbg !5154
%497 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %63, i32 0, i32 1, !dbg !5154
%498 = load i32, i32* %497, align 4, !dbg !5154
%499 = call i64 @reflect.write_type_writer._n2-1(i64 %496, i32 %498, i8* %__.context_ptr), !dbg !5154
call void @llvm.dbg.value(metadata i64 %499, metadata !5037, metadata !DIExpression()), !dbg !5219
%500 = getelementptr inbounds %runtime.Type_Info_Array, %runtime.Type_Info_Array* %61, i32 0, i32 2, !dbg !5155
%501 = load i64, i64* %500, align 8, !dbg !5155
%502 = load [2 x i64], [2 x i64]* %489, align 8, !dbg !5155
%503 = call [2 x i64] @io.write_i64([2 x i64] %502, i64 %501, i64 10, i8* %__.context_ptr), !dbg !5155
%504 = bitcast { i64, i32 }* %64 to [2 x i64]*, !dbg !5155
store [2 x i64] %503, [2 x i64]* %504, align 8, !dbg !5155
%505 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %64, i32 0, i32 0, !dbg !5155
%506 = load i64, i64* %505, align 8, !dbg !5155
%507 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %64, i32 0, i32 1, !dbg !5155
%508 = load i32, i32* %507, align 4, !dbg !5155
%509 = call i64 @reflect.write_type_writer._n2-1(i64 %506, i32 %508, i8* %__.context_ptr), !dbg !5155
%510 = add i64 %499, %509, !dbg !5155
call void @llvm.dbg.value(metadata i64 %510, metadata !5037, metadata !DIExpression()), !dbg !5219
%511 = load [2 x i64], [2 x i64]* %489, align 8, !dbg !5156
%512 = bitcast [2 x i64]* %65 to %..string*, !dbg !5156
store %..string { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"csbs$db", i64 0, i64 0), i64 1 }, %..string* %512, align 8, !dbg !5156
%513 = load [2 x i64], [2 x i64]* %65, align 8, !dbg !5156
%514 = call [2 x i64] @io.write_string([2 x i64] %511, [2 x i64] %513, i8* %__.context_ptr), !dbg !5156
%515 = bitcast { i64, i32 }* %66 to [2 x i64]*, !dbg !5156
store [2 x i64] %514, [2 x i64]* %515, align 8, !dbg !5156
%516 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %66, i32 0, i32 0, !dbg !5156
%517 = load i64, i64* %516, align 8, !dbg !5156
%518 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %66, i32 0, i32 1, !dbg !5156
%519 = load i32, i32* %518, align 4, !dbg !5156
%520 = call i64 @reflect.write_type_writer._n2-1(i64 %517, i32 %519, i8* %__.context_ptr), !dbg !5156
%521 = add i64 %510, %520, !dbg !5156
call void @llvm.dbg.value(metadata i64 %521, metadata !5037, metadata !DIExpression()), !dbg !5219
%522 = getelementptr inbounds %runtime.Type_Info_Array, %runtime.Type_Info_Array* %61, i32 0, i32 0, !dbg !5256
%523 = load %runtime.Type_Info*, %runtime.Type_Info** %522, align 8, !dbg !5256
%524 = load [2 x i64], [2 x i64]* %489, align 8, !dbg !5256
%525 = call i64 @reflect.write_type_writer([2 x i64] %524, %runtime.Type_Info* %523, i8* %__.context_ptr), !dbg !5256
%526 = add i64 %521, %525, !dbg !5256
call void @llvm.dbg.value(metadata i64 %526, metadata !5037, metadata !DIExpression()), !dbg !5219
br label %typeswitch.done, !dbg !5092
typeswitch.body54: ; preds = %if.done
%527 = bitcast %runtime.Type_Info_Enumerated_Array* %67 to i8*, !dbg !5092
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %527, i8* align 8 %137, i64 48, i1 false), !dbg !5092
%528 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5157
%529 = load [2 x i64], [2 x i64]* %528, align 8, !dbg !5157
%530 = bitcast [2 x i64]* %68 to %..string*, !dbg !5157
store %..string { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"csbs$da", i64 0, i64 0), i64 1 }, %..string* %530, align 8, !dbg !5157
%531 = load [2 x i64], [2 x i64]* %68, align 8, !dbg !5157
%532 = call i64 @strings.write_string_writer([2 x i64] %529, [2 x i64] %531, i8* %__.context_ptr), !dbg !5157
call void @llvm.dbg.value(metadata i64 %532, metadata !5037, metadata !DIExpression()), !dbg !5219
%533 = getelementptr inbounds %runtime.Type_Info_Enumerated_Array, %runtime.Type_Info_Enumerated_Array* %67, i32 0, i32 1, !dbg !5257
%534 = load %runtime.Type_Info*, %runtime.Type_Info** %533, align 8, !dbg !5257
%535 = load [2 x i64], [2 x i64]* %528, align 8, !dbg !5257
%536 = call i64 @reflect.write_type_writer([2 x i64] %535, %runtime.Type_Info* %534, i8* %__.context_ptr), !dbg !5257
%537 = add i64 %532, %536, !dbg !5257
call void @llvm.dbg.value(metadata i64 %537, metadata !5037, metadata !DIExpression()), !dbg !5219
%538 = load [2 x i64], [2 x i64]* %528, align 8, !dbg !5158
%539 = bitcast [2 x i64]* %69 to %..string*, !dbg !5158
store %..string { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"csbs$db", i64 0, i64 0), i64 1 }, %..string* %539, align 8, !dbg !5158
%540 = load [2 x i64], [2 x i64]* %69, align 8, !dbg !5158
%541 = call i64 @strings.write_string_writer([2 x i64] %538, [2 x i64] %540, i8* %__.context_ptr), !dbg !5158
%542 = add i64 %537, %541, !dbg !5158
call void @llvm.dbg.value(metadata i64 %542, metadata !5037, metadata !DIExpression()), !dbg !5219
%543 = getelementptr inbounds %runtime.Type_Info_Enumerated_Array, %runtime.Type_Info_Enumerated_Array* %67, i32 0, i32 0, !dbg !5258
%544 = load %runtime.Type_Info*, %runtime.Type_Info** %543, align 8, !dbg !5258
%545 = load [2 x i64], [2 x i64]* %528, align 8, !dbg !5258
%546 = call i64 @reflect.write_type_writer([2 x i64] %545, %runtime.Type_Info* %544, i8* %__.context_ptr), !dbg !5258
%547 = add i64 %542, %546, !dbg !5258
call void @llvm.dbg.value(metadata i64 %547, metadata !5037, metadata !DIExpression()), !dbg !5219
br label %typeswitch.done, !dbg !5092
typeswitch.body55: ; preds = %if.done
%548 = bitcast %runtime.Type_Info_Dynamic_Array* %70 to i8*, !dbg !5092
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %548, i8* align 8 %137, i64 16, i1 false), !dbg !5092
%549 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5159
%550 = load [2 x i64], [2 x i64]* %549, align 8, !dbg !5159
%551 = bitcast [2 x i64]* %71 to %..string*, !dbg !5159
store %..string { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"csbs$dc", i64 0, i64 0), i64 9 }, %..string* %551, align 8, !dbg !5159
%552 = load [2 x i64], [2 x i64]* %71, align 8, !dbg !5159
%553 = call [2 x i64] @io.write_string([2 x i64] %550, [2 x i64] %552, i8* %__.context_ptr), !dbg !5159
%554 = bitcast { i64, i32 }* %72 to [2 x i64]*, !dbg !5159
store [2 x i64] %553, [2 x i64]* %554, align 8, !dbg !5159
%555 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %72, i32 0, i32 0, !dbg !5159
%556 = load i64, i64* %555, align 8, !dbg !5159
%557 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %72, i32 0, i32 1, !dbg !5159
%558 = load i32, i32* %557, align 4, !dbg !5159
%559 = call i64 @reflect.write_type_writer._n2-1(i64 %556, i32 %558, i8* %__.context_ptr), !dbg !5159
call void @llvm.dbg.value(metadata i64 %559, metadata !5037, metadata !DIExpression()), !dbg !5219
%560 = getelementptr inbounds %runtime.Type_Info_Dynamic_Array, %runtime.Type_Info_Dynamic_Array* %70, i32 0, i32 0, !dbg !5259
%561 = load %runtime.Type_Info*, %runtime.Type_Info** %560, align 8, !dbg !5259
%562 = load [2 x i64], [2 x i64]* %549, align 8, !dbg !5259
%563 = call i64 @reflect.write_type_writer([2 x i64] %562, %runtime.Type_Info* %561, i8* %__.context_ptr), !dbg !5259
%564 = add i64 %559, %563, !dbg !5259
call void @llvm.dbg.value(metadata i64 %564, metadata !5037, metadata !DIExpression()), !dbg !5219
br label %typeswitch.done, !dbg !5092
typeswitch.body56: ; preds = %if.done
%565 = bitcast %runtime.Type_Info_Slice* %73 to i8*, !dbg !5092
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %565, i8* align 8 %137, i64 16, i1 false), !dbg !5092
%566 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5160
%567 = load [2 x i64], [2 x i64]* %566, align 8, !dbg !5160
%568 = bitcast [2 x i64]* %74 to %..string*, !dbg !5160
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$dd", i64 0, i64 0), i64 2 }, %..string* %568, align 8, !dbg !5160
%569 = load [2 x i64], [2 x i64]* %74, align 8, !dbg !5160
%570 = call [2 x i64] @io.write_string([2 x i64] %567, [2 x i64] %569, i8* %__.context_ptr), !dbg !5160
%571 = bitcast { i64, i32 }* %75 to [2 x i64]*, !dbg !5160
store [2 x i64] %570, [2 x i64]* %571, align 8, !dbg !5160
%572 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %75, i32 0, i32 0, !dbg !5160
%573 = load i64, i64* %572, align 8, !dbg !5160
%574 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %75, i32 0, i32 1, !dbg !5160
%575 = load i32, i32* %574, align 4, !dbg !5160
%576 = call i64 @reflect.write_type_writer._n2-1(i64 %573, i32 %575, i8* %__.context_ptr), !dbg !5160
call void @llvm.dbg.value(metadata i64 %576, metadata !5037, metadata !DIExpression()), !dbg !5219
%577 = getelementptr inbounds %runtime.Type_Info_Slice, %runtime.Type_Info_Slice* %73, i32 0, i32 0, !dbg !5260
%578 = load %runtime.Type_Info*, %runtime.Type_Info** %577, align 8, !dbg !5260
%579 = load [2 x i64], [2 x i64]* %566, align 8, !dbg !5260
%580 = call i64 @reflect.write_type_writer([2 x i64] %579, %runtime.Type_Info* %578, i8* %__.context_ptr), !dbg !5260
%581 = add i64 %576, %580, !dbg !5260
call void @llvm.dbg.value(metadata i64 %581, metadata !5037, metadata !DIExpression()), !dbg !5219
br label %typeswitch.done, !dbg !5092
typeswitch.body57: ; preds = %if.done
%582 = bitcast %runtime.Type_Info_Map* %76 to i8*, !dbg !5092
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %582, i8* align 8 %137, i64 40, i1 false), !dbg !5092
%583 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5161
%584 = load [2 x i64], [2 x i64]* %583, align 8, !dbg !5161
%585 = bitcast [2 x i64]* %77 to %..string*, !dbg !5161
store %..string { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"csbs$de", i64 0, i64 0), i64 4 }, %..string* %585, align 8, !dbg !5161
%586 = load [2 x i64], [2 x i64]* %77, align 8, !dbg !5161
%587 = call [2 x i64] @io.write_string([2 x i64] %584, [2 x i64] %586, i8* %__.context_ptr), !dbg !5161
%588 = bitcast { i64, i32 }* %78 to [2 x i64]*, !dbg !5161
store [2 x i64] %587, [2 x i64]* %588, align 8, !dbg !5161
%589 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %78, i32 0, i32 0, !dbg !5161
%590 = load i64, i64* %589, align 8, !dbg !5161
%591 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %78, i32 0, i32 1, !dbg !5161
%592 = load i32, i32* %591, align 4, !dbg !5161
%593 = call i64 @reflect.write_type_writer._n2-1(i64 %590, i32 %592, i8* %__.context_ptr), !dbg !5161
call void @llvm.dbg.value(metadata i64 %593, metadata !5037, metadata !DIExpression()), !dbg !5219
%594 = getelementptr inbounds %runtime.Type_Info_Map, %runtime.Type_Info_Map* %76, i32 0, i32 0, !dbg !5261
%595 = load %runtime.Type_Info*, %runtime.Type_Info** %594, align 8, !dbg !5261
%596 = load [2 x i64], [2 x i64]* %583, align 8, !dbg !5261
%597 = call i64 @reflect.write_type_writer([2 x i64] %596, %runtime.Type_Info* %595, i8* %__.context_ptr), !dbg !5261
%598 = add i64 %593, %597, !dbg !5261
call void @llvm.dbg.value(metadata i64 %598, metadata !5037, metadata !DIExpression()), !dbg !5219
%599 = load [2 x i64], [2 x i64]* %583, align 8, !dbg !5262
%600 = call i32 @io.write_byte_to_writer([2 x i64] %599, i8 93, i8* %__.context_ptr), !dbg !5262
%601 = call i64 @reflect.write_type_writer._n1-0(i32 %600, i8* %__.context_ptr), !dbg !5262
%602 = add i64 %598, %601, !dbg !5262
call void @llvm.dbg.value(metadata i64 %602, metadata !5037, metadata !DIExpression()), !dbg !5219
%603 = getelementptr inbounds %runtime.Type_Info_Map, %runtime.Type_Info_Map* %76, i32 0, i32 1, !dbg !5263
%604 = load %runtime.Type_Info*, %runtime.Type_Info** %603, align 8, !dbg !5263
%605 = load [2 x i64], [2 x i64]* %583, align 8, !dbg !5263
%606 = call i64 @reflect.write_type_writer([2 x i64] %605, %runtime.Type_Info* %604, i8* %__.context_ptr), !dbg !5263
%607 = add i64 %602, %606, !dbg !5263
call void @llvm.dbg.value(metadata i64 %607, metadata !5037, metadata !DIExpression()), !dbg !5219
br label %typeswitch.done, !dbg !5092
typeswitch.body58: ; preds = %if.done
%608 = bitcast %runtime.Type_Info_Struct* %79 to i8*, !dbg !5092
%609 = getelementptr i8, i8* %608, i64 120, !dbg !5092
call void @llvm.memset.p0i8.i64(i8* align 8 %609, i8 0, i64 0, i1 false), !dbg !5092
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %608, i8* align 8 %137, i64 120, i1 false), !dbg !5092
%610 = getelementptr inbounds %runtime.Type_Info_Struct, %runtime.Type_Info_Struct* %79, i32 0, i32 9, !dbg !5264
%611 = load i8, i8* %610, align 1, !dbg !5264
switch i8 %611, label %switch.done63 [
i8 3, label %switch.case.body62
i8 1, label %switch.case.body60
i8 2, label %switch.case.body61
], !dbg !5264
switch.case.body60: ; preds = %typeswitch.body58
%612 = bitcast %io.Writer* %3 to [2 x i64]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment