Skip to content

Instantly share code, notes, and snippets.

@yhara
Created Apr 24, 2022
Embed
What would you like to do?
; ModuleID = 'main'
source_filename = "main"
target triple = "x86_64-apple-macosx10.15.7"
%Dict = type { i8*, %Class.0*, %Array* }
%Class.0 = type { i8*, %Class.0*, %String*, %Object*, %Object* }
%String = type { i8*, %Class.0*, %"Shiika::Internal::Ptr"*, %Int* }
%"Shiika::Internal::Ptr" = type { i8*, %Class.0*, i8* }
%Int = type { i8*, %Class.0*, i64 }
%Object = type { i8*, %Class.0* }
%Array = type { i8*, %Class.0*, %Int*, %Int*, %"Shiika::Internal::Ptr"* }
%Fn5 = type { i8*, %Class.0*, %"Shiika::Internal::Ptr"*, %Object*, %Array*, %Int* }
%"Maybe::None" = type { i8*, %Class.0* }
%Fn7 = type { i8*, %Class.0*, %"Shiika::Internal::Ptr"*, %Object*, %Array*, %Int* }
%Void = type { i8*, %Class.0* }
%Math = type { i8*, %Class.0* }
%Fn9 = type { i8*, %Class.0*, %"Shiika::Internal::Ptr"*, %Object*, %Array*, %Int* }
%Fn1 = type { i8*, %Class.0*, %"Shiika::Internal::Ptr"*, %Object*, %Array*, %Int* }
%Triple = type { i8*, %Class.0*, %Object*, %Object*, %Object* }
%Error = type { i8*, %Class.0*, %String* }
%Metaclass = type { i8*, %Class.0*, %String*, %Object*, %Object* }
%Pair = type { i8*, %Class.0*, %Object*, %Object* }
%Never = type { i8*, %Class.0* }
%Fn2 = type { i8*, %Class.0*, %"Shiika::Internal::Ptr"*, %Object*, %Array*, %Int* }
%"Result::Fail" = type { i8*, %Class.0*, %Object* }
%Fn6 = type { i8*, %Class.0*, %"Shiika::Internal::Ptr"*, %Object*, %Array*, %Int* }
%Bool = type { i8*, %Class.0*, i1 }
%"Result::Ok" = type { i8*, %Class.0*, %Object* }
%"Shiika::Internal::Memory" = type { i8*, %Class.0* }
%Fn0 = type { i8*, %Class.0*, %"Shiika::Internal::Ptr"*, %Object*, %Array*, %Int* }
%Fn = type { i8*, %Class.0*, %"Shiika::Internal::Ptr"*, %Object*, %Array*, %Int* }
%Maybe = type { i8*, %Class.0* }
%Fn4 = type { i8*, %Class.0*, %"Shiika::Internal::Ptr"*, %Object*, %Array*, %Int* }
%Enumerable = type { i8*, %Class.0* }
%Result = type { i8*, %Class.0* }
%File = type { i8*, %Class.0*, %String*, %Object* }
%Float = type { i8*, %Class.0*, double }
%Fn3 = type { i8*, %Class.0*, %"Shiika::Internal::Ptr"*, %Object*, %Array*, %Int* }
%"Maybe::Some" = type { i8*, %Class.0*, %Object* }
%"Dict::Table" = type { i8*, %Class.0*, %Array* }
%MutableString = type { i8*, %Class.0*, %"Shiika::Internal::Ptr"*, %Int*, %Int* }
%Fn8 = type { i8*, %Class.0*, %"Shiika::Internal::Ptr"*, %Object*, %Array*, %Int* }
@putd_tmpl = internal constant [4 x i8] c"%ld\00"
@putf_tmpl = internal constant [3 x i8] c"%f\00"
@str_0 = internal global [4 x i8] c"Fn2\00"
@str_1 = internal global [12 x i8] c"Maybe::None\00"
@str_2 = internal global [5 x i8] c"Pair\00"
@str_3 = internal global [4 x i8] c"Int\00"
@str_4 = internal global [25 x i8] c"Shiika::Internal::Memory\00"
@str_5 = internal global [5 x i8] c"Math\00"
@str_6 = internal global [3 x i8] c"Fn\00"
@str_7 = internal global [6 x i8] c"Maybe\00"
@str_8 = internal global [5 x i8] c"Dict\00"
@str_9 = internal global [4 x i8] c"Fn7\00"
@str_10 = internal global [4 x i8] c"Fn1\00"
@str_11 = internal global [4 x i8] c"Fn0\00"
@str_12 = internal global [6 x i8] c"Class\00"
@str_13 = internal global [4 x i8] c"Fn8\00"
@str_14 = internal global [4 x i8] c"Fn9\00"
@str_15 = internal global [4 x i8] c"Fn4\00"
@str_16 = internal global [5 x i8] c"File\00"
@str_17 = internal global [6 x i8] c"Float\00"
@str_18 = internal global [7 x i8] c"String\00"
@str_19 = internal global [4 x i8] c"Fn3\00"
@str_20 = internal global [13 x i8] c"Result::Fail\00"
@str_21 = internal global [12 x i8] c"Dict::Table\00"
@str_22 = internal global [7 x i8] c"Result\00"
@str_23 = internal global [22 x i8] c"Shiika::Internal::Ptr\00"
@str_24 = internal global [6 x i8] c"Array\00"
@str_25 = internal global [7 x i8] c"Object\00"
@str_26 = internal global [5 x i8] c"Void\00"
@str_27 = internal global [11 x i8] c"Enumerable\00"
@str_28 = internal global [4 x i8] c"Fn5\00"
@str_29 = internal global [12 x i8] c"Maybe::Some\00"
@str_30 = internal global [7 x i8] c"Triple\00"
@str_31 = internal global [6 x i8] c"Error\00"
@str_32 = internal global [14 x i8] c"MutableString\00"
@str_33 = internal global [10 x i8] c"Metaclass\00"
@str_34 = internal global [4 x i8] c"Fn6\00"
@str_35 = internal global [11 x i8] c"Result::Ok\00"
@str_36 = internal global [5 x i8] c"Bool\00"
@str_37 = internal global [6 x i8] c"Never\00"
@str_38 = internal global [25 x i8] c"no matching clause found\00"
@str_39 = internal global [25 x i8] c"no matching clause found\00"
@str_40 = internal global [2 x i8] c">\00"
@str_41 = internal global [8 x i8] c"#<Some \00"
@str_42 = internal global [8 x i8] c"#<None>\00"
@str_43 = internal global [25 x i8] c"no matching clause found\00"
@str_44 = internal global [34 x i8] c"[Array#[]=: index less than zero]\00"
@str_45 = internal global [29 x i8] c"[Array#[]=: index too large]\00"
@str_46 = internal global [2 x i8] c"[\00"
@str_47 = internal global [3 x i8] c", \00"
@str_48 = internal global [2 x i8] c"]\00"
@str_49 = internal global [28 x i8] c"[Array#pop: array is empty]\00"
@str_50 = internal global [5 x i8] c"true\00"
@str_51 = internal global [6 x i8] c"false\00"
@str_52 = internal global [2 x i8] c">\00"
@str_53 = internal global [9 x i8] c"#<class \00"
@str_54 = internal global [2 x i8] c"-\00"
@str_55 = internal global [10 x i8] c"Metaclass\00"
@str_56 = internal global [10 x i8] c"Metaclass\00"
@str_57 = internal global [6 x i8] c"Meta:\00"
@str_58 = internal global [2 x i8] c">\00"
@str_59 = internal global [13 x i8] c"#<metaclass \00"
@str_60 = internal global [40 x i8] c"[String#nth_byte: index less than zero]\00"
@str_61 = internal global [35 x i8] c"[String#nth_byte: index too large]\00"
@str_62 = internal global [42 x i8] c"[String#write_byte: index less than zero]\00"
@str_63 = internal global [41 x i8] c"[String#write_byte: byte less than zero]\00"
@str_64 = internal global [42 x i8] c"[String#write_byte: byte larger than 255]\00"
@str_65 = internal global [40 x i8] c"[`<` is not implemented for this class]\00"
@str_66 = internal global [2 x i8] c">\00"
@str_67 = internal global [2 x i8] c":\00"
@str_68 = internal global [3 x i8] c"#<\00"
@str_69 = internal global [2 x i8] c"\22\00"
@str_70 = internal global [2 x i8] c"\22\00"
@str_71 = internal global [2 x i8] c"\0A\00"
@str_72 = internal global [40 x i8] c"[String#nth_byte: index less than zero]\00"
@str_73 = internal global [35 x i8] c"[String#nth_byte: index too large]\00"
@str_74 = internal global [3 x i8] c")]\00"
@str_75 = internal global [10 x i8] c", bytes: \00"
@str_76 = internal global [54 x i8] c"[String#slice_bytes: `from` is less than zero (from: \00"
@str_77 = internal global [3 x i8] c")]\00"
@str_78 = internal global [18 x i8] c", self.bytesize: \00"
@str_79 = internal global [10 x i8] c", bytes: \00"
@str_80 = internal global [54 x i8] c"[String#slice_bytes: `from + bytes` too large (from: \00"
@str_81 = internal global [2 x i8] c"+\00"
@str_82 = internal global [2 x i8] c"-\00"
@str_83 = internal global [5 x i8] c"Void\00"
@"::Dict" = global %Dict* null
@"::Fn5" = global %Fn5* null
@"::Maybe::None" = global %"Maybe::None"* null
@"::Fn7" = global %Fn7* null
@"::Void" = global %Void* null
@"::Math" = global %Math* null
@"::Fn9" = global %Fn9* null
@"::Object" = global %Object* null
@"::Fn1" = global %Fn1* null
@"::Triple" = global %Triple* null
@"::Error" = global %Error* null
@"::Metaclass" = global %Metaclass* null
@"::None" = global %"Maybe::None"* null
@"::Pair" = global %Pair* null
@"::Never" = global %Never* null
@"::Fn2" = global %Fn2* null
@"::Result::Fail" = global %"Result::Fail"* null
@"::Fn6" = global %Fn6* null
@"::Bool" = global %Bool* null
@"::Ok" = global %"Result::Ok"* null
@"::Shiika::Internal::Memory" = global %"Shiika::Internal::Memory"* null
@"::Array::BYTES_OF_PTR" = global %Int* null
@"::Array" = global %Array* null
@"::Int" = global %Int* null
@"::Fn0" = global %Fn0* null
@"::Result::Ok" = global %"Result::Ok"* null
@"::Fn::EXIT_NORMAL" = global %Int* null
@"::Fn" = global %Fn* null
@"::Dict::N_TABLES" = global %Int* null
@"::Maybe" = global %Maybe* null
@"::Fn4" = global %Fn4* null
@"::Class" = global %Class.0* null
@"::Enumerable" = global %Enumerable* null
@"::Fail" = global %"Result::Fail"* null
@"::String" = global %String* null
@"::Result" = global %Result* null
@"::File" = global %File* null
@"::Float" = global %Float* null
@"::Fn3" = global %Fn3* null
@"::Fn::EXIT_BREAK" = global %Int* null
@"::Some" = global %"Maybe::Some"* null
@"::Dict::Table" = global %"Dict::Table"* null
@"::Maybe::Some" = global %"Maybe::Some"* null
@"::Array::INITIAL_CAPA" = global %Int* null
@"::Shiika::Internal::Ptr" = global %"Shiika::Internal::Ptr"* null
@"::MutableString" = global %MutableString* null
@"::MutableString::INITIAL_STR_CAPA" = global %Int* null
@"::Fn8" = global %Fn8* null
@shiika_vtable_Fn0 = constant [24 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Fn*, %"Shiika::Internal::Ptr"*, %Object*, %Array*)* @Fn_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%Array* (%Fn*)* @Fn_captures to i8*), i8* bitcast (%Array* (%Fn*, %Array*)* @_set_Fn_captures to i8*), i8* bitcast (%Int* (%Fn*)* @Fn_exit__status to i8*), i8* bitcast (%Int* (%Fn*, %Int*)* @_set_Fn_exit__status to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Fn*)* @Fn_func to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Fn*, %"Shiika::Internal::Ptr"*)* @_set_Fn_func to i8*), i8* bitcast (%Object* (%Fn*)* @Fn_the__self to i8*), i8* bitcast (%Object* (%Fn*, %Object*)* @_set_Fn_the__self to i8*)]
@shiika_vtable_Fn6 = constant [24 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Fn*, %"Shiika::Internal::Ptr"*, %Object*, %Array*)* @Fn_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%Array* (%Fn*)* @Fn_captures to i8*), i8* bitcast (%Array* (%Fn*, %Array*)* @_set_Fn_captures to i8*), i8* bitcast (%Int* (%Fn*)* @Fn_exit__status to i8*), i8* bitcast (%Int* (%Fn*, %Int*)* @_set_Fn_exit__status to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Fn*)* @Fn_func to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Fn*, %"Shiika::Internal::Ptr"*)* @_set_Fn_func to i8*), i8* bitcast (%Object* (%Fn*)* @Fn_the__self to i8*), i8* bitcast (%Object* (%Fn*, %Object*)* @_set_Fn_the__self to i8*)]
@shiika_vtable_Fn7 = constant [24 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Fn*, %"Shiika::Internal::Ptr"*, %Object*, %Array*)* @Fn_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%Array* (%Fn*)* @Fn_captures to i8*), i8* bitcast (%Array* (%Fn*, %Array*)* @_set_Fn_captures to i8*), i8* bitcast (%Int* (%Fn*)* @Fn_exit__status to i8*), i8* bitcast (%Int* (%Fn*, %Int*)* @_set_Fn_exit__status to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Fn*)* @Fn_func to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Fn*, %"Shiika::Internal::Ptr"*)* @_set_Fn_func to i8*), i8* bitcast (%Object* (%Fn*)* @Fn_the__self to i8*), i8* bitcast (%Object* (%Fn*, %Object*)* @_set_Fn_the__self to i8*)]
@"shiika_vtable_Meta:Int" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Int* (%Int*)* @Meta_Int_new to i8*)]
@"shiika_vtable_Meta:Pair" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Pair* (%Pair*, %Object*, %Object*)* @Meta_Pair_new to i8*)]
@"shiika_vtable_Meta:Never" = constant [22 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*)]
@"shiika_vtable_Meta:Fn" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Fn* (%Fn*, %"Shiika::Internal::Ptr"*, %Object*, %Array*)* @Meta_Fn_new to i8*)]
@shiika_vtable_Never = constant [16 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Object*)* @Object_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*)]
@"shiika_vtable_Result::Ok" = constant [18 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%"Result::Ok"*, %Object*)* @Result_Ok_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%Object* (%"Result::Ok"*)* @Result_Ok_value to i8*), i8* bitcast (%Object* (%"Result::Ok"*, %Object*)* @_set_Result_Ok_value to i8*)]
@shiika_vtable_Fn4 = constant [24 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Fn*, %"Shiika::Internal::Ptr"*, %Object*, %Array*)* @Fn_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%Array* (%Fn*)* @Fn_captures to i8*), i8* bitcast (%Array* (%Fn*, %Array*)* @_set_Fn_captures to i8*), i8* bitcast (%Int* (%Fn*)* @Fn_exit__status to i8*), i8* bitcast (%Int* (%Fn*, %Int*)* @_set_Fn_exit__status to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Fn*)* @Fn_func to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Fn*, %"Shiika::Internal::Ptr"*)* @_set_Fn_func to i8*), i8* bitcast (%Object* (%Fn*)* @Fn_the__self to i8*), i8* bitcast (%Object* (%Fn*, %Object*)* @_set_Fn_the__self to i8*)]
@"shiika_vtable_Meta:Float" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Float* (%Float*)* @Meta_Float_new to i8*)]
@shiika_vtable_String = constant [35 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%String*, %String*)* @String_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%String*, %"Shiika::Internal::Ptr"*, %Int*)* @String_initialize to i8*), i8* bitcast (%String* (%String*)* @String_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%String*)* @String_to__s to i8*), i8* bitcast (%String* (%String*, %Int*)* @String_mul_ to i8*), i8* bitcast (%String* (%String*, %String*)* @String_add_ to i8*), i8* bitcast (%Array* (%String*)* @String_bytes to i8*), i8* bitcast (%Int* (%String*)* @String_bytesize to i8*), i8* bitcast (%Int* (%String*, %Int*)* @_set_String_bytesize to i8*), i8* bitcast (%Void* (%String*, %Fn1*)* @String_each__byte to i8*), i8* bitcast (%Void* (%String*, %Fn1*)* @String_each__char to i8*), i8* bitcast (%Void* (%String*, %Fn1*)* @String_each__line to i8*), i8* bitcast (%Bool* (%String*)* @"String_empty?" to i8*), i8* bitcast (%Bool* (%String*, %String*)* @"String_ends__with?" to i8*), i8* bitcast (%Array* (%String*)* @String_lines to i8*), i8* bitcast (%Int* (%String*, %Int*)* @String_nth__byte to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%String*)* @String_ptr to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%String*, %"Shiika::Internal::Ptr"*)* @_set_String_ptr to i8*), i8* bitcast (%String* (%String*, %Int*, %Int*)* @String_slice__bytes to i8*), i8* bitcast (%Array* (%String*, %String*)* @String_split to i8*), i8* bitcast (%Bool* (%String*, %String*)* @"String_starts__with?" to i8*), i8* bitcast (%Int* (%String*)* @String_to__i to i8*), i8* bitcast (%MutableString* (%String*)* @String_to__mutable to i8*)]
@shiika_vtable_Void = constant [16 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Object*)* @Object_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Void*)* @Void_to__s to i8*)]
@shiika_vtable_Fn5 = constant [24 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Fn*, %"Shiika::Internal::Ptr"*, %Object*, %Array*)* @Fn_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%Array* (%Fn*)* @Fn_captures to i8*), i8* bitcast (%Array* (%Fn*, %Array*)* @_set_Fn_captures to i8*), i8* bitcast (%Int* (%Fn*)* @Fn_exit__status to i8*), i8* bitcast (%Int* (%Fn*, %Int*)* @_set_Fn_exit__status to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Fn*)* @Fn_func to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Fn*, %"Shiika::Internal::Ptr"*)* @_set_Fn_func to i8*), i8* bitcast (%Object* (%Fn*)* @Fn_the__self to i8*), i8* bitcast (%Object* (%Fn*, %Object*)* @_set_Fn_the__self to i8*)]
@shiika_vtable_Dict = constant [24 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Dict*)* @Dict_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%Maybe* (%Dict*, %Object*)* @Dict_aref_ to i8*), i8* bitcast (%Void* (%Dict*, %Object*, %Object*)* @Dict_aset_ to i8*), i8* bitcast (%"Dict::Table"* (%Dict*, %Object*)* @Dict___table to i8*), i8* bitcast (%Bool* (%Dict*, %Object*)* @"Dict_has__key?" to i8*), i8* bitcast (%Array* (%Dict*)* @Dict_keys to i8*), i8* bitcast (%Array* (%Dict*)* @Dict_tables to i8*), i8* bitcast (%Array* (%Dict*, %Array*)* @_set_Dict_tables to i8*), i8* bitcast (%Array* (%Dict*)* @Dict_values to i8*)]
@"shiika_vtable_Meta:Dict" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Dict* (%Dict*)* @Meta_Dict_new to i8*)]
@"shiika_vtable_Meta:Fn1" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Fn1* (%Fn1*, %"Shiika::Internal::Ptr"*, %Object*, %Array*)* @Meta_Fn1_new to i8*)]
@shiika_vtable_Float = constant [25 x i8*] [i8* bitcast (%Bool* (%Float*, %Float*)* @Float_lt_ to i8*), i8* bitcast (%Bool* (%Float*, %Float*)* @Float_le_ to i8*), i8* bitcast (%Bool* (%Float*, %Float*)* @Float_eq_ to i8*), i8* bitcast (%Bool* (%Float*, %Float*)* @Float_gt_ to i8*), i8* bitcast (%Bool* (%Float*, %Float*)* @Float_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Object*)* @Object_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Float*)* @Float_to__s to i8*), i8* bitcast (%Float* (%Float*, %Int*)* @Float_mod_ to i8*), i8* bitcast (%Float* (%Float*, %Float*)* @Float_mul_ to i8*), i8* bitcast (%Float* (%Float*, %Float*)* @Float_add_ to i8*), i8* bitcast (%Float* (%Float*, %Float*)* @Float_sub_ to i8*), i8* bitcast (%Float* (%Float*)* @Float_uminus_ to i8*), i8* bitcast (%Float* (%Float*, %Float*)* @Float_div_ to i8*), i8* bitcast (%Float* (%Float*)* @Float_abs to i8*), i8* bitcast (%Float* (%Float*)* @Float_floor to i8*), i8* bitcast (%Int* (%Float*)* @Float_to__i to i8*)]
@"shiika_vtable_Meta:Maybe::Some" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%"Maybe::Some"* (%"Maybe::Some"*, %Object*)* @Meta_Maybe_Some_new to i8*)]
@shiika_vtable_Pair = constant [20 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Pair*, %Object*, %Object*)* @Pair_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%Object* (%Pair*)* @Pair_fst to i8*), i8* bitcast (%Object* (%Pair*, %Object*)* @_set_Pair_fst to i8*), i8* bitcast (%Object* (%Pair*)* @Pair_snd to i8*), i8* bitcast (%Object* (%Pair*, %Object*)* @_set_Pair_snd to i8*)]
@"shiika_vtable_Meta:Array" = constant [25 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Array* (%Array*, %Int*, %Fn1*)* @Meta_Array_build to i8*), i8* bitcast (%Array* (%Array*)* @Meta_Array_new to i8*), i8* bitcast (%Array* (%Array*, %Object*, %Int*)* @Meta_Array_repeat to i8*)]
@"shiika_vtable_Meta:Object" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Object* (%Object*)* @Meta_Object_new to i8*)]
@"shiika_vtable_Meta:Fn9" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Fn9* (%Fn9*, %"Shiika::Internal::Ptr"*, %Object*, %Array*)* @Meta_Fn9_new to i8*)]
@"shiika_vtable_Meta:Enumerable" = constant [22 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*)]
@"shiika_vtable_Shiika::Internal::Memory" = constant [16 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Object*)* @Object_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*)]
@shiika_vtable_Fn3 = constant [24 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Fn*, %"Shiika::Internal::Ptr"*, %Object*, %Array*)* @Fn_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%Array* (%Fn*)* @Fn_captures to i8*), i8* bitcast (%Array* (%Fn*, %Array*)* @_set_Fn_captures to i8*), i8* bitcast (%Int* (%Fn*)* @Fn_exit__status to i8*), i8* bitcast (%Int* (%Fn*, %Int*)* @_set_Fn_exit__status to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Fn*)* @Fn_func to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Fn*, %"Shiika::Internal::Ptr"*)* @_set_Fn_func to i8*), i8* bitcast (%Object* (%Fn*)* @Fn_the__self to i8*), i8* bitcast (%Object* (%Fn*, %Object*)* @_set_Fn_the__self to i8*)]
@shiika_vtable_Fn8 = constant [24 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Fn*, %"Shiika::Internal::Ptr"*, %Object*, %Array*)* @Fn_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%Array* (%Fn*)* @Fn_captures to i8*), i8* bitcast (%Array* (%Fn*, %Array*)* @_set_Fn_captures to i8*), i8* bitcast (%Int* (%Fn*)* @Fn_exit__status to i8*), i8* bitcast (%Int* (%Fn*, %Int*)* @_set_Fn_exit__status to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Fn*)* @Fn_func to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Fn*, %"Shiika::Internal::Ptr"*)* @_set_Fn_func to i8*), i8* bitcast (%Object* (%Fn*)* @Fn_the__self to i8*), i8* bitcast (%Object* (%Fn*, %Object*)* @_set_Fn_the__self to i8*)]
@"shiika_vtable_Meta:Fn2" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Fn2* (%Fn2*, %"Shiika::Internal::Ptr"*, %Object*, %Array*)* @Meta_Fn2_new to i8*)]
@shiika_vtable_Error = constant [18 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Error*, %String*)* @Error_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%String* (%Error*)* @Error_msg to i8*), i8* bitcast (%String* (%Error*, %String*)* @_set_Error_msg to i8*)]
@"shiika_vtable_Dict::Table" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%"Dict::Table"*)* @Dict_Table_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%Maybe* (%"Dict::Table"*, %Object*)* @Dict_Table_aref_ to i8*), i8* bitcast (%Void* (%"Dict::Table"*, %Object*, %Object*)* @Dict_Table_aset_ to i8*), i8* bitcast (%Bool* (%"Dict::Table"*, %Object*)* @"Dict_Table_has__key?" to i8*), i8* bitcast (%Array* (%"Dict::Table"*)* @Dict_Table_keys to i8*), i8* bitcast (%Array* (%"Dict::Table"*)* @Dict_Table_pairs to i8*), i8* bitcast (%Array* (%"Dict::Table"*, %Array*)* @_set_Dict_Table_pairs to i8*), i8* bitcast (%Array* (%"Dict::Table"*)* @Dict_Table_values to i8*)]
@"shiika_vtable_Meta:Dict::Table" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%"Dict::Table"* (%"Dict::Table"*)* @Meta_Dict_Table_new to i8*)]
@shiika_vtable_Class = constant [22 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*)]
@"shiika_vtable_Meta:String" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%String* (%String*, %"Shiika::Internal::Ptr"*, %Int*)* @Meta_String_new to i8*)]
@shiika_vtable_Fn9 = constant [24 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Fn*, %"Shiika::Internal::Ptr"*, %Object*, %Array*)* @Fn_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%Array* (%Fn*)* @Fn_captures to i8*), i8* bitcast (%Array* (%Fn*, %Array*)* @_set_Fn_captures to i8*), i8* bitcast (%Int* (%Fn*)* @Fn_exit__status to i8*), i8* bitcast (%Int* (%Fn*, %Int*)* @_set_Fn_exit__status to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Fn*)* @Fn_func to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Fn*, %"Shiika::Internal::Ptr"*)* @_set_Fn_func to i8*), i8* bitcast (%Object* (%Fn*)* @Fn_the__self to i8*), i8* bitcast (%Object* (%Fn*, %Object*)* @_set_Fn_the__self to i8*)]
@shiika_vtable_Math = constant [16 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Object*)* @Object_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*)]
@"shiika_vtable_Meta:Bool" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Bool* (%Bool*)* @Meta_Bool_new to i8*)]
@"shiika_vtable_Meta:Fn3" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Fn3* (%Fn3*, %"Shiika::Internal::Ptr"*, %Object*, %Array*)* @Meta_Fn3_new to i8*)]
@"shiika_vtable_Meta:Maybe" = constant [22 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*)]
@"shiika_vtable_Meta:MutableString" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%MutableString* (%MutableString*)* @Meta_MutableString_new to i8*)]
@"shiika_vtable_Meta:Fn6" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Fn6* (%Fn6*, %"Shiika::Internal::Ptr"*, %Object*, %Array*)* @Meta_Fn6_new to i8*)]
@shiika_vtable_Object = constant [16 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Object*)* @Object_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*)]
@"shiika_vtable_Maybe::Some" = constant [20 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%"Maybe::Some"*, %Object*)* @Maybe_Some_initialize to i8*), i8* bitcast (%String* (%Maybe*)* @Maybe_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%Object* (%Maybe*, %String*)* @Maybe_expect to i8*), i8* bitcast (%Maybe* (%Maybe*, %Fn1*)* @Maybe_map to i8*), i8* bitcast (%Object* (%"Maybe::Some"*)* @Maybe_Some_value to i8*), i8* bitcast (%Object* (%"Maybe::Some"*, %Object*)* @_set_Maybe_Some_value to i8*)]
@shiika_vtable_Metaclass = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Metaclass*)* @Metaclass_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Metaclass*)* @Metaclass_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Metaclass* (%Metaclass*, %String*, %Object*, %Metaclass*)* @Metaclass_new to i8*)]
@"shiika_vtable_Maybe::None" = constant [18 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%"Maybe::None"*)* @Maybe_None_initialize to i8*), i8* bitcast (%String* (%Maybe*)* @Maybe_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%Object* (%Maybe*, %String*)* @Maybe_expect to i8*), i8* bitcast (%Maybe* (%Maybe*, %Fn1*)* @Maybe_map to i8*)]
@"shiika_vtable_Meta:Fn7" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Fn7* (%Fn7*, %"Shiika::Internal::Ptr"*, %Object*, %Array*)* @Meta_Fn7_new to i8*)]
@shiika_vtable_MutableString = constant [28 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%MutableString*)* @MutableString_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%MutableString*)* @MutableString_to__s to i8*), i8* bitcast (%Void* (%MutableString*, %Int*)* @MutableString___realloc__if__needed to i8*), i8* bitcast (%String* (%MutableString*)* @MutableString___unsafe__to__s to i8*), i8* bitcast (%Void* (%MutableString*, %String*)* @MutableString_append to i8*), i8* bitcast (%Void* (%MutableString*, %Int*)* @MutableString_append__byte to i8*), i8* bitcast (%Int* (%MutableString*)* @MutableString_bytesize to i8*), i8* bitcast (%Int* (%MutableString*, %Int*)* @_set_MutableString_bytesize to i8*), i8* bitcast (%Int* (%MutableString*)* @MutableString_capa to i8*), i8* bitcast (%Int* (%MutableString*, %Int*)* @_set_MutableString_capa to i8*), i8* bitcast (%Int* (%MutableString*, %Int*)* @MutableString_nth__byte to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%MutableString*)* @MutableString_ptr to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%MutableString*, %"Shiika::Internal::Ptr"*)* @_set_MutableString_ptr to i8*), i8* bitcast (%Void* (%MutableString*, %Int*, %Int*)* @MutableString_write__byte to i8*)]
@"shiika_vtable_Meta:Result::Fail" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%"Result::Fail"* (%"Result::Fail"*, %Object*)* @Meta_Result_Fail_new to i8*)]
@"shiika_vtable_Shiika::Internal::Ptr" = constant [21 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Object*)* @Object_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%"Shiika::Internal::Ptr"*, %Int*)* @Shiika_Internal_Ptr_add_ to i8*), i8* bitcast (%Object* (%"Shiika::Internal::Ptr"*)* @Shiika_Internal_Ptr_load to i8*), i8* bitcast (%Int* (%"Shiika::Internal::Ptr"*)* @Shiika_Internal_Ptr_read to i8*), i8* bitcast (%Void* (%"Shiika::Internal::Ptr"*, %Object*)* @Shiika_Internal_Ptr_store to i8*), i8* bitcast (%Void* (%"Shiika::Internal::Ptr"*, %Int*)* @Shiika_Internal_Ptr_write to i8*)]
@"shiika_vtable_Meta:Void" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Void* (%Void*)* @Meta_Void_new to i8*)]
@"shiika_vtable_Meta:Class" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Class.0* (%Class.0*, %String*, %Object*, %Metaclass*)* @Meta_Class_new to i8*)]
@"shiika_vtable_Meta:Fn8" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Fn8* (%Fn8*, %"Shiika::Internal::Ptr"*, %Object*, %Array*)* @Meta_Fn8_new to i8*)]
@"shiika_vtable_Meta:File" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%File* (%File*, %String*, %Object*)* @Meta_File_new to i8*)]
@"shiika_vtable_Meta:Math" = constant [25 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Float* (%Math*, %Float*)* @Meta_Math_cos to i8*), i8* bitcast (%Float* (%Math*, %Float*)* @Meta_Math_sin to i8*), i8* bitcast (%Float* (%Math*, %Float*)* @Meta_Math_sqrt to i8*)]
@shiika_vtable_Bool = constant [16 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Object*)* @Object_initialize to i8*), i8* bitcast (%String* (%Bool*)* @Bool_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*)]
@shiika_vtable_File = constant [20 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%File*, %String*, %Object*)* @File_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%Object* (%File*)* @File_file to i8*), i8* bitcast (%Object* (%File*, %Object*)* @_set_File_file to i8*), i8* bitcast (%String* (%File*)* @File_path to i8*), i8* bitcast (%String* (%File*, %String*)* @_set_File_path to i8*)]
@"shiika_vtable_Meta:Triple" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Triple* (%Triple*, %Object*, %Object*, %Object*)* @Meta_Triple_new to i8*)]
@"shiika_vtable_Meta:Fn4" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Fn4* (%Fn4*, %"Shiika::Internal::Ptr"*, %Object*, %Array*)* @Meta_Fn4_new to i8*)]
@shiika_vtable_Triple = constant [22 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Triple*, %Object*, %Object*, %Object*)* @Triple_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%Object* (%Triple*)* @Triple_fst to i8*), i8* bitcast (%Object* (%Triple*, %Object*)* @_set_Triple_fst to i8*), i8* bitcast (%Object* (%Triple*)* @Triple_snd to i8*), i8* bitcast (%Object* (%Triple*, %Object*)* @_set_Triple_snd to i8*), i8* bitcast (%Object* (%Triple*)* @Triple_thd to i8*), i8* bitcast (%Object* (%Triple*, %Object*)* @_set_Triple_thd to i8*)]
@"shiika_vtable_Meta:Fn0" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Fn0* (%Fn0*, %"Shiika::Internal::Ptr"*, %Object*, %Array*)* @Meta_Fn0_new to i8*)]
@"shiika_vtable_Meta:Shiika::Internal::Memory" = constant [25 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%"Shiika::Internal::Memory"*, %Int*)* @Meta_Shiika_Internal_Memory_gc__malloc to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%"Shiika::Internal::Memory"*, %"Shiika::Internal::Ptr"*, %Int*)* @Meta_Shiika_Internal_Memory_gc__realloc to i8*), i8* bitcast (%Void* (%"Shiika::Internal::Memory"*, %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"*, %Int*)* @Meta_Shiika_Internal_Memory_memcpy to i8*)]
@"shiika_vtable_Meta:Maybe::None" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%"Maybe::None"* (%"Maybe::None"*)* @Meta_Maybe_None_new to i8*)]
@shiika_vtable_Result = constant [16 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Object*)* @Object_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*)]
@"shiika_vtable_Meta:Result::Ok" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%"Result::Ok"* (%"Result::Ok"*, %Object*)* @Meta_Result_Ok_new to i8*)]
@"shiika_vtable_Meta:Fn5" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Fn5* (%Fn5*, %"Shiika::Internal::Ptr"*, %Object*, %Array*)* @Meta_Fn5_new to i8*)]
@shiika_vtable_Fn1 = constant [24 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Fn*, %"Shiika::Internal::Ptr"*, %Object*, %Array*)* @Fn_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%Array* (%Fn*)* @Fn_captures to i8*), i8* bitcast (%Array* (%Fn*, %Array*)* @_set_Fn_captures to i8*), i8* bitcast (%Int* (%Fn*)* @Fn_exit__status to i8*), i8* bitcast (%Int* (%Fn*, %Int*)* @_set_Fn_exit__status to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Fn*)* @Fn_func to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Fn*, %"Shiika::Internal::Ptr"*)* @_set_Fn_func to i8*), i8* bitcast (%Object* (%Fn*)* @Fn_the__self to i8*), i8* bitcast (%Object* (%Fn*, %Object*)* @_set_Fn_the__self to i8*)]
@"shiika_vtable_Result::Fail" = constant [18 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%"Result::Fail"*, %Object*)* @Result_Fail_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%Object* (%"Result::Fail"*)* @Result_Fail_err to i8*), i8* bitcast (%Object* (%"Result::Fail"*, %Object*)* @_set_Result_Fail_err to i8*)]
@"shiika_vtable_Meta:Result" = constant [22 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*)]
@shiika_vtable_Fn = constant [24 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Fn*, %"Shiika::Internal::Ptr"*, %Object*, %Array*)* @Fn_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%Array* (%Fn*)* @Fn_captures to i8*), i8* bitcast (%Array* (%Fn*, %Array*)* @_set_Fn_captures to i8*), i8* bitcast (%Int* (%Fn*)* @Fn_exit__status to i8*), i8* bitcast (%Int* (%Fn*, %Int*)* @_set_Fn_exit__status to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Fn*)* @Fn_func to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Fn*, %"Shiika::Internal::Ptr"*)* @_set_Fn_func to i8*), i8* bitcast (%Object* (%Fn*)* @Fn_the__self to i8*), i8* bitcast (%Object* (%Fn*, %Object*)* @_set_Fn_the__self to i8*)]
@"shiika_vtable_Meta:Shiika::Internal::Ptr" = constant [22 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*)]
@"shiika_vtable_Meta:Error" = constant [23 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Class.0*, %String*, %Object*, %Metaclass*)* @Class_initialize to i8*), i8* bitcast (%String* (%Class.0*)* @Class_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Class.0*)* @Class_to__s to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class_lt_gt_ to i8*), i8* bitcast (%Object* (%Class.0*, %Object*, %Object*)* @Class___initialize__rustlib to i8*), i8* bitcast (%Class.0* (%Class.0*, %Array*)* @Class___specialize1 to i8*), i8* bitcast (%Class.0* (%Class.0*, %Int*)* @Class___type__argument to i8*), i8* bitcast (%String* (%Class.0*)* @Class_name to i8*), i8* bitcast (%String* (%Class.0*, %String*)* @_set_Class_name to i8*), i8* bitcast (%Error* (%Error*, %String*)* @Meta_Error_new to i8*)]
@shiika_vtable_Fn2 = constant [24 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Fn*, %"Shiika::Internal::Ptr"*, %Object*, %Array*)* @Fn_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%Array* (%Fn*)* @Fn_captures to i8*), i8* bitcast (%Array* (%Fn*, %Array*)* @_set_Fn_captures to i8*), i8* bitcast (%Int* (%Fn*)* @Fn_exit__status to i8*), i8* bitcast (%Int* (%Fn*, %Int*)* @_set_Fn_exit__status to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Fn*)* @Fn_func to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Fn*, %"Shiika::Internal::Ptr"*)* @_set_Fn_func to i8*), i8* bitcast (%Object* (%Fn*)* @Fn_the__self to i8*), i8* bitcast (%Object* (%Fn*, %Object*)* @_set_Fn_the__self to i8*)]
@shiika_vtable_Array = constant [54 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Array*, %Array*)* @Array_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Array*)* @Array_initialize to i8*), i8* bitcast (%String* (%Array*)* @Array_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%Object* (%Array*, %Int*)* @Array_aref_ to i8*), i8* bitcast (%Void* (%Array*, %Int*, %Object*)* @Array_aset_ to i8*), i8* bitcast (%Int* (%Array*, %Int*, %Int*)* @Array___choose__pivot to i8*), i8* bitcast (%Int* (%Array*, %Int*, %Int*, %Object*)* @Array___partition to i8*), i8* bitcast (%Void* (%Array*, %Int*, %Int*)* @Array___quicksort to i8*), i8* bitcast (%Bool* (%Array*, %Fn1*)* @"Array_all?" to i8*), i8* bitcast (%Bool* (%Array*, %Fn1*)* @"Array_any?" to i8*), i8* bitcast (%Void* (%Array*, %Array*)* @Array_append to i8*), i8* bitcast (%Int* (%Array*)* @Array_capa to i8*), i8* bitcast (%Int* (%Array*, %Int*)* @_set_Array_capa to i8*), i8* bitcast (%Void* (%Array*)* @Array_clear to i8*), i8* bitcast (%Array* (%Array*)* @Array_clone to i8*), i8* bitcast (%Array* (%Array*, %Int*)* @Array_drop to i8*), i8* bitcast (%Void* (%Array*, %Fn1*)* @Array_each to i8*), i8* bitcast (%Bool* (%Array*)* @"Array_empty?" to i8*), i8* bitcast (%Maybe* (%Array*)* @Array_first to i8*), i8* bitcast (%Array* (%Array*, %Fn1*)* @Array_flat__map to i8*), i8* bitcast (%Object* (%Array*, %Object*, %Fn2*)* @Array_fold to i8*), i8* bitcast (%Bool* (%Array*, %Object*)* @"Array_includes?" to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Array*)* @Array_items to i8*), i8* bitcast (%"Shiika::Internal::Ptr"* (%Array*, %"Shiika::Internal::Ptr"*)* @_set_Array_items to i8*), i8* bitcast (%String* (%Array*, %String*)* @Array_join to i8*), i8* bitcast (%Maybe* (%Array*)* @Array_last to i8*), i8* bitcast (%Int* (%Array*)* @Array_length to i8*), i8* bitcast (%Array* (%Array*, %Fn1*)* @Array_map to i8*), i8* bitcast (%Int* (%Array*)* @Array_n__items to i8*), i8* bitcast (%Int* (%Array*, %Int*)* @_set_Array_n__items to i8*), i8* bitcast (%Bool* (%Array*, %Fn1*)* @"Array_none?" to i8*), i8* bitcast (%Object* (%Array*)* @Array_pop to i8*), i8* bitcast (%Void* (%Array*, %Object*)* @Array_push to i8*), i8* bitcast (%Array* (%Array*, %Fn1*)* @Array_reject to i8*), i8* bitcast (%Void* (%Array*, %Int*)* @Array_reserve to i8*), i8* bitcast (%Array* (%Array*)* @Array_reverse to i8*), i8* bitcast (%Void* (%Array*, %Fn1*)* @Array_reverse__each to i8*), i8* bitcast (%Array* (%Array*, %Fn1*)* @Array_select to i8*), i8* bitcast (%Maybe* (%Array*)* @Array_shift to i8*), i8* bitcast (%Array* (%Array*)* @Array_sort to i8*), i8* bitcast (%Void* (%Array*)* @Array_sort__inplace to i8*)]
@shiika_vtable_Maybe = constant [18 x i8*] [i8* bitcast (%Bool* (%Object*, %Object*)* @Object_lt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_le_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_eq_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_gt_ to i8*), i8* bitcast (%Bool* (%Object*, %Object*)* @Object_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Object*)* @Object_hash to i8*), i8* bitcast (%Void* (%Object*)* @Object_initialize to i8*), i8* bitcast (%String* (%Maybe*)* @Maybe_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Object*)* @Object_to__s to i8*), i8* bitcast (%Object* (%Maybe*, %String*)* @Maybe_expect to i8*), i8* bitcast (%Maybe* (%Maybe*, %Fn1*)* @Maybe_map to i8*)]
@shiika_vtable_Int = constant [35 x i8*] [i8* bitcast (%Bool* (%Int*, %Int*)* @Int_lt_ to i8*), i8* bitcast (%Bool* (%Int*, %Int*)* @Int_le_ to i8*), i8* bitcast (%Bool* (%Int*, %Int*)* @Int_eq_ to i8*), i8* bitcast (%Bool* (%Int*, %Int*)* @Int_gt_ to i8*), i8* bitcast (%Bool* (%Int*, %Int*)* @Int_ge_ to i8*), i8* bitcast (%Class.0* (%Object*)* @Object_class to i8*), i8* bitcast (void (%Object*, %Int*)* @Object_exit to i8*), i8* bitcast (%Int* (%Int*)* @Int_hash to i8*), i8* bitcast (%Void* (%Object*)* @Object_initialize to i8*), i8* bitcast (%String* (%Object*)* @Object_inspect to i8*), i8* bitcast (%Int* (%Object*)* @Object_object__id to i8*), i8* bitcast (%Void* (%Object*, %Object*)* @Object_p to i8*), i8* bitcast (void (%Object*, %String*)* @Object_panic to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_print to i8*), i8* bitcast (%Void* (%Object*, %String*)* @Object_puts to i8*), i8* bitcast (%String* (%Int*)* @Int_to__s to i8*), i8* bitcast (%Int* (%Int*, %Int*)* @Int_mod_ to i8*), i8* bitcast (%Int* (%Int*, %Int*)* @Int_mul_ to i8*), i8* bitcast (%Int* (%Int*, %Int*)* @Int_add_ to i8*), i8* bitcast (%Int* (%Int*, %Int*)* @Int_sub_ to i8*), i8* bitcast (%Int* (%Int*)* @Int_uminus_ to i8*), i8* bitcast (%Float* (%Int*, %Int*)* @Int_div_ to i8*), i8* bitcast (%Int* (%Int*)* @Int_abs to i8*), i8* bitcast (%Int* (%Int*, %Int*)* @Int_and to i8*), i8* bitcast (%Void* (%Int*, %Int*, %Fn1*)* @Int_downto to i8*), i8* bitcast (%Bool* (%Int*)* @"Int_even?" to i8*), i8* bitcast (%Int* (%Int*, %Int*)* @Int_lshift to i8*), i8* bitcast (%Bool* (%Int*)* @"Int_odd?" to i8*), i8* bitcast (%Int* (%Int*, %Int*)* @Int_or to i8*), i8* bitcast (%Int* (%Int*, %Int*)* @Int_rshift to i8*), i8* bitcast (%Void* (%Int*, %Fn1*)* @Int_times to i8*), i8* bitcast (%Float* (%Int*)* @Int_to__f to i8*), i8* bitcast (%Int* (%Int*)* @Int_to__i to i8*), i8* bitcast (%Void* (%Int*, %Int*, %Fn1*)* @Int_upto to i8*), i8* bitcast (%Int* (%Int*, %Int*)* @Int_xor to i8*)]
declare void @GC_init()
declare i8* @shiika_malloc(i64)
declare i8* @shiika_realloc(i8*, i64)
declare i8* @shiika_lookup_wtable(i8*, i64, i64)
define %Bool* @box_bool(i1 %0) {
%class_obj = load %Bool*, %Bool** @"::Bool", align 8
%mem = call i8* @shiika_malloc(i64 ptrtoint (%Bool* getelementptr (%Bool, %Bool* null, i32 1) to i64))
%sk_bool = bitcast i8* %mem to %Bool*
%addr_vtable = getelementptr inbounds %Bool, %Bool* %sk_bool, i32 0, i32 0
store i8* bitcast ([16 x i8*]* @shiika_vtable_Bool to i8*), i8** %addr_vtable, align 8
%class = bitcast %Bool* %class_obj to %Class.0*
%addr_my_class = getelementptr inbounds %Bool, %Bool* %sk_bool, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%"addr_@llvm_bool" = getelementptr inbounds %Bool, %Bool* %sk_bool, i32 0, i32 2
store i1 %0, i1* %"addr_@llvm_bool", align 1
ret %Bool* %sk_bool
}
define i1 @unbox_bool(%Bool* %0) {
%"addr_@llvm_bool" = getelementptr inbounds %Bool, %Bool* %0, i32 0, i32 2
%"@llvm_bool" = load i1, i1* %"addr_@llvm_bool", align 1
ret i1 %"@llvm_bool"
}
define %Int* @box_int(i64 %0) {
%class_obj = load %Int*, %Int** @"::Int", align 8
%mem = call i8* @shiika_malloc(i64 ptrtoint (%Int* getelementptr (%Int, %Int* null, i32 1) to i64))
%sk_int = bitcast i8* %mem to %Int*
%addr_vtable = getelementptr inbounds %Int, %Int* %sk_int, i32 0, i32 0
store i8* bitcast ([35 x i8*]* @shiika_vtable_Int to i8*), i8** %addr_vtable, align 8
%class = bitcast %Int* %class_obj to %Class.0*
%addr_my_class = getelementptr inbounds %Int, %Int* %sk_int, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%"addr_@llvm_int" = getelementptr inbounds %Int, %Int* %sk_int, i32 0, i32 2
store i64 %0, i64* %"addr_@llvm_int", align 4
ret %Int* %sk_int
}
define i64 @unbox_int(%Int* %0) {
%"addr_@llvm_int" = getelementptr inbounds %Int, %Int* %0, i32 0, i32 2
%"@llvm_int" = load i64, i64* %"addr_@llvm_int", align 4
ret i64 %"@llvm_int"
}
define %Float* @box_float(double %0) {
%class_obj = load %Float*, %Float** @"::Float", align 8
%mem = call i8* @shiika_malloc(i64 ptrtoint (%Float* getelementptr (%Float, %Float* null, i32 1) to i64))
%sk_float = bitcast i8* %mem to %Float*
%addr_vtable = getelementptr inbounds %Float, %Float* %sk_float, i32 0, i32 0
store i8* bitcast ([25 x i8*]* @shiika_vtable_Float to i8*), i8** %addr_vtable, align 8
%class = bitcast %Float* %class_obj to %Class.0*
%addr_my_class = getelementptr inbounds %Float, %Float* %sk_float, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%"addr_@llvm_float" = getelementptr inbounds %Float, %Float* %sk_float, i32 0, i32 2
store double %0, double* %"addr_@llvm_float", align 8
ret %Float* %sk_float
}
define double @unbox_float(%Float* %0) {
%"addr_@llvm_float" = getelementptr inbounds %Float, %Float* %0, i32 0, i32 2
%"@llvm_float" = load double, double* %"addr_@llvm_float", align 8
ret double %"@llvm_float"
}
define %"Shiika::Internal::Ptr"* @box_i8ptr(i8* %0) {
%class_obj = load %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"** @"::Shiika::Internal::Ptr", align 8
%mem = call i8* @shiika_malloc(i64 mul nuw (i64 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), i64 3))
%sk_ptr = bitcast i8* %mem to %"Shiika::Internal::Ptr"*
%addr_vtable = getelementptr inbounds %"Shiika::Internal::Ptr", %"Shiika::Internal::Ptr"* %sk_ptr, i32 0, i32 0
store i8* bitcast ([21 x i8*]* @"shiika_vtable_Shiika::Internal::Ptr" to i8*), i8** %addr_vtable, align 8
%class = bitcast %"Shiika::Internal::Ptr"* %class_obj to %Class.0*
%addr_my_class = getelementptr inbounds %"Shiika::Internal::Ptr", %"Shiika::Internal::Ptr"* %sk_ptr, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%"addr_@llvm_i8ptr" = getelementptr inbounds %"Shiika::Internal::Ptr", %"Shiika::Internal::Ptr"* %sk_ptr, i32 0, i32 2
store i8* %0, i8** %"addr_@llvm_i8ptr", align 8
ret %"Shiika::Internal::Ptr"* %sk_ptr
}
define i8* @unbox_i8ptr(%"Shiika::Internal::Ptr"* %0) {
%"addr_@llvm_i8ptr" = getelementptr inbounds %"Shiika::Internal::Ptr", %"Shiika::Internal::Ptr"* %0, i32 0, i32 2
%"@llvm_i8ptr" = load i8*, i8** %"addr_@llvm_i8ptr", align 8
ret i8* %"@llvm_i8ptr"
}
define %String* @gen_literal_string(i8* %0, i64 %1) {
%"::String" = load %String*, %String** @"::String", align 8
%sk_ptr = call %"Shiika::Internal::Ptr"* @box_i8ptr(i8* %0)
%sk_int = call %Int* @box_int(i64 %1)
%sk_str = call %String* @Meta_String_new(%String* %"::String", %"Shiika::Internal::Ptr"* %sk_ptr, %Int* %sk_int)
ret %String* %sk_str
}
define %Void* @Triple_initialize(%Triple* %self, %Object* %"@fst", %Object* %"@snd", %Object* %"@thd") {
%"addr_@fst" = getelementptr inbounds %Triple, %Triple* %self, i32 0, i32 2
store %Object* %"@fst", %Object** %"addr_@fst", align 8
%"addr_@snd" = getelementptr inbounds %Triple, %Triple* %self, i32 0, i32 3
store %Object* %"@snd", %Object** %"addr_@snd", align 8
%"addr_@thd" = getelementptr inbounds %Triple, %Triple* %self, i32 0, i32 4
store %Object* %"@thd", %Object** %"addr_@thd", align 8
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %Ret
End: ; preds = %Ret
%"::Void1" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void1"
Ret: ; preds = %0
br label %End
}
define %Object* @Triple_fst(%Triple* %self) {
%"addr_@fst" = getelementptr inbounds %Triple, %Triple* %self, i32 0, i32 2
%"@fst" = load %Object*, %Object** %"addr_@fst", align 8
ret %Object* %"@fst"
}
define %Object* @_set_Triple_fst(%Triple* %self, %Object* %fst) {
%"addr_@fst" = getelementptr inbounds %Triple, %Triple* %self, i32 0, i32 2
store %Object* %fst, %Object** %"addr_@fst", align 8
ret %Object* %fst
}
define %Object* @Triple_thd(%Triple* %self) {
%"addr_@thd" = getelementptr inbounds %Triple, %Triple* %self, i32 0, i32 4
%"@thd" = load %Object*, %Object** %"addr_@thd", align 8
ret %Object* %"@thd"
}
define %Object* @_set_Triple_thd(%Triple* %self, %Object* %thd) {
%"addr_@thd" = getelementptr inbounds %Triple, %Triple* %self, i32 0, i32 4
store %Object* %thd, %Object** %"addr_@thd", align 8
ret %Object* %thd
}
define %Object* @Triple_snd(%Triple* %self) {
%"addr_@snd" = getelementptr inbounds %Triple, %Triple* %self, i32 0, i32 3
%"@snd" = load %Object*, %Object** %"addr_@snd", align 8
ret %Object* %"@snd"
}
define %Object* @_set_Triple_snd(%Triple* %self, %Object* %snd) {
%"addr_@snd" = getelementptr inbounds %Triple, %Triple* %self, i32 0, i32 3
store %Object* %snd, %Object** %"addr_@snd", align 8
ret %Object* %snd
}
define %Error* @Meta_Error_new(%Error* %self, %String* %"@msg") {
%mem = call i8* @shiika_malloc(i64 mul nuw (i64 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), i64 3))
%addr = bitcast i8* %mem to %Error*
%addr_vtable = getelementptr inbounds %Error, %Error* %addr, i32 0, i32 0
store i8* bitcast ([18 x i8*]* @shiika_vtable_Error to i8*), i8** %addr_vtable, align 8
%class = bitcast %Error* %self to %Class.0*
%addr_my_class = getelementptr inbounds %Error, %Error* %addr, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%1 = call %Void* @Error_initialize(%Error* %addr, %String* %"@msg")
ret %Error* %addr
}
define %Array* @Meta_Array_new(%Array* %self) {
%mem = call i8* @shiika_malloc(i64 mul nuw (i64 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), i64 5))
%addr = bitcast i8* %mem to %Array*
%addr_vtable = getelementptr inbounds %Array, %Array* %addr, i32 0, i32 0
store i8* bitcast ([54 x i8*]* @shiika_vtable_Array to i8*), i8** %addr_vtable, align 8
%class = bitcast %Array* %self to %Class.0*
%addr_my_class = getelementptr inbounds %Array, %Array* %addr, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%1 = call %Void* @Array_initialize(%Array* %addr)
ret %Array* %addr
}
define %Array* @Meta_Array_build(%Array* %self, %Int* %len, %Fn1* %f) {
alloca:
%"ary@4_" = alloca %Array*, align 8
%ret = alloca %Array*, align 8
%i = alloca %Int*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%"::Array" = load %Array*, %Array** @"::Array", align 8
%"::Array1" = load %Array*, %Array** @"::Array", align 8
%"::Class" = load %Class.0*, %Class.0** @"::Class", align 8
br label %"Invoke_Class#_specialize1"
End: ; preds = %Ret
%methodResult = phi %Array* [ %ret70, %Ret ]
ret %Array* %methodResult
"Invoke_Class#_specialize1": ; preds = %alloca_End
%addr_vtable = getelementptr inbounds %Array, %Array* %"::Array1", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [25 x i8*]*
%vtable2 = load [25 x i8*], [25 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [25 x i8*] %vtable2, 18
%func = bitcast i8* %func_raw to %Array* (%Array*, %Class.0*)*
%result = call %Array* %func(%Array* %"::Array1", %Class.0* %"::Class")
br label %"Invoke_Class#_specialize1_end"
"Invoke_Class#_specialize1_end": ; preds = %"Invoke_Class#_specialize1"
br label %"Invoke_Array#new"
"Invoke_Array#new": ; preds = %"Invoke_Class#_specialize1_end"
%addr_vtable3 = getelementptr inbounds %Array, %Array* %result, i32 0, i32 0
%vtable4 = load i8*, i8** %addr_vtable3, align 8
%vtable_ptr5 = bitcast i8* %vtable4 to [25 x i8*]*
%vtable6 = load [25 x i8*], [25 x i8*]* %vtable_ptr5, align 8
%func_raw7 = extractvalue [25 x i8*] %vtable6, 23
%func8 = bitcast i8* %func_raw7 to %Array* (%Array*)*
%result9 = call %Array* %func8(%Array* %result)
br label %"Invoke_Array#new_end"
"Invoke_Array#new_end": ; preds = %"Invoke_Array#new"
store %Array* %result9, %Array** %"ary@4_", align 8
%"ary@4_10" = load %Array*, %Array** %"ary@4_", align 8
%"::Object" = load %Object*, %Object** @"::Object", align 8
br label %"Invoke_Array#push"
"Invoke_Array#push": ; preds = %"Invoke_Array#new_end"
%addr_vtable11 = getelementptr inbounds %Array, %Array* %"ary@4_10", i32 0, i32 0
%vtable12 = load i8*, i8** %addr_vtable11, align 8
%vtable_ptr13 = bitcast i8* %vtable12 to [54 x i8*]*
%vtable14 = load [54 x i8*], [54 x i8*]* %vtable_ptr13, align 8
%func_raw15 = extractvalue [54 x i8*] %vtable14, 45
%func16 = bitcast i8* %func_raw15 to %Void* (%Array*, %Object*)*
%result17 = call %Void* %func16(%Array* %"ary@4_10", %Object* %"::Object")
br label %"Invoke_Array#push_end"
"Invoke_Array#push_end": ; preds = %"Invoke_Array#push"
%"ary@4_18" = load %Array*, %Array** %"ary@4_", align 8
br label %"Invoke_Class#<>"
"Invoke_Class#<>": ; preds = %"Invoke_Array#push_end"
%addr_vtable19 = getelementptr inbounds %Array, %Array* %"::Array", i32 0, i32 0
%vtable20 = load i8*, i8** %addr_vtable19, align 8
%vtable_ptr21 = bitcast i8* %vtable20 to [25 x i8*]*
%vtable22 = load [25 x i8*], [25 x i8*]* %vtable_ptr21, align 8
%func_raw23 = extractvalue [25 x i8*] %vtable22, 16
%func24 = bitcast i8* %func_raw23 to %Array* (%Array*, %Array*)*
%result25 = call %Array* %func24(%Array* %"::Array", %Array* %"ary@4_18")
br label %"Invoke_Class#<>_end"
"Invoke_Class#<>_end": ; preds = %"Invoke_Class#<>"
br label %"Invoke_Meta:Array#new"
"Invoke_Meta:Array#new": ; preds = %"Invoke_Class#<>_end"
%addr_vtable26 = getelementptr inbounds %Array, %Array* %result25, i32 0, i32 0
%vtable27 = load i8*, i8** %addr_vtable26, align 8
%vtable_ptr28 = bitcast i8* %vtable27 to [25 x i8*]*
%vtable29 = load [25 x i8*], [25 x i8*]* %vtable_ptr28, align 8
%func_raw30 = extractvalue [25 x i8*] %vtable29, 23
%func31 = bitcast i8* %func_raw30 to %Array* (%Array*)*
%result32 = call %Array* %func31(%Array* %result25)
br label %"Invoke_Meta:Array#new_end"
"Invoke_Meta:Array#new_end": ; preds = %"Invoke_Meta:Array#new"
store %Array* %result32, %Array** %ret, align 8
%ret33 = load %Array*, %Array** %ret, align 8
%as = bitcast %Int* %len to %Object*
br label %"Invoke_Array#reserve"
"Invoke_Array#reserve": ; preds = %"Invoke_Meta:Array#new_end"
%addr_vtable34 = getelementptr inbounds %Array, %Array* %ret33, i32 0, i32 0
%vtable35 = load i8*, i8** %addr_vtable34, align 8
%vtable_ptr36 = bitcast i8* %vtable35 to [54 x i8*]*
%vtable37 = load [54 x i8*], [54 x i8*]* %vtable_ptr36, align 8
%func_raw38 = extractvalue [54 x i8*] %vtable37, 47
%func39 = bitcast i8* %func_raw38 to %Void* (%Array*, %Object*)*
%result40 = call %Void* %func39(%Array* %ret33, %Object* %as)
br label %"Invoke_Array#reserve_end"
"Invoke_Array#reserve_end": ; preds = %"Invoke_Array#reserve"
%sk_int = call %Int* @box_int(i64 0)
store %Int* %sk_int, %Int** %i, align 8
br label %WhileBegin
WhileBegin: ; preds = %"Invoke_Int#+_end", %"Invoke_Array#reserve_end"
%i41 = load %Int*, %Int** %i, align 8
br label %"Invoke_Int#<"
"Invoke_Int#<": ; preds = %WhileBegin
%addr_vtable42 = getelementptr inbounds %Int, %Int* %i41, i32 0, i32 0
%vtable43 = load i8*, i8** %addr_vtable42, align 8
%vtable_ptr44 = bitcast i8* %vtable43 to [35 x i8*]*
%vtable45 = load [35 x i8*], [35 x i8*]* %vtable_ptr44, align 8
%func_raw46 = extractvalue [35 x i8*] %vtable45, 0
%func47 = bitcast i8* %func_raw46 to %Bool* (%Int*, %Int*)*
%result48 = call %Bool* %func47(%Int* %i41, %Int* %len)
br label %"Invoke_Int#<_end"
"Invoke_Int#<_end": ; preds = %"Invoke_Int#<"
%llvm_bool = call i1 @unbox_bool(%Bool* %result48)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %WhileBody, label %WhileEnd
WhileBody: ; preds = %"Invoke_Int#<_end"
%ret49 = load %Array*, %Array** %ret, align 8
%i50 = load %Int*, %Int** %i, align 8
br label %Invoke_lambda
WhileEnd: ; preds = %"Invoke_Int#<_end"
%"::Void" = load %Void*, %Void** @"::Void", align 8
%ret70 = load %Array*, %Array** %ret, align 8
br label %Ret
Invoke_lambda: ; preds = %WhileBody
%"addr_@func" = getelementptr inbounds %Fn1, %Fn1* %f, i32 0, i32 2
%"@func" = load %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"** %"addr_@func", align 8
%llvm_ptr = call i8* @unbox_i8ptr(%"Shiika::Internal::Ptr"* %"@func")
%0 = bitcast i8* %llvm_ptr to %Object* (%Fn1*, %Int*)*
%result51 = call %Object* %0(%Fn1* %f, %Int* %i50)
br label %Invoke_lambda_end
Invoke_lambda_end: ; preds = %Invoke_lambda
br label %"Invoke_Array#push52"
"Invoke_Array#push52": ; preds = %Invoke_lambda_end
%addr_vtable53 = getelementptr inbounds %Array, %Array* %ret49, i32 0, i32 0
%vtable54 = load i8*, i8** %addr_vtable53, align 8
%vtable_ptr55 = bitcast i8* %vtable54 to [54 x i8*]*
%vtable56 = load [54 x i8*], [54 x i8*]* %vtable_ptr55, align 8
%func_raw57 = extractvalue [54 x i8*] %vtable56, 45
%func58 = bitcast i8* %func_raw57 to %Void* (%Array*, %Object*)*
%result59 = call %Void* %func58(%Array* %ret49, %Object* %result51)
br label %"Invoke_Array#push_end60"
"Invoke_Array#push_end60": ; preds = %"Invoke_Array#push52"
%i61 = load %Int*, %Int** %i, align 8
%sk_int62 = call %Int* @box_int(i64 1)
br label %"Invoke_Int#+"
"Invoke_Int#+": ; preds = %"Invoke_Array#push_end60"
%addr_vtable63 = getelementptr inbounds %Int, %Int* %i61, i32 0, i32 0
%vtable64 = load i8*, i8** %addr_vtable63, align 8
%vtable_ptr65 = bitcast i8* %vtable64 to [35 x i8*]*
%vtable66 = load [35 x i8*], [35 x i8*]* %vtable_ptr65, align 8
%func_raw67 = extractvalue [35 x i8*] %vtable66, 18
%func68 = bitcast i8* %func_raw67 to %Int* (%Int*, %Int*)*
%result69 = call %Int* %func68(%Int* %i61, %Int* %sk_int62)
br label %"Invoke_Int#+_end"
"Invoke_Int#+_end": ; preds = %"Invoke_Int#+"
store %Int* %result69, %Int** %i, align 8
br label %WhileBegin
Ret: ; preds = %WhileEnd
br label %End
}
define %Array* @Meta_Array_repeat(%Array* %self, %Object* %item, %Int* %len) {
alloca:
%ret = alloca %Array*, align 8
%i = alloca %Int*, align 8
%"ary@5_" = alloca %Array*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%"::Array" = load %Array*, %Array** @"::Array", align 8
%"::Array1" = load %Array*, %Array** @"::Array", align 8
%"::Class" = load %Class.0*, %Class.0** @"::Class", align 8
br label %"Invoke_Class#_specialize1"
End: ; preds = %Ret
%methodResult = phi %Array* [ %ret68, %Ret ]
ret %Array* %methodResult
"Invoke_Class#_specialize1": ; preds = %alloca_End
%addr_vtable = getelementptr inbounds %Array, %Array* %"::Array1", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [25 x i8*]*
%vtable2 = load [25 x i8*], [25 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [25 x i8*] %vtable2, 18
%func = bitcast i8* %func_raw to %Array* (%Array*, %Class.0*)*
%result = call %Array* %func(%Array* %"::Array1", %Class.0* %"::Class")
br label %"Invoke_Class#_specialize1_end"
"Invoke_Class#_specialize1_end": ; preds = %"Invoke_Class#_specialize1"
br label %"Invoke_Array#new"
"Invoke_Array#new": ; preds = %"Invoke_Class#_specialize1_end"
%addr_vtable3 = getelementptr inbounds %Array, %Array* %result, i32 0, i32 0
%vtable4 = load i8*, i8** %addr_vtable3, align 8
%vtable_ptr5 = bitcast i8* %vtable4 to [25 x i8*]*
%vtable6 = load [25 x i8*], [25 x i8*]* %vtable_ptr5, align 8
%func_raw7 = extractvalue [25 x i8*] %vtable6, 23
%func8 = bitcast i8* %func_raw7 to %Array* (%Array*)*
%result9 = call %Array* %func8(%Array* %result)
br label %"Invoke_Array#new_end"
"Invoke_Array#new_end": ; preds = %"Invoke_Array#new"
store %Array* %result9, %Array** %"ary@5_", align 8
%"ary@5_10" = load %Array*, %Array** %"ary@5_", align 8
%"::Object" = load %Object*, %Object** @"::Object", align 8
br label %"Invoke_Array#push"
"Invoke_Array#push": ; preds = %"Invoke_Array#new_end"
%addr_vtable11 = getelementptr inbounds %Array, %Array* %"ary@5_10", i32 0, i32 0
%vtable12 = load i8*, i8** %addr_vtable11, align 8
%vtable_ptr13 = bitcast i8* %vtable12 to [54 x i8*]*
%vtable14 = load [54 x i8*], [54 x i8*]* %vtable_ptr13, align 8
%func_raw15 = extractvalue [54 x i8*] %vtable14, 45
%func16 = bitcast i8* %func_raw15 to %Void* (%Array*, %Object*)*
%result17 = call %Void* %func16(%Array* %"ary@5_10", %Object* %"::Object")
br label %"Invoke_Array#push_end"
"Invoke_Array#push_end": ; preds = %"Invoke_Array#push"
%"ary@5_18" = load %Array*, %Array** %"ary@5_", align 8
br label %"Invoke_Class#<>"
"Invoke_Class#<>": ; preds = %"Invoke_Array#push_end"
%addr_vtable19 = getelementptr inbounds %Array, %Array* %"::Array", i32 0, i32 0
%vtable20 = load i8*, i8** %addr_vtable19, align 8
%vtable_ptr21 = bitcast i8* %vtable20 to [25 x i8*]*
%vtable22 = load [25 x i8*], [25 x i8*]* %vtable_ptr21, align 8
%func_raw23 = extractvalue [25 x i8*] %vtable22, 16
%func24 = bitcast i8* %func_raw23 to %Array* (%Array*, %Array*)*
%result25 = call %Array* %func24(%Array* %"::Array", %Array* %"ary@5_18")
br label %"Invoke_Class#<>_end"
"Invoke_Class#<>_end": ; preds = %"Invoke_Class#<>"
br label %"Invoke_Meta:Array#new"
"Invoke_Meta:Array#new": ; preds = %"Invoke_Class#<>_end"
%addr_vtable26 = getelementptr inbounds %Array, %Array* %result25, i32 0, i32 0
%vtable27 = load i8*, i8** %addr_vtable26, align 8
%vtable_ptr28 = bitcast i8* %vtable27 to [25 x i8*]*
%vtable29 = load [25 x i8*], [25 x i8*]* %vtable_ptr28, align 8
%func_raw30 = extractvalue [25 x i8*] %vtable29, 23
%func31 = bitcast i8* %func_raw30 to %Array* (%Array*)*
%result32 = call %Array* %func31(%Array* %result25)
br label %"Invoke_Meta:Array#new_end"
"Invoke_Meta:Array#new_end": ; preds = %"Invoke_Meta:Array#new"
store %Array* %result32, %Array** %ret, align 8
%ret33 = load %Array*, %Array** %ret, align 8
%as = bitcast %Int* %len to %Object*
br label %"Invoke_Array#reserve"
"Invoke_Array#reserve": ; preds = %"Invoke_Meta:Array#new_end"
%addr_vtable34 = getelementptr inbounds %Array, %Array* %ret33, i32 0, i32 0
%vtable35 = load i8*, i8** %addr_vtable34, align 8
%vtable_ptr36 = bitcast i8* %vtable35 to [54 x i8*]*
%vtable37 = load [54 x i8*], [54 x i8*]* %vtable_ptr36, align 8
%func_raw38 = extractvalue [54 x i8*] %vtable37, 47
%func39 = bitcast i8* %func_raw38 to %Void* (%Array*, %Object*)*
%result40 = call %Void* %func39(%Array* %ret33, %Object* %as)
br label %"Invoke_Array#reserve_end"
"Invoke_Array#reserve_end": ; preds = %"Invoke_Array#reserve"
%sk_int = call %Int* @box_int(i64 0)
store %Int* %sk_int, %Int** %i, align 8
br label %WhileBegin
WhileBegin: ; preds = %"Invoke_Int#+_end", %"Invoke_Array#reserve_end"
%i41 = load %Int*, %Int** %i, align 8
br label %"Invoke_Int#<"
"Invoke_Int#<": ; preds = %WhileBegin
%addr_vtable42 = getelementptr inbounds %Int, %Int* %i41, i32 0, i32 0
%vtable43 = load i8*, i8** %addr_vtable42, align 8
%vtable_ptr44 = bitcast i8* %vtable43 to [35 x i8*]*
%vtable45 = load [35 x i8*], [35 x i8*]* %vtable_ptr44, align 8
%func_raw46 = extractvalue [35 x i8*] %vtable45, 0
%func47 = bitcast i8* %func_raw46 to %Bool* (%Int*, %Int*)*
%result48 = call %Bool* %func47(%Int* %i41, %Int* %len)
br label %"Invoke_Int#<_end"
"Invoke_Int#<_end": ; preds = %"Invoke_Int#<"
%llvm_bool = call i1 @unbox_bool(%Bool* %result48)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %WhileBody, label %WhileEnd
WhileBody: ; preds = %"Invoke_Int#<_end"
%ret49 = load %Array*, %Array** %ret, align 8
br label %"Invoke_Array#push50"
WhileEnd: ; preds = %"Invoke_Int#<_end"
%"::Void" = load %Void*, %Void** @"::Void", align 8
%ret68 = load %Array*, %Array** %ret, align 8
br label %Ret
"Invoke_Array#push50": ; preds = %WhileBody
%addr_vtable51 = getelementptr inbounds %Array, %Array* %ret49, i32 0, i32 0
%vtable52 = load i8*, i8** %addr_vtable51, align 8
%vtable_ptr53 = bitcast i8* %vtable52 to [54 x i8*]*
%vtable54 = load [54 x i8*], [54 x i8*]* %vtable_ptr53, align 8
%func_raw55 = extractvalue [54 x i8*] %vtable54, 45
%func56 = bitcast i8* %func_raw55 to %Void* (%Array*, %Object*)*
%result57 = call %Void* %func56(%Array* %ret49, %Object* %item)
br label %"Invoke_Array#push_end58"
"Invoke_Array#push_end58": ; preds = %"Invoke_Array#push50"
%i59 = load %Int*, %Int** %i, align 8
%sk_int60 = call %Int* @box_int(i64 1)
br label %"Invoke_Int#+"
"Invoke_Int#+": ; preds = %"Invoke_Array#push_end58"
%addr_vtable61 = getelementptr inbounds %Int, %Int* %i59, i32 0, i32 0
%vtable62 = load i8*, i8** %addr_vtable61, align 8
%vtable_ptr63 = bitcast i8* %vtable62 to [35 x i8*]*
%vtable64 = load [35 x i8*], [35 x i8*]* %vtable_ptr63, align 8
%func_raw65 = extractvalue [35 x i8*] %vtable64, 18
%func66 = bitcast i8* %func_raw65 to %Int* (%Int*, %Int*)*
%result67 = call %Int* %func66(%Int* %i59, %Int* %sk_int60)
br label %"Invoke_Int#+_end"
"Invoke_Int#+_end": ; preds = %"Invoke_Int#+"
store %Int* %result67, %Int** %i, align 8
br label %WhileBegin
Ret: ; preds = %WhileEnd
br label %End
}
define %Fn9* @Meta_Fn9_new(%Fn9* %self, %"Shiika::Internal::Ptr"* %"@func", %Object* %"@the_self", %Array* %"@captures") {
%mem = call i8* @shiika_malloc(i64 mul nuw (i64 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), i64 6))
%addr = bitcast i8* %mem to %Fn9*
%addr_vtable = getelementptr inbounds %Fn9, %Fn9* %addr, i32 0, i32 0
store i8* bitcast ([24 x i8*]* @shiika_vtable_Fn9 to i8*), i8** %addr_vtable, align 8
%class = bitcast %Fn9* %self to %Class.0*
%addr_my_class = getelementptr inbounds %Fn9, %Fn9* %addr, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%obj_as_super = bitcast %Fn9* %addr to %Fn*
%1 = call %Void* @Fn_initialize(%Fn* %obj_as_super, %"Shiika::Internal::Ptr"* %"@func", %Object* %"@the_self", %Array* %"@captures")
ret %Fn9* %addr
}
define %Fn5* @Meta_Fn5_new(%Fn5* %self, %"Shiika::Internal::Ptr"* %"@func", %Object* %"@the_self", %Array* %"@captures") {
%mem = call i8* @shiika_malloc(i64 mul nuw (i64 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), i64 6))
%addr = bitcast i8* %mem to %Fn5*
%addr_vtable = getelementptr inbounds %Fn5, %Fn5* %addr, i32 0, i32 0
store i8* bitcast ([24 x i8*]* @shiika_vtable_Fn5 to i8*), i8** %addr_vtable, align 8
%class = bitcast %Fn5* %self to %Class.0*
%addr_my_class = getelementptr inbounds %Fn5, %Fn5* %addr, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%obj_as_super = bitcast %Fn5* %addr to %Fn*
%1 = call %Void* @Fn_initialize(%Fn* %obj_as_super, %"Shiika::Internal::Ptr"* %"@func", %Object* %"@the_self", %Array* %"@captures")
ret %Fn5* %addr
}
define %"Maybe::None"* @Meta_Maybe_None_new(%"Maybe::None"* %self) {
%mem = call i8* @shiika_malloc(i64 mul nuw (i64 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), i64 2))
%addr = bitcast i8* %mem to %"Maybe::None"*
%addr_vtable = getelementptr inbounds %"Maybe::None", %"Maybe::None"* %addr, i32 0, i32 0
store i8* bitcast ([18 x i8*]* @"shiika_vtable_Maybe::None" to i8*), i8** %addr_vtable, align 8
%class = bitcast %"Maybe::None"* %self to %Class.0*
%addr_my_class = getelementptr inbounds %"Maybe::None", %"Maybe::None"* %addr, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%1 = call %Void* @Maybe_None_initialize(%"Maybe::None"* %addr)
ret %"Maybe::None"* %addr
}
define %Metaclass* @Metaclass_new(%Metaclass* %self, %String* %"@name", %Object* %vtable, %Metaclass* %metacls_obj) {
%mem = call i8* @shiika_malloc(i64 mul nuw (i64 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), i64 5))
%addr = bitcast i8* %mem to %Metaclass*
%addr_vtable = getelementptr inbounds %Metaclass, %Metaclass* %addr, i32 0, i32 0
store i8* bitcast ([23 x i8*]* @shiika_vtable_Metaclass to i8*), i8** %addr_vtable, align 8
%class = bitcast %Metaclass* %self to %Class.0*
%addr_my_class = getelementptr inbounds %Metaclass, %Metaclass* %addr, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%obj_as_super = bitcast %Metaclass* %addr to %Class.0*
%1 = call %Void* @Class_initialize(%Class.0* %obj_as_super, %String* %"@name", %Object* %vtable, %Metaclass* %metacls_obj)
ret %Metaclass* %addr
}
define %String* @Metaclass_name(%Metaclass* %self) {
br label %IfBegin
End: ; preds = %Ret
%methodResult = phi %String* [ %ifResult, %Ret ]
ret %String* %methodResult
IfBegin: ; preds = %0
%"addr_@name" = getelementptr inbounds %Metaclass, %Metaclass* %self, i32 0, i32 2
%"@name" = load %String*, %String** %"addr_@name", align 8
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @str_55, i32 0, i32 0), i64 9)
br label %"Invoke_String#=="
IfThen: ; preds = %"Invoke_String#==_end"
%sk_str2 = call %String* @gen_literal_string(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @str_56, i32 0, i32 0), i64 9)
br label %IfEnd
IfElse: ; preds = %"Invoke_String#==_end"
%sk_str3 = call %String* @gen_literal_string(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str_57, i32 0, i32 0), i64 5)
%"addr_@name4" = getelementptr inbounds %Metaclass, %Metaclass* %self, i32 0, i32 2
%"@name5" = load %String*, %String** %"addr_@name4", align 8
br label %"Invoke_String#+"
IfEnd: ; preds = %"Invoke_String#+_end", %IfThen
%ifResult = phi %String* [ %sk_str2, %IfThen ], [ %result12, %"Invoke_String#+_end" ]
br label %Ret
"Invoke_String#==": ; preds = %IfBegin
%addr_vtable = getelementptr inbounds %String, %String* %"@name", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable1 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable1, 2
%func = bitcast i8* %func_raw to %Bool* (%String*, %String*)*
%result = call %Bool* %func(%String* %"@name", %String* %sk_str)
br label %"Invoke_String#==_end"
"Invoke_String#==_end": ; preds = %"Invoke_String#=="
%llvm_bool = call i1 @unbox_bool(%Bool* %result)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %IfThen, label %IfElse
"Invoke_String#+": ; preds = %IfElse
%addr_vtable6 = getelementptr inbounds %String, %String* %sk_str3, i32 0, i32 0
%vtable7 = load i8*, i8** %addr_vtable6, align 8
%vtable_ptr8 = bitcast i8* %vtable7 to [35 x i8*]*
%vtable9 = load [35 x i8*], [35 x i8*]* %vtable_ptr8, align 8
%func_raw10 = extractvalue [35 x i8*] %vtable9, 17
%func11 = bitcast i8* %func_raw10 to %String* (%String*, %String*)*
%result12 = call %String* %func11(%String* %sk_str3, %String* %"@name5")
br label %"Invoke_String#+_end"
"Invoke_String#+_end": ; preds = %"Invoke_String#+"
br label %IfEnd
Ret: ; preds = %IfEnd
br label %End
}
define %String* @Metaclass_inspect(%Metaclass* %self) {
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @str_59, i32 0, i32 0), i64 12)
br label %"Invoke_Metaclass#name"
End: ; preds = %Ret
%methodResult = phi %String* [ %result17, %Ret ]
ret %String* %methodResult
"Invoke_Metaclass#name": ; preds = %0
%addr_vtable = getelementptr inbounds %Metaclass, %Metaclass* %self, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [23 x i8*]*
%vtable1 = load [23 x i8*], [23 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [23 x i8*] %vtable1, 20
%func = bitcast i8* %func_raw to %String* (%Metaclass*)*
%result = call %String* %func(%Metaclass* %self)
br label %"Invoke_Metaclass#name_end"
"Invoke_Metaclass#name_end": ; preds = %"Invoke_Metaclass#name"
br label %"Invoke_String#+"
"Invoke_String#+": ; preds = %"Invoke_Metaclass#name_end"
%addr_vtable2 = getelementptr inbounds %String, %String* %sk_str, i32 0, i32 0
%vtable3 = load i8*, i8** %addr_vtable2, align 8
%vtable_ptr4 = bitcast i8* %vtable3 to [35 x i8*]*
%vtable5 = load [35 x i8*], [35 x i8*]* %vtable_ptr4, align 8
%func_raw6 = extractvalue [35 x i8*] %vtable5, 17
%func7 = bitcast i8* %func_raw6 to %String* (%String*, %String*)*
%result8 = call %String* %func7(%String* %sk_str, %String* %result)
br label %"Invoke_String#+_end"
"Invoke_String#+_end": ; preds = %"Invoke_String#+"
%sk_str9 = call %String* @gen_literal_string(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str_58, i32 0, i32 0), i64 1)
br label %"Invoke_String#+10"
"Invoke_String#+10": ; preds = %"Invoke_String#+_end"
%addr_vtable11 = getelementptr inbounds %String, %String* %result8, i32 0, i32 0
%vtable12 = load i8*, i8** %addr_vtable11, align 8
%vtable_ptr13 = bitcast i8* %vtable12 to [35 x i8*]*
%vtable14 = load [35 x i8*], [35 x i8*]* %vtable_ptr13, align 8
%func_raw15 = extractvalue [35 x i8*] %vtable14, 17
%func16 = bitcast i8* %func_raw15 to %String* (%String*, %String*)*
%result17 = call %String* %func16(%String* %result8, %String* %sk_str9)
br label %"Invoke_String#+_end18"
"Invoke_String#+_end18": ; preds = %"Invoke_String#+10"
br label %Ret
Ret: ; preds = %"Invoke_String#+_end18"
br label %End
}
define %"Dict::Table"* @Meta_Dict_Table_new(%"Dict::Table"* %self) {
%mem = call i8* @shiika_malloc(i64 mul nuw (i64 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), i64 3))
%addr = bitcast i8* %mem to %"Dict::Table"*
%addr_vtable = getelementptr inbounds %"Dict::Table", %"Dict::Table"* %addr, i32 0, i32 0
store i8* bitcast ([23 x i8*]* @"shiika_vtable_Dict::Table" to i8*), i8** %addr_vtable, align 8
%class = bitcast %"Dict::Table"* %self to %Class.0*
%addr_my_class = getelementptr inbounds %"Dict::Table", %"Dict::Table"* %addr, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%1 = call %Void* @Dict_Table_initialize(%"Dict::Table"* %addr)
ret %"Dict::Table"* %addr
}
define %Void* @Class_initialize(%Class.0* %self, %String* %"@name", %Object* %vtable, %Metaclass* %metacls_obj) {
%"addr_@name" = getelementptr inbounds %Class.0, %Class.0* %self, i32 0, i32 2
store %String* %"@name", %String** %"addr_@name", align 8
br label %"Invoke_Class#_initialize_rustlib"
End: ; preds = %Ret
%"::Void3" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void3"
"Invoke_Class#_initialize_rustlib": ; preds = %0
%addr_vtable = getelementptr inbounds %Class.0, %Class.0* %self, i32 0, i32 0
%vtable1 = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable1 to [22 x i8*]*
%vtable2 = load [22 x i8*], [22 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [22 x i8*] %vtable2, 17
%func = bitcast i8* %func_raw to %Object* (%Class.0*, %Object*, %Metaclass*)*
%result = call %Object* %func(%Class.0* %self, %Object* %vtable, %Metaclass* %metacls_obj)
br label %"Invoke_Class#_initialize_rustlib_end"
"Invoke_Class#_initialize_rustlib_end": ; preds = %"Invoke_Class#_initialize_rustlib"
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %Ret
Ret: ; preds = %"Invoke_Class#_initialize_rustlib_end"
br label %End
}
define %String* @_set_Class_name(%Class.0* %self, %String* %name) {
%"addr_@name" = getelementptr inbounds %Class.0, %Class.0* %self, i32 0, i32 2
store %String* %name, %String** %"addr_@name", align 8
ret %String* %name
}
define %String* @Class_name(%Class.0* %self) {
%"addr_@name" = getelementptr inbounds %Class.0, %Class.0* %self, i32 0, i32 2
%"@name" = load %String*, %String** %"addr_@name", align 8
br label %Ret
End: ; preds = %Ret
%methodResult = phi %String* [ %"@name", %Ret ]
ret %String* %methodResult
Ret: ; preds = %0
br label %End
}
define %String* @Class_inspect(%Class.0* %self) {
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @str_53, i32 0, i32 0), i64 8)
%"addr_@name" = getelementptr inbounds %Class.0, %Class.0* %self, i32 0, i32 2
%"@name" = load %String*, %String** %"addr_@name", align 8
br label %"Invoke_String#to_s"
End: ; preds = %Ret
%methodResult = phi %String* [ %result17, %Ret ]
ret %String* %methodResult
"Invoke_String#to_s": ; preds = %0
%addr_vtable = getelementptr inbounds %String, %String* %"@name", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable1 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable1, 15
%func = bitcast i8* %func_raw to %String* (%String*)*
%result = call %String* %func(%String* %"@name")
br label %"Invoke_String#to_s_end"
"Invoke_String#to_s_end": ; preds = %"Invoke_String#to_s"
br label %"Invoke_String#+"
"Invoke_String#+": ; preds = %"Invoke_String#to_s_end"
%addr_vtable2 = getelementptr inbounds %String, %String* %sk_str, i32 0, i32 0
%vtable3 = load i8*, i8** %addr_vtable2, align 8
%vtable_ptr4 = bitcast i8* %vtable3 to [35 x i8*]*
%vtable5 = load [35 x i8*], [35 x i8*]* %vtable_ptr4, align 8
%func_raw6 = extractvalue [35 x i8*] %vtable5, 17
%func7 = bitcast i8* %func_raw6 to %String* (%String*, %String*)*
%result8 = call %String* %func7(%String* %sk_str, %String* %result)
br label %"Invoke_String#+_end"
"Invoke_String#+_end": ; preds = %"Invoke_String#+"
%sk_str9 = call %String* @gen_literal_string(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str_52, i32 0, i32 0), i64 1)
br label %"Invoke_String#+10"
"Invoke_String#+10": ; preds = %"Invoke_String#+_end"
%addr_vtable11 = getelementptr inbounds %String, %String* %result8, i32 0, i32 0
%vtable12 = load i8*, i8** %addr_vtable11, align 8
%vtable_ptr13 = bitcast i8* %vtable12 to [35 x i8*]*
%vtable14 = load [35 x i8*], [35 x i8*]* %vtable_ptr13, align 8
%func_raw15 = extractvalue [35 x i8*] %vtable14, 17
%func16 = bitcast i8* %func_raw15 to %String* (%String*, %String*)*
%result17 = call %String* %func16(%String* %result8, %String* %sk_str9)
br label %"Invoke_String#+_end18"
"Invoke_String#+_end18": ; preds = %"Invoke_String#+10"
br label %Ret
Ret: ; preds = %"Invoke_String#+_end18"
br label %End
}
define %String* @Class_to__s(%Class.0* %self) {
br label %"Invoke_Class#name"
End: ; preds = %Ret
%methodResult = phi %String* [ %result, %Ret ]
ret %String* %methodResult
"Invoke_Class#name": ; preds = %0
%addr_vtable = getelementptr inbounds %Class.0, %Class.0* %self, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [22 x i8*]*
%vtable1 = load [22 x i8*], [22 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [22 x i8*] %vtable1, 20
%func = bitcast i8* %func_raw to %String* (%Class.0*)*
%result = call %String* %func(%Class.0* %self)
br label %"Invoke_Class#name_end"
"Invoke_Class#name_end": ; preds = %"Invoke_Class#name"
br label %Ret
Ret: ; preds = %"Invoke_Class#name_end"
br label %End
}
declare %Object* @Class___initialize__rustlib(%Class.0*, %Object*, %Object*)
declare %Class.0* @Class_lt_gt_(%Class.0*, %Array*)
declare %Class.0* @Class___specialize1(%Class.0*, %Array*)
declare %Class.0* @Class___type__argument(%Class.0*, %Int*)
define %Object* @Meta_Object_new(%Object* %self) {
%mem = call i8* @shiika_malloc(i64 mul nuw (i64 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), i64 2))
%addr = bitcast i8* %mem to %Object*
%addr_vtable = getelementptr inbounds %Object, %Object* %addr, i32 0, i32 0
store i8* bitcast ([16 x i8*]* @shiika_vtable_Object to i8*), i8** %addr_vtable, align 8
%class = bitcast %Object* %self to %Class.0*
%addr_my_class = getelementptr inbounds %Object, %Object* %addr, i32 0, i32 1
store %Class.0* %class, %Class.0** %addr_my_class, align 8
%1 = call %Void* @Object_initialize(%Object* %addr)
ret %Object* %addr
}
define %Void* @Array_initialize(%Array* %self) {
%"::Array::INITIAL_CAPA" = load %Int*, %Int** @"::Array::INITIAL_CAPA", align 8
%"addr_@capa" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 2
store %Int* %"::Array::INITIAL_CAPA", %Int** %"addr_@capa", align 8
%sk_int = call %Int* @box_int(i64 0)
%"addr_@n_items" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 3
store %Int* %sk_int, %Int** %"addr_@n_items", align 8
%"::Shiika::Internal::Memory" = load %"Shiika::Internal::Memory"*, %"Shiika::Internal::Memory"** @"::Shiika::Internal::Memory", align 8
%"::Array::BYTES_OF_PTR" = load %Int*, %Int** @"::Array::BYTES_OF_PTR", align 8
%"::Array::INITIAL_CAPA1" = load %Int*, %Int** @"::Array::INITIAL_CAPA", align 8
br label %"Invoke_Int#*"
End: ; preds = %Ret
%"::Void10" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void10"
"Invoke_Int#*": ; preds = %0
%addr_vtable = getelementptr inbounds %Int, %Int* %"::Array::BYTES_OF_PTR", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable2 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable2, 17
%func = bitcast i8* %func_raw to %Int* (%Int*, %Int*)*
%result = call %Int* %func(%Int* %"::Array::BYTES_OF_PTR", %Int* %"::Array::INITIAL_CAPA1")
br label %"Invoke_Int#*_end"
"Invoke_Int#*_end": ; preds = %"Invoke_Int#*"
br label %"Invoke_Meta:Shiika::Internal::Memory#gc_malloc"
"Invoke_Meta:Shiika::Internal::Memory#gc_malloc": ; preds = %"Invoke_Int#*_end"
%addr_vtable3 = getelementptr inbounds %"Shiika::Internal::Memory", %"Shiika::Internal::Memory"* %"::Shiika::Internal::Memory", i32 0, i32 0
%vtable4 = load i8*, i8** %addr_vtable3, align 8
%vtable_ptr5 = bitcast i8* %vtable4 to [25 x i8*]*
%vtable6 = load [25 x i8*], [25 x i8*]* %vtable_ptr5, align 8
%func_raw7 = extractvalue [25 x i8*] %vtable6, 22
%func8 = bitcast i8* %func_raw7 to %"Shiika::Internal::Ptr"* (%"Shiika::Internal::Memory"*, %Int*)*
%result9 = call %"Shiika::Internal::Ptr"* %func8(%"Shiika::Internal::Memory"* %"::Shiika::Internal::Memory", %Int* %result)
br label %"Invoke_Meta:Shiika::Internal::Memory#gc_malloc_end"
"Invoke_Meta:Shiika::Internal::Memory#gc_malloc_end": ; preds = %"Invoke_Meta:Shiika::Internal::Memory#gc_malloc"
%"addr_@items" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 4
store %"Shiika::Internal::Ptr"* %result9, %"Shiika::Internal::Ptr"** %"addr_@items", align 8
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %Ret
Ret: ; preds = %"Invoke_Meta:Shiika::Internal::Memory#gc_malloc_end"
br label %End
}
define %Int* @Array_n__items(%Array* %self) {
%"addr_@n_items" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 3
%"@n_items" = load %Int*, %Int** %"addr_@n_items", align 8
ret %Int* %"@n_items"
}
define %Int* @_set_Array_n__items(%Array* %self, %Int* %n_items) {
%"addr_@n_items" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 3
store %Int* %n_items, %Int** %"addr_@n_items", align 8
ret %Int* %n_items
}
define %Int* @Array_capa(%Array* %self) {
%"addr_@capa" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 2
%"@capa" = load %Int*, %Int** %"addr_@capa", align 8
ret %Int* %"@capa"
}
define %Int* @_set_Array_capa(%Array* %self, %Int* %capa) {
%"addr_@capa" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 2
store %Int* %capa, %Int** %"addr_@capa", align 8
ret %Int* %capa
}
define %"Shiika::Internal::Ptr"* @Array_items(%Array* %self) {
%"addr_@items" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 4
%"@items" = load %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"** %"addr_@items", align 8
ret %"Shiika::Internal::Ptr"* %"@items"
}
define %"Shiika::Internal::Ptr"* @_set_Array_items(%Array* %self, %"Shiika::Internal::Ptr"* %items) {
%"addr_@items" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 4
store %"Shiika::Internal::Ptr"* %items, %"Shiika::Internal::Ptr"** %"addr_@items", align 8
ret %"Shiika::Internal::Ptr"* %items
}
define %Bool* @Array_eq_(%Array* %self, %Array* %other) {
alloca:
%ret = alloca %Bool*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
br label %IfBegin
End: ; preds = %Ret
%methodResult = phi %Bool* [ %ifResult, %Ret ]
ret %Bool* %methodResult
IfBegin: ; preds = %alloca_End
br label %"Invoke_Array#length"
IfThen: ; preds = %"Invoke_Int#==_end"
%sk_bool19 = call %Bool* @box_bool(i1 false)
br label %IfEnd
IfElse: ; preds = %"Invoke_Int#==_end"
%sk_bool20 = call %Bool* @box_bool(i1 true)
store %Bool* %sk_bool20, %Bool** %ret, align 8
%sk_int = call %Int* @box_int(i64 0)
%"addr_@n_items" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 3
%"@n_items" = load %Int*, %Int** %"addr_@n_items", align 8
%sk_int21 = call %Int* @box_int(i64 1)
br label %"Invoke_Int#-"
IfEnd: ; preds = %"Invoke_Int#upto_end", %IfThen
%ifResult = phi %Bool* [ %sk_bool19, %IfThen ], [ %ret40, %"Invoke_Int#upto_end" ]
br label %Ret
"Invoke_Array#length": ; preds = %IfBegin
%addr_vtable = getelementptr inbounds %Array, %Array* %self, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [54 x i8*]*
%vtable1 = load [54 x i8*], [54 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [54 x i8*] %vtable1, 39
%func = bitcast i8* %func_raw to %Int* (%Array*)*
%result = call %Int* %func(%Array* %self)
br label %"Invoke_Array#length_end"
"Invoke_Array#length_end": ; preds = %"Invoke_Array#length"
br label %"Invoke_Array#length2"
"Invoke_Array#length2": ; preds = %"Invoke_Array#length_end"
%addr_vtable3 = getelementptr inbounds %Array, %Array* %other, i32 0, i32 0
%vtable4 = load i8*, i8** %addr_vtable3, align 8
%vtable_ptr5 = bitcast i8* %vtable4 to [54 x i8*]*
%vtable6 = load [54 x i8*], [54 x i8*]* %vtable_ptr5, align 8
%func_raw7 = extractvalue [54 x i8*] %vtable6, 39
%func8 = bitcast i8* %func_raw7 to %Int* (%Array*)*
%result9 = call %Int* %func8(%Array* %other)
br label %"Invoke_Array#length_end10"
"Invoke_Array#length_end10": ; preds = %"Invoke_Array#length2"
br label %"Invoke_Int#=="
"Invoke_Int#==": ; preds = %"Invoke_Array#length_end10"
%addr_vtable11 = getelementptr inbounds %Int, %Int* %result, i32 0, i32 0
%vtable12 = load i8*, i8** %addr_vtable11, align 8
%vtable_ptr13 = bitcast i8* %vtable12 to [35 x i8*]*
%vtable14 = load [35 x i8*], [35 x i8*]* %vtable_ptr13, align 8
%func_raw15 = extractvalue [35 x i8*] %vtable14, 2
%func16 = bitcast i8* %func_raw15 to %Bool* (%Int*, %Int*)*
%result17 = call %Bool* %func16(%Int* %result, %Int* %result9)
br label %"Invoke_Int#==_end"
"Invoke_Int#==_end": ; preds = %"Invoke_Int#=="
%llvm_bool = call i1 @unbox_bool(%Bool* %result17)
%b2 = xor i1 %llvm_bool, true
%sk_bool = call %Bool* @box_bool(i1 %b2)
%llvm_bool18 = call i1 @unbox_bool(%Bool* %sk_bool)
%istrue = icmp eq i1 %llvm_bool18, true
br i1 %istrue, label %IfThen, label %IfElse
"Invoke_Int#-": ; preds = %IfElse
%addr_vtable22 = getelementptr inbounds %Int, %Int* %"@n_items", i32 0, i32 0
%vtable23 = load i8*, i8** %addr_vtable22, align 8
%vtable_ptr24 = bitcast i8* %vtable23 to [35 x i8*]*
%vtable25 = load [35 x i8*], [35 x i8*]* %vtable_ptr24, align 8
%func_raw26 = extractvalue [35 x i8*] %vtable25, 19
%func27 = bitcast i8* %func_raw26 to %Int* (%Int*, %Int*)*
%result28 = call %Int* %func27(%Int* %"@n_items", %Int* %sk_int21)
br label %"Invoke_Int#-_end"
"Invoke_Int#-_end": ; preds = %"Invoke_Int#-"
%"::Fn1" = load %Fn1*, %Fn1** @"::Fn1", align 8
%sk_ptr = call %"Shiika::Internal::Ptr"* @box_i8ptr(i8* bitcast (%Void* (%Fn1*, %Object*)* @"lambda_1_in_Array#==" to i8*))
%the_main = bitcast %Array* %self to %Object*
%"::Array" = load %Array*, %Array** @"::Array", align 8
%result29 = call %Array* @Meta_Array_new(%Array* %"::Array")
%capture_item = bitcast %Array* %other to %Object*
%_ = call %Void* @Array_push(%Array* %result29, %Object* %capture_item)
%capture_item30 = bitcast %Bool** %ret to %Object*
%_31 = call %Void* @Array_push(%Array* %result29, %Object* %capture_item30)
%result32 = call %Fn1* @Meta_Fn1_new(%Fn1* %"::Fn1", %"Shiika::Internal::Ptr"* %sk_ptr, %Object* %the_main, %Array* %result29)
br label %"Invoke_Int#upto"
"Invoke_Int#upto": ; preds = %"Invoke_Int#-_end"
%addr_vtable33 = getelementptr inbounds %Int, %Int* %sk_int, i32 0, i32 0
%vtable34 = load i8*, i8** %addr_vtable33, align 8
%vtable_ptr35 = bitcast i8* %vtable34 to [35 x i8*]*
%vtable36 = load [35 x i8*], [35 x i8*]* %vtable_ptr35, align 8
%func_raw37 = extractvalue [35 x i8*] %vtable36, 33
%func38 = bitcast i8* %func_raw37 to %Void* (%Int*, %Int*, %Fn1*)*
%result39 = call %Void* %func38(%Int* %sk_int, %Int* %result28, %Fn1* %result32)
br label %"Invoke_Int#upto_end"
"Invoke_Int#upto_end": ; preds = %"Invoke_Int#upto"
%ret40 = load %Bool*, %Bool** %ret, align 8
br label %IfEnd
Ret: ; preds = %IfEnd
br label %End
}
define %Void* @Array_aset_(%Array* %self, %Int* %i, %Object* %obj) {
alloca:
%idx = alloca %Int*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
br label %IfBegin
End: ; preds = %Ret
%"::Void85" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void85"
IfBegin: ; preds = %alloca_End
%sk_int = call %Int* @box_int(i64 0)
br label %"Invoke_Int#<"
IfThen: ; preds = %"Invoke_Int#<_end"
%"addr_@n_items" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 3
%"@n_items" = load %Int*, %Int** %"addr_@n_items", align 8
br label %"Invoke_Int#+"
IfElse: ; preds = %"Invoke_Int#<_end"
br label %IfEnd
IfEnd: ; preds = %IfElse, %"Invoke_Int#+_end"
%ifResult = phi %Int* [ %result8, %"Invoke_Int#+_end" ], [ %i, %IfElse ]
store %Int* %ifResult, %Int** %idx, align 8
br label %IfBegin9
"Invoke_Int#<": ; preds = %IfBegin
%addr_vtable = getelementptr inbounds %Int, %Int* %i, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable1 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable1, 0
%func = bitcast i8* %func_raw to %Bool* (%Int*, %Int*)*
%result = call %Bool* %func(%Int* %i, %Int* %sk_int)
br label %"Invoke_Int#<_end"
"Invoke_Int#<_end": ; preds = %"Invoke_Int#<"
%llvm_bool = call i1 @unbox_bool(%Bool* %result)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %IfThen, label %IfElse
"Invoke_Int#+": ; preds = %IfThen
%addr_vtable2 = getelementptr inbounds %Int, %Int* %"@n_items", i32 0, i32 0
%vtable3 = load i8*, i8** %addr_vtable2, align 8
%vtable_ptr4 = bitcast i8* %vtable3 to [35 x i8*]*
%vtable5 = load [35 x i8*], [35 x i8*]* %vtable_ptr4, align 8
%func_raw6 = extractvalue [35 x i8*] %vtable5, 18
%func7 = bitcast i8* %func_raw6 to %Int* (%Int*, %Int*)*
%result8 = call %Int* %func7(%Int* %"@n_items", %Int* %i)
br label %"Invoke_Int#+_end"
"Invoke_Int#+_end": ; preds = %"Invoke_Int#+"
br label %IfEnd
IfBegin9: ; preds = %IfEnd
%idx13 = load %Int*, %Int** %idx, align 8
%sk_int14 = call %Int* @box_int(i64 0)
br label %"Invoke_Int#<15"
IfThen10: ; preds = %"Invoke_Int#<_end23"
%as = bitcast %Array* %self to %Object*
%sk_str = call %String* @gen_literal_string(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @str_44, i32 0, i32 0), i64 33)
%as26 = bitcast %String* %sk_str to %Object*
br label %"Invoke_Object#panic"
IfElse11: ; preds = %"Invoke_Int#<_end23"
%"::Void33" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd12
IfEnd12: ; preds = %IfElse11
br label %IfBegin34
"Invoke_Int#<15": ; preds = %IfBegin9
%addr_vtable16 = getelementptr inbounds %Int, %Int* %idx13, i32 0, i32 0
%vtable17 = load i8*, i8** %addr_vtable16, align 8
%vtable_ptr18 = bitcast i8* %vtable17 to [35 x i8*]*
%vtable19 = load [35 x i8*], [35 x i8*]* %vtable_ptr18, align 8
%func_raw20 = extractvalue [35 x i8*] %vtable19, 0
%func21 = bitcast i8* %func_raw20 to %Bool* (%Int*, %Int*)*
%result22 = call %Bool* %func21(%Int* %idx13, %Int* %sk_int14)
br label %"Invoke_Int#<_end23"
"Invoke_Int#<_end23": ; preds = %"Invoke_Int#<15"
%llvm_bool24 = call i1 @unbox_bool(%Bool* %result22)
%istrue25 = icmp eq i1 %llvm_bool24, true
br i1 %istrue25, label %IfThen10, label %IfElse11
"Invoke_Object#panic": ; preds = %IfThen10
%addr_vtable27 = getelementptr inbounds %Object, %Object* %as, i32 0, i32 0
%vtable28 = load i8*, i8** %addr_vtable27, align 8
%vtable_ptr29 = bitcast i8* %vtable28 to [16 x i8*]*
%vtable30 = load [16 x i8*], [16 x i8*]* %vtable_ptr29, align 8
%func_raw31 = extractvalue [16 x i8*] %vtable30, 12
%func32 = bitcast i8* %func_raw31 to void (%Object*, %Object*)*
call void %func32(%Object* %as, %Object* %as26)
%"::Void" = load %Void*, %Void** @"::Void", align 8
unreachable
IfBegin34: ; preds = %IfEnd12
%idx38 = load %Int*, %Int** %idx, align 8
%"addr_@n_items39" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 3
%"@n_items40" = load %Int*, %Int** %"addr_@n_items39", align 8
br label %"Invoke_Int#>="
IfThen35: ; preds = %"Invoke_Int#>=_end"
%as50 = bitcast %Array* %self to %Object*
%sk_str51 = call %String* @gen_literal_string(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @str_45, i32 0, i32 0), i64 28)
%as52 = bitcast %String* %sk_str51 to %Object*
br label %"Invoke_Object#panic53"
IfElse36: ; preds = %"Invoke_Int#>=_end"
%"::Void61" = load %Void*, %Void** @"::Void", align 8
br label %IfEnd37
IfEnd37: ; preds = %IfElse36
%"addr_@items" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 4
%"@items" = load %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"** %"addr_@items", align 8
%idx62 = load %Int*, %Int** %idx, align 8
%"::Array::BYTES_OF_PTR" = load %Int*, %Int** @"::Array::BYTES_OF_PTR", align 8
br label %"Invoke_Int#*"
"Invoke_Int#>=": ; preds = %IfBegin34
%addr_vtable41 = getelementptr inbounds %Int, %Int* %idx38, i32 0, i32 0
%vtable42 = load i8*, i8** %addr_vtable41, align 8
%vtable_ptr43 = bitcast i8* %vtable42 to [35 x i8*]*
%vtable44 = load [35 x i8*], [35 x i8*]* %vtable_ptr43, align 8
%func_raw45 = extractvalue [35 x i8*] %vtable44, 4
%func46 = bitcast i8* %func_raw45 to %Bool* (%Int*, %Int*)*
%result47 = call %Bool* %func46(%Int* %idx38, %Int* %"@n_items40")
br label %"Invoke_Int#>=_end"
"Invoke_Int#>=_end": ; preds = %"Invoke_Int#>="
%llvm_bool48 = call i1 @unbox_bool(%Bool* %result47)
%istrue49 = icmp eq i1 %llvm_bool48, true
br i1 %istrue49, label %IfThen35, label %IfElse36
"Invoke_Object#panic53": ; preds = %IfThen35
%addr_vtable54 = getelementptr inbounds %Object, %Object* %as50, i32 0, i32 0
%vtable55 = load i8*, i8** %addr_vtable54, align 8
%vtable_ptr56 = bitcast i8* %vtable55 to [16 x i8*]*
%vtable57 = load [16 x i8*], [16 x i8*]* %vtable_ptr56, align 8
%func_raw58 = extractvalue [16 x i8*] %vtable57, 12
%func59 = bitcast i8* %func_raw58 to void (%Object*, %Object*)*
call void %func59(%Object* %as50, %Object* %as52)
%"::Void60" = load %Void*, %Void** @"::Void", align 8
unreachable
"Invoke_Int#*": ; preds = %IfEnd37
%addr_vtable63 = getelementptr inbounds %Int, %Int* %idx62, i32 0, i32 0
%vtable64 = load i8*, i8** %addr_vtable63, align 8
%vtable_ptr65 = bitcast i8* %vtable64 to [35 x i8*]*
%vtable66 = load [35 x i8*], [35 x i8*]* %vtable_ptr65, align 8
%func_raw67 = extractvalue [35 x i8*] %vtable66, 17
%func68 = bitcast i8* %func_raw67 to %Int* (%Int*, %Int*)*
%result69 = call %Int* %func68(%Int* %idx62, %Int* %"::Array::BYTES_OF_PTR")
br label %"Invoke_Int#*_end"
"Invoke_Int#*_end": ; preds = %"Invoke_Int#*"
br label %"Invoke_Shiika::Internal::Ptr#+"
"Invoke_Shiika::Internal::Ptr#+": ; preds = %"Invoke_Int#*_end"
%addr_vtable70 = getelementptr inbounds %"Shiika::Internal::Ptr", %"Shiika::Internal::Ptr"* %"@items", i32 0, i32 0
%vtable71 = load i8*, i8** %addr_vtable70, align 8
%vtable_ptr72 = bitcast i8* %vtable71 to [21 x i8*]*
%vtable73 = load [21 x i8*], [21 x i8*]* %vtable_ptr72, align 8
%func_raw74 = extractvalue [21 x i8*] %vtable73, 16
%func75 = bitcast i8* %func_raw74 to %"Shiika::Internal::Ptr"* (%"Shiika::Internal::Ptr"*, %Int*)*
%result76 = call %"Shiika::Internal::Ptr"* %func75(%"Shiika::Internal::Ptr"* %"@items", %Int* %result69)
br label %"Invoke_Shiika::Internal::Ptr#+_end"
"Invoke_Shiika::Internal::Ptr#+_end": ; preds = %"Invoke_Shiika::Internal::Ptr#+"
br label %"Invoke_Shiika::Internal::Ptr#store"
"Invoke_Shiika::Internal::Ptr#store": ; preds = %"Invoke_Shiika::Internal::Ptr#+_end"
%addr_vtable77 = getelementptr inbounds %"Shiika::Internal::Ptr", %"Shiika::Internal::Ptr"* %result76, i32 0, i32 0
%vtable78 = load i8*, i8** %addr_vtable77, align 8
%vtable_ptr79 = bitcast i8* %vtable78 to [21 x i8*]*
%vtable80 = load [21 x i8*], [21 x i8*]* %vtable_ptr79, align 8
%func_raw81 = extractvalue [21 x i8*] %vtable80, 19
%func82 = bitcast i8* %func_raw81 to %Void* (%"Shiika::Internal::Ptr"*, %Object*)*
%result83 = call %Void* %func82(%"Shiika::Internal::Ptr"* %result76, %Object* %obj)
br label %"Invoke_Shiika::Internal::Ptr#store_end"
"Invoke_Shiika::Internal::Ptr#store_end": ; preds = %"Invoke_Shiika::Internal::Ptr#store"
%"::Void84" = load %Void*, %Void** @"::Void", align 8
br label %Ret
Ret: ; preds = %"Invoke_Shiika::Internal::Ptr#store_end"
br label %End
}
define %Bool* @"Array_all?"(%Array* %self, %Fn1* %f) {
alloca:
%ret = alloca %Bool*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%sk_bool = call %Bool* @box_bool(i1 true)
store %Bool* %sk_bool, %Bool** %ret, align 8
%"::Fn1" = load %Fn1*, %Fn1** @"::Fn1", align 8
%sk_ptr = call %"Shiika::Internal::Ptr"* @box_i8ptr(i8* bitcast (%Void* (%Fn1*, %Object*)* @"lambda_2_in_Array#all?" to i8*))
%the_main = bitcast %Array* %self to %Object*
%"::Array" = load %Array*, %Array** @"::Array", align 8
%result = call %Array* @Meta_Array_new(%Array* %"::Array")
%capture_item = bitcast %Fn1* %f to %Object*
%_ = call %Void* @Array_push(%Array* %result, %Object* %capture_item)
%capture_item1 = bitcast %Bool** %ret to %Object*
%_2 = call %Void* @Array_push(%Array* %result, %Object* %capture_item1)
%result3 = call %Fn1* @Meta_Fn1_new(%Fn1* %"::Fn1", %"Shiika::Internal::Ptr"* %sk_ptr, %Object* %the_main, %Array* %result)
%as = bitcast %Fn1* %result3 to %Object*
br label %"Invoke_Array#each"
End: ; preds = %Ret
%methodResult = phi %Bool* [ %ret6, %Ret ]
ret %Bool* %methodResult
"Invoke_Array#each": ; preds = %alloca_End
%addr_vtable = getelementptr inbounds %Array, %Array* %self, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [54 x i8*]*
%vtable4 = load [54 x i8*], [54 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [54 x i8*] %vtable4, 29
%func = bitcast i8* %func_raw to %Void* (%Array*, %Object*)*
%result5 = call %Void* %func(%Array* %self, %Object* %as)
br label %"Invoke_Array#each_end"
"Invoke_Array#each_end": ; preds = %"Invoke_Array#each"
%ret6 = load %Bool*, %Bool** %ret, align 8
br label %Ret
Ret: ; preds = %"Invoke_Array#each_end"
br label %End
}
define %Bool* @"Array_any?"(%Array* %self, %Fn1* %f) {
alloca:
%ret = alloca %Bool*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%sk_bool = call %Bool* @box_bool(i1 false)
store %Bool* %sk_bool, %Bool** %ret, align 8
%"::Fn1" = load %Fn1*, %Fn1** @"::Fn1", align 8
%sk_ptr = call %"Shiika::Internal::Ptr"* @box_i8ptr(i8* bitcast (%Void* (%Fn1*, %Object*)* @"lambda_3_in_Array#any?" to i8*))
%the_main = bitcast %Array* %self to %Object*
%"::Array" = load %Array*, %Array** @"::Array", align 8
%result = call %Array* @Meta_Array_new(%Array* %"::Array")
%capture_item = bitcast %Fn1* %f to %Object*
%_ = call %Void* @Array_push(%Array* %result, %Object* %capture_item)
%capture_item1 = bitcast %Bool** %ret to %Object*
%_2 = call %Void* @Array_push(%Array* %result, %Object* %capture_item1)
%result3 = call %Fn1* @Meta_Fn1_new(%Fn1* %"::Fn1", %"Shiika::Internal::Ptr"* %sk_ptr, %Object* %the_main, %Array* %result)
%as = bitcast %Fn1* %result3 to %Object*
br label %"Invoke_Array#each"
End: ; preds = %Ret
%methodResult = phi %Bool* [ %ret6, %Ret ]
ret %Bool* %methodResult
"Invoke_Array#each": ; preds = %alloca_End
%addr_vtable = getelementptr inbounds %Array, %Array* %self, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [54 x i8*]*
%vtable4 = load [54 x i8*], [54 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [54 x i8*] %vtable4, 29
%func = bitcast i8* %func_raw to %Void* (%Array*, %Object*)*
%result5 = call %Void* %func(%Array* %self, %Object* %as)
br label %"Invoke_Array#each_end"
"Invoke_Array#each_end": ; preds = %"Invoke_Array#each"
%ret6 = load %Bool*, %Bool** %ret, align 8
br label %Ret
Ret: ; preds = %"Invoke_Array#each_end"
br label %End
}
define %Void* @Array_append(%Array* %self, %Array* %other) {
%"::Fn1" = load %Fn1*, %Fn1** @"::Fn1", align 8
%sk_ptr = call %"Shiika::Internal::Ptr"* @box_i8ptr(i8* bitcast (%Void* (%Fn1*, %Object*)* @"lambda_4_in_Array#append" to i8*))
%the_main = bitcast %Array* %self to %Object*
%"::Array" = load %Array*, %Array** @"::Array", align 8
%result = call %Array* @Meta_Array_new(%Array* %"::Array")
%result1 = call %Fn1* @Meta_Fn1_new(%Fn1* %"::Fn1", %"Shiika::Internal::Ptr"* %sk_ptr, %Object* %the_main, %Array* %result)
%as = bitcast %Fn1* %result1 to %Object*
br label %"Invoke_Array#each"
End: ; preds = %Ret
%"::Void4" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void4"
"Invoke_Array#each": ; preds = %0
%addr_vtable = getelementptr inbounds %Array, %Array* %other, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [54 x i8*]*
%vtable2 = load [54 x i8*], [54 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [54 x i8*] %vtable2, 29
%func = bitcast i8* %func_raw to %Void* (%Array*, %Object*)*
%result3 = call %Void* %func(%Array* %other, %Object* %as)
br label %"Invoke_Array#each_end"
"Invoke_Array#each_end": ; preds = %"Invoke_Array#each"
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %Ret
Ret: ; preds = %"Invoke_Array#each_end"
br label %End
}
define %Void* @Array_clear(%Array* %self) {
%sk_int = call %Int* @box_int(i64 0)
%"addr_@n_items" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 3
store %Int* %sk_int, %Int** %"addr_@n_items", align 8
%"::Void" = load %Void*, %Void** @"::Void", align 8
br label %Ret
End: ; preds = %Ret
%"::Void1" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void1"
Ret: ; preds = %0
br label %End
}
define %Array* @Array_clone(%Array* %self) {
alloca:
%"ary@6_" = alloca %Array*, align 8
%ret = alloca %Array*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%"::Array" = load %Array*, %Array** @"::Array", align 8
%"::Array1" = load %Array*, %Array** @"::Array", align 8
%"::Class" = load %Class.0*, %Class.0** @"::Class", align 8
br label %"Invoke_Class#_specialize1"
End: ; preds = %Ret
%methodResult = phi %Array* [ %ret45, %Ret ]
ret %Array* %methodResult
"Invoke_Class#_specialize1": ; preds = %alloca_End
%addr_vtable = getelementptr inbounds %Array, %Array* %"::Array1", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [25 x i8*]*
%vtable2 = load [25 x i8*], [25 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [25 x i8*] %vtable2, 18
%func = bitcast i8* %func_raw to %Array* (%Array*, %Class.0*)*
%result = call %Array* %func(%Array* %"::Array1", %Class.0* %"::Class")
br label %"Invoke_Class#_specialize1_end"
"Invoke_Class#_specialize1_end": ; preds = %"Invoke_Class#_specialize1"
br label %"Invoke_Array#new"
"Invoke_Array#new": ; preds = %"Invoke_Class#_specialize1_end"
%addr_vtable3 = getelementptr inbounds %Array, %Array* %result, i32 0, i32 0
%vtable4 = load i8*, i8** %addr_vtable3, align 8
%vtable_ptr5 = bitcast i8* %vtable4 to [25 x i8*]*
%vtable6 = load [25 x i8*], [25 x i8*]* %vtable_ptr5, align 8
%func_raw7 = extractvalue [25 x i8*] %vtable6, 23
%func8 = bitcast i8* %func_raw7 to %Array* (%Array*)*
%result9 = call %Array* %func8(%Array* %result)
br label %"Invoke_Array#new_end"
"Invoke_Array#new_end": ; preds = %"Invoke_Array#new"
store %Array* %result9, %Array** %"ary@6_", align 8
%"ary@6_10" = load %Array*, %Array** %"ary@6_", align 8
%addr_class = getelementptr inbounds %Array, %Array* %self, i32 0, i32 1
%class = load %Class.0*, %Class.0** %addr_class, align 8
%sk_int = call %Int* @box_int(i64 0)
%result11 = call %Class.0* @Class___type__argument(%Class.0* %class, %Int* %sk_int)
%as = bitcast %Class.0* %result11 to %Object*
br label %"Invoke_Array#push"
"Invoke_Array#push": ; preds = %"Invoke_Array#new_end"
%addr_vtable12 = getelementptr inbounds %Array, %Array* %"ary@6_10", i32 0, i32 0
%vtable13 = load i8*, i8** %addr_vtable12, align 8
%vtable_ptr14 = bitcast i8* %vtable13 to [54 x i8*]*
%vtable15 = load [54 x i8*], [54 x i8*]* %vtable_ptr14, align 8
%func_raw16 = extractvalue [54 x i8*] %vtable15, 45
%func17 = bitcast i8* %func_raw16 to %Void* (%Array*, %Object*)*
%result18 = call %Void* %func17(%Array* %"ary@6_10", %Object* %as)
br label %"Invoke_Array#push_end"
"Invoke_Array#push_end": ; preds = %"Invoke_Array#push"
%"ary@6_19" = load %Array*, %Array** %"ary@6_", align 8
br label %"Invoke_Class#<>"
"Invoke_Class#<>": ; preds = %"Invoke_Array#push_end"
%addr_vtable20 = getelementptr inbounds %Array, %Array* %"::Array", i32 0, i32 0
%vtable21 = load i8*, i8** %addr_vtable20, align 8
%vtable_ptr22 = bitcast i8* %vtable21 to [25 x i8*]*
%vtable23 = load [25 x i8*], [25 x i8*]* %vtable_ptr22, align 8
%func_raw24 = extractvalue [25 x i8*] %vtable23, 16
%func25 = bitcast i8* %func_raw24 to %Array* (%Array*, %Array*)*
%result26 = call %Array* %func25(%Array* %"::Array", %Array* %"ary@6_19")
br label %"Invoke_Class#<>_end"
"Invoke_Class#<>_end": ; preds = %"Invoke_Class#<>"
br label %"Invoke_Meta:Array#new"
"Invoke_Meta:Array#new": ; preds = %"Invoke_Class#<>_end"
%addr_vtable27 = getelementptr inbounds %Array, %Array* %result26, i32 0, i32 0
%vtable28 = load i8*, i8** %addr_vtable27, align 8
%vtable_ptr29 = bitcast i8* %vtable28 to [25 x i8*]*
%vtable30 = load [25 x i8*], [25 x i8*]* %vtable_ptr29, align 8
%func_raw31 = extractvalue [25 x i8*] %vtable30, 23
%func32 = bitcast i8* %func_raw31 to %Array* (%Array*)*
%result33 = call %Array* %func32(%Array* %result26)
br label %"Invoke_Meta:Array#new_end"
"Invoke_Meta:Array#new_end": ; preds = %"Invoke_Meta:Array#new"
store %Array* %result33, %Array** %ret, align 8
%"::Fn1" = load %Fn1*, %Fn1** @"::Fn1", align 8
%sk_ptr = call %"Shiika::Internal::Ptr"* @box_i8ptr(i8* bitcast (%Void* (%Fn1*, %Object*)* @"lambda_5_in_Array#clone" to i8*))
%the_main = bitcast %Array* %self to %Object*
%"::Array34" = load %Array*, %Array** @"::Array", align 8
%result35 = call %Array* @Meta_Array_new(%Array* %"::Array34")
%capture_item = bitcast %Array** %ret to %Object*
%_ = call %Void* @Array_push(%Array* %result35, %Object* %capture_item)
%result36 = call %Fn1* @Meta_Fn1_new(%Fn1* %"::Fn1", %"Shiika::Internal::Ptr"* %sk_ptr, %Object* %the_main, %Array* %result35)
%as37 = bitcast %Fn1* %result36 to %Object*
br label %"Invoke_Array#each"
"Invoke_Array#each": ; preds = %"Invoke_Meta:Array#new_end"
%addr_vtable38 = getelementptr inbounds %Array, %Array* %self, i32 0, i32 0
%vtable39 = load i8*, i8** %addr_vtable38, align 8
%vtable_ptr40 = bitcast i8* %vtable39 to [54 x i8*]*
%vtable41 = load [54 x i8*], [54 x i8*]* %vtable_ptr40, align 8
%func_raw42 = extractvalue [54 x i8*] %vtable41, 29
%func43 = bitcast i8* %func_raw42 to %Void* (%Array*, %Object*)*
%result44 = call %Void* %func43(%Array* %self, %Object* %as37)
br label %"Invoke_Array#each_end"
"Invoke_Array#each_end": ; preds = %"Invoke_Array#each"
%ret45 = load %Array*, %Array** %ret, align 8
br label %Ret
Ret: ; preds = %"Invoke_Array#each_end"
br label %End
}
define %Array* @Array_drop(%Array* %self, %Int* %n) {
alloca:
%"ary@7_" = alloca %Array*, align 8
%ret = alloca %Array*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%"::Array" = load %Array*, %Array** @"::Array", align 8
%"::Array1" = load %Array*, %Array** @"::Array", align 8
%"::Class" = load %Class.0*, %Class.0** @"::Class", align 8
br label %"Invoke_Class#_specialize1"
End: ; preds = %Ret
%methodResult = phi %Array* [ %ret52, %Ret ]
ret %Array* %methodResult
"Invoke_Class#_specialize1": ; preds = %alloca_End
%addr_vtable = getelementptr inbounds %Array, %Array* %"::Array1", i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [25 x i8*]*
%vtable2 = load [25 x i8*], [25 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [25 x i8*] %vtable2, 18
%func = bitcast i8* %func_raw to %Array* (%Array*, %Class.0*)*
%result = call %Array* %func(%Array* %"::Array1", %Class.0* %"::Class")
br label %"Invoke_Class#_specialize1_end"
"Invoke_Class#_specialize1_end": ; preds = %"Invoke_Class#_specialize1"
br label %"Invoke_Array#new"
"Invoke_Array#new": ; preds = %"Invoke_Class#_specialize1_end"
%addr_vtable3 = getelementptr inbounds %Array, %Array* %result, i32 0, i32 0
%vtable4 = load i8*, i8** %addr_vtable3, align 8
%vtable_ptr5 = bitcast i8* %vtable4 to [25 x i8*]*
%vtable6 = load [25 x i8*], [25 x i8*]* %vtable_ptr5, align 8
%func_raw7 = extractvalue [25 x i8*] %vtable6, 23
%func8 = bitcast i8* %func_raw7 to %Array* (%Array*)*
%result9 = call %Array* %func8(%Array* %result)
br label %"Invoke_Array#new_end"
"Invoke_Array#new_end": ; preds = %"Invoke_Array#new"
store %Array* %result9, %Array** %"ary@7_", align 8
%"ary@7_10" = load %Array*, %Array** %"ary@7_", align 8
%addr_class = getelementptr inbounds %Array, %Array* %self, i32 0, i32 1
%class = load %Class.0*, %Class.0** %addr_class, align 8
%sk_int = call %Int* @box_int(i64 0)
%result11 = call %Class.0* @Class___type__argument(%Class.0* %class, %Int* %sk_int)
%as = bitcast %Class.0* %result11 to %Object*
br label %"Invoke_Array#push"
"Invoke_Array#push": ; preds = %"Invoke_Array#new_end"
%addr_vtable12 = getelementptr inbounds %Array, %Array* %"ary@7_10", i32 0, i32 0
%vtable13 = load i8*, i8** %addr_vtable12, align 8
%vtable_ptr14 = bitcast i8* %vtable13 to [54 x i8*]*
%vtable15 = load [54 x i8*], [54 x i8*]* %vtable_ptr14, align 8
%func_raw16 = extractvalue [54 x i8*] %vtable15, 45
%func17 = bitcast i8* %func_raw16 to %Void* (%Array*, %Object*)*
%result18 = call %Void* %func17(%Array* %"ary@7_10", %Object* %as)
br label %"Invoke_Array#push_end"
"Invoke_Array#push_end": ; preds = %"Invoke_Array#push"
%"ary@7_19" = load %Array*, %Array** %"ary@7_", align 8
br label %"Invoke_Class#<>"
"Invoke_Class#<>": ; preds = %"Invoke_Array#push_end"
%addr_vtable20 = getelementptr inbounds %Array, %Array* %"::Array", i32 0, i32 0
%vtable21 = load i8*, i8** %addr_vtable20, align 8
%vtable_ptr22 = bitcast i8* %vtable21 to [25 x i8*]*
%vtable23 = load [25 x i8*], [25 x i8*]* %vtable_ptr22, align 8
%func_raw24 = extractvalue [25 x i8*] %vtable23, 16
%func25 = bitcast i8* %func_raw24 to %Array* (%Array*, %Array*)*
%result26 = call %Array* %func25(%Array* %"::Array", %Array* %"ary@7_19")
br label %"Invoke_Class#<>_end"
"Invoke_Class#<>_end": ; preds = %"Invoke_Class#<>"
br label %"Invoke_Meta:Array#new"
"Invoke_Meta:Array#new": ; preds = %"Invoke_Class#<>_end"
%addr_vtable27 = getelementptr inbounds %Array, %Array* %result26, i32 0, i32 0
%vtable28 = load i8*, i8** %addr_vtable27, align 8
%vtable_ptr29 = bitcast i8* %vtable28 to [25 x i8*]*
%vtable30 = load [25 x i8*], [25 x i8*]* %vtable_ptr29, align 8
%func_raw31 = extractvalue [25 x i8*] %vtable30, 23
%func32 = bitcast i8* %func_raw31 to %Array* (%Array*)*
%result33 = call %Array* %func32(%Array* %result26)
br label %"Invoke_Meta:Array#new_end"
"Invoke_Meta:Array#new_end": ; preds = %"Invoke_Meta:Array#new"
store %Array* %result33, %Array** %ret, align 8
%"addr_@n_items" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 3
%"@n_items" = load %Int*, %Int** %"addr_@n_items", align 8
%sk_int34 = call %Int* @box_int(i64 1)
br label %"Invoke_Int#-"
"Invoke_Int#-": ; preds = %"Invoke_Meta:Array#new_end"
%addr_vtable35 = getelementptr inbounds %Int, %Int* %"@n_items", i32 0, i32 0
%vtable36 = load i8*, i8** %addr_vtable35, align 8
%vtable_ptr37 = bitcast i8* %vtable36 to [35 x i8*]*
%vtable38 = load [35 x i8*], [35 x i8*]* %vtable_ptr37, align 8
%func_raw39 = extractvalue [35 x i8*] %vtable38, 19
%func40 = bitcast i8* %func_raw39 to %Int* (%Int*, %Int*)*
%result41 = call %Int* %func40(%Int* %"@n_items", %Int* %sk_int34)
br label %"Invoke_Int#-_end"
"Invoke_Int#-_end": ; preds = %"Invoke_Int#-"
%"::Fn1" = load %Fn1*, %Fn1** @"::Fn1", align 8
%sk_ptr = call %"Shiika::Internal::Ptr"* @box_i8ptr(i8* bitcast (%Void* (%Fn1*, %Object*)* @"lambda_6_in_Array#drop" to i8*))
%the_main = bitcast %Array* %self to %Object*
%"::Array42" = load %Array*, %Array** @"::Array", align 8
%result43 = call %Array* @Meta_Array_new(%Array* %"::Array42")
%capture_item = bitcast %Array** %ret to %Object*
%_ = call %Void* @Array_push(%Array* %result43, %Object* %capture_item)
%result44 = call %Fn1* @Meta_Fn1_new(%Fn1* %"::Fn1", %"Shiika::Internal::Ptr"* %sk_ptr, %Object* %the_main, %Array* %result43)
br label %"Invoke_Int#upto"
"Invoke_Int#upto": ; preds = %"Invoke_Int#-_end"
%addr_vtable45 = getelementptr inbounds %Int, %Int* %n, i32 0, i32 0
%vtable46 = load i8*, i8** %addr_vtable45, align 8
%vtable_ptr47 = bitcast i8* %vtable46 to [35 x i8*]*
%vtable48 = load [35 x i8*], [35 x i8*]* %vtable_ptr47, align 8
%func_raw49 = extractvalue [35 x i8*] %vtable48, 33
%func50 = bitcast i8* %func_raw49 to %Void* (%Int*, %Int*, %Fn1*)*
%result51 = call %Void* %func50(%Int* %n, %Int* %result41, %Fn1* %result44)
br label %"Invoke_Int#upto_end"
"Invoke_Int#upto_end": ; preds = %"Invoke_Int#upto"
%ret52 = load %Array*, %Array** %ret, align 8
br label %Ret
Ret: ; preds = %"Invoke_Int#upto_end"
br label %End
}
define %Void* @Array_each(%Array* %self, %Fn1* %f) {
alloca:
%i = alloca %Int*, align 8
br label %alloca_End
alloca_End: ; preds = %alloca
%sk_int = call %Int* @box_int(i64 0)
store %Int* %sk_int, %Int** %i, align 8
br label %WhileBegin
End: ; preds = %Ret, %Invoke_lambda
%"::Void26" = load %Void*, %Void** @"::Void", align 8
ret %Void* %"::Void26"
WhileBegin: ; preds = %"Invoke_Int#+_end", %alloca_End
%i1 = load %Int*, %Int** %i, align 8
%"addr_@n_items" = getelementptr inbounds %Array, %Array* %self, i32 0, i32 3
%"@n_items" = load %Int*, %Int** %"addr_@n_items", align 8
br label %"Invoke_Int#<"
"Invoke_Int#<": ; preds = %WhileBegin
%addr_vtable = getelementptr inbounds %Int, %Int* %i1, i32 0, i32 0
%vtable = load i8*, i8** %addr_vtable, align 8
%vtable_ptr = bitcast i8* %vtable to [35 x i8*]*
%vtable2 = load [35 x i8*], [35 x i8*]* %vtable_ptr, align 8
%func_raw = extractvalue [35 x i8*] %vtable2, 0
%func = bitcast i8* %func_raw to %Bool* (%Int*, %Int*)*
%result = call %Bool* %func(%Int* %i1, %Int* %"@n_items")
br label %"Invoke_Int#<_end"
"Invoke_Int#<_end": ; preds = %"Invoke_Int#<"
%llvm_bool = call i1 @unbox_bool(%Bool* %result)
%istrue = icmp eq i1 %llvm_bool, true
br i1 %istrue, label %WhileBody, label %WhileEnd
WhileBody: ; preds = %"Invoke_Int#<_end"
%i3 = load %Int*, %Int** %i, align 8
%as = bitcast %Int* %i3 to %Object*
br label %"Invoke_Array#[]"
WhileEnd: ; preds = %"Invoke_Int#<_end"
%"::Void" = load %Void*, %Void** @"::Void", align 8
%"::Void25" = load %Void*, %Void** @"::Void", align 8
br label %Ret
"Invoke_Array#[]": ; preds = %WhileBody
%addr_vtable4 = getelementptr inbounds %Array, %Array* %self, i32 0, i32 0
%vtable5 = load i8*, i8** %addr_vtable4, align 8
%vtable_ptr6 = bitcast i8* %vtable5 to [54 x i8*]*
%vtable7 = load [54 x i8*], [54 x i8*]* %vtable_ptr6, align 8
%func_raw8 = extractvalue [54 x i8*] %vtable7, 16
%func9 = bitcast i8* %func_raw8 to %Object* (%Array*, %Object*)*
%result10 = call %Object* %func9(%Array* %self, %Object* %as)
br label %"Invoke_Array#[]_end"
"Invoke_Array#[]_end": ; preds = %"Invoke_Array#[]"
br label %Invoke_lambda
Invoke_lambda: ; preds = %"Invoke_Array#[]_end"
%"addr_@func" = getelementptr inbounds %Fn1, %Fn1* %f, i32 0, i32 2
%"@func" = load %"Shiika::Internal::Ptr"*, %"Shiika::Internal::Ptr"** %"addr_@func", align 8
%llvm_ptr = call i8* @unbox_i8ptr(%"Shiika::Internal::Ptr"* %"@func")
%0 = bitcast i8* %llvm_ptr to %Void* (%Fn1*, %Object*)*
%result11 = call %Void* %0(%Fn1* %f, %Object* %result10)
%"addr_@exit_status" = getelementptr inbounds %Fn1, %Fn1* %f, i32 0, i32 5
%"@exit_status" = load %Int*, %Int** %"addr_@exit_status", align 8
%sk_int12 = call %Int* @box_int(i64 1)
%result13 = call %Bool* @Int_eq_(%Int* %"@exit_status", %Int* %sk_int12)
%llvm_bool14 = call i1 @unbox_bool(%Bool* %result13)
%istrue15 = icmp eq i1 %llvm_bool14, true
br i1 %istrue15, label %End, label %Invoke_lambda_end
Invoke_lambda_end: ; preds = %Invoke_lambda
%i16 = load %Int*, %Int** %i, align 8
%sk_int17 = call %Int* @box_int(i64 1)
br label %"Invoke_Int#+"
"Invoke_Int#+": ; preds = %Invoke_lambda_end
%addr_vtable18 = getelementptr inbounds %Int, %Int* %i16, i32 0, i32 0
%vtable19 = load i8*, i8** %addr_vtable18, align 8
%vtable_ptr20 = bitcast i8* %vtable19 to [35 x i8*]*
%vtable21 = load [35 x i8*], [35 x i8*]* %vtable_ptr20, align 8
%func_raw22 = extractvalue [35 x i8*] %vtable21, 18
%func23 = bitcast i8* %func_raw22 to %Int* (%Int*, %Int*)*
%result24 = call %Int* %func23(%Int* %i16, %Int* %sk_int17)
br label %"Invoke_Int#+_end"
"Invoke_Int#+_end": ; preds = %"Invoke_Int#+"
store %Int* %result24, %Int** %i, align 8
br label %WhileBegin
Ret: ; preds = %WhileEnd
br label %End
}