Skip to content

Instantly share code, notes, and snippets.

@thebirk
Created March 3, 2018 13:37
Show Gist options
  • Save thebirk/24dc9274e92868ed3b2356beac227e94 to your computer and use it in GitHub Desktop.
Save thebirk/24dc9274e92868ed3b2356beac227e94 to your computer and use it in GitHub Desktop.
This file has been truncated, but you can view the full file.
target triple = "x86_64-pc-windows-msvc"
%..opaque = type {};
%..string = type {i8*, i64} ; Basic_string
%..rawptr = type i8* ; Basic_rawptr
%..complex32 = type {half, half} ; Basic_complex32
%..complex64 = type {float, float} ; Basic_complex64
%..complex128 = type {double, double} ; Basic_complex128
%..any = type {%..rawptr, %Type_Info*} ; Basic_any
declare void @llvm.dbg.declare(metadata, metadata, metadata) nounwind readnone
%Calling_Convention = type i64
%Type_Info_Enum_Value = type {[0 x <8 x i8>], [8 x i8], i8}
%Type_Info_Named = type {%..string, %Type_Info*}
%Type_Info_Integer = type {i8}
%Type_Info_Rune = type {}
%Type_Info_Float = type {}
%Type_Info_Complex = type {}
%Type_Info_String = type {}
%Type_Info_Boolean = type {}
%Type_Info_Any = type {}
%Type_Info_Pointer = type {%Type_Info*}
%Type_Info_Procedure = type {%Type_Info*, %Type_Info*, i8, i64}
%Type_Info_Array = type {%Type_Info*, i64, i64}
%Type_Info_Dynamic_Array = type {%Type_Info*, i64}
%Type_Info_Slice = type {%Type_Info*, i64}
%Type_Info_Tuple = type {{%Type_Info**, i64}, {%..string*, i64}}
%Type_Info_Struct = type {{%Type_Info**, i64}, {%..string*, i64}, {i64*, i64}, {i8*, i64}, i8, i8, i8}
%Type_Info_Union = type {{%Type_Info**, i64}, i64, %Type_Info*}
%Type_Info_Enum = type {%Type_Info*, {%..string*, i64}, {%Type_Info_Enum_Value*, i64}, i8}
%Type_Info_Map = type {%Type_Info*, %Type_Info*, %Type_Info*}
%Type_Info_Bit_Field = type {{%..string*, i64}, {i32*, i64}, {i32*, i64}}
%Type_Info = type {i64, i64, {[0 x <8 x i8>], [72 x i8], i8}}
%Source_Code_Location = type {%..string, i64, i64, %..string}
%Allocator_Mode = type i8
%Allocator_Proc = type %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)*
%Allocator = type {%..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)*, %..rawptr}
%Context = type {%Allocator, i64, %..any, i64, %Context*, %..any}
%__Map_Key = type {i64, %..string}
%__Map_Find_Result = type {i64, i64, i64}
%__Map_Entry_Header = type {%__Map_Key, i64}
%__Map_Header = type {%raw-5.Map*, i8, i64, i64, i64, i64}
%utf8-4.Accept_Range = type {i8, i8}
%raw-5.Any = type {%..rawptr, %Type_Info*}
%raw-5.String = type {i8*, i64}
%raw-5.Slice = type {%..rawptr, i64}
%raw-5.Dynamic_Array = type {%..rawptr, i64, i64, %Allocator}
%raw-5.Map = type {{i64*, i64, i64, %Allocator}, %raw-5.Dynamic_Array}
%main-0.TransferPayload = type {i64, i64, i64, i8}
%os_windows-6.Handle = type i64
%os_windows-6.Errno = type i64
%fmt-11.String_Buffer = type {i8*, i64, i64, %Allocator}
%fmt-11.Fmt_Info = type {i8, i8, i8, i8, i8, i8, i8, i64, i64, i64, i8, i8, {i8*, i64, i64, %Allocator}*, %..any}
%thread-13.Thread_Proc = type i64 (%thread-13.Thread*, %Context*)*
%thread-13.Thread_Os_Specific = type {%..rawptr, i32}
%thread-13.Thread = type {%thread-13.Thread_Os_Specific, i64 (%thread-13.Thread*, %Context*)*, %..rawptr, i64, %Context, i8}
%windows-15.Handle = type %..rawptr
%windows-15.Hwnd = type %..rawptr
%windows-15.Hdc = type %..rawptr
%windows-15.Hinstance = type %..rawptr
%windows-15.Hicon = type %..rawptr
%windows-15.Hcursor = type %..rawptr
%windows-15.Hmenu = type %..rawptr
%windows-15.Hbrush = type %..rawptr
%windows-15.Hmodule = type %..rawptr
%windows-15.Wparam = type i64
%windows-15.Lparam = type i64
%windows-15.Lresult = type i64
%windows-15.Wnd_Proc = type i64 (%..rawptr, i32, i64, i64)*
%windows-15.Bool = type i32
%windows-15.Point = type {i32, i32}
%windows-15.Wnd_Class_Ex_A = type {i32, i32, i64 (%..rawptr, i32, i64, i64)*, i32, i32, %..rawptr, %..rawptr, %..rawptr, %..rawptr, i8*, i8*, %..rawptr}
%windows-15.Msg = type {%..rawptr, i32, i64, i64, i32, %windows-15.Point}
%windows-15.Rect = type {i32, i32, i32, i32}
%windows-15.Filetime = type {i32, i32}
%windows-15.Systemtime = type {i16, i16, i16, i16, i16, i16, i16, i16}
%windows-15.Security_Attributes = type {i32, %..rawptr, i32}
%windows-15.Pixel_Format_Descriptor = type {i32, i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, i32, i32}
%windows-15.Critical_Section = type {%windows-15.Critical_Section_Debug*, i32, i32, %..rawptr, %..rawptr, i32*}
%windows-15.Critical_Section_Debug = type {i16, i16, %windows-15.Critical_Section*, %windows-15.List_Entry*, i32, i32, i32, i16, i16}
%windows-15.List_Entry = type {%windows-15.List_Entry*, %windows-15.List_Entry*}
%windows-15.Key_Code = type i32
%brew_imgui-23.State = type {i32, %gl-24.Program, i32, i32, i32}
%brew_imgui-23.FrameState = type {float, i64, i64, i8, i64, i64, i64, i8, i8}
%gl-24.VAO = type i32
%gl-24.VBO = type i32
%gl-24.EBO = type i32
%gl-24.BufferObject = type i32
%gl-24.Texture = type i32
%gl-24.Shader = type i32
%gl-24.Program = type {i32, i32, i32, {{i64*, i64, i64, %Allocator}, {{%__Map_Key, i64, %gl-24.Uniform}*, i64, i64, %Allocator}}, {{i64*, i64, i64, %Allocator}, {{%__Map_Key, i64, %gl-24.Attrib}*, i64, i64, %Allocator}}}
%gl-24.Uniform = type {i32, %..string, i32, i32}
%gl-24.Attrib = type {i32, %..string, i32, i32}
%gl-24.DebugMessageCallbackProc = type void (i32, i32, i32, i32, i32, i8*, %..rawptr)*
%gl-24.set_proc_address = type void (%..rawptr, %..rawptr, %..string, %Context*)*
%gl-24.load_library = type %..rawptr (%..string, %Context*)*
%gl-24.free_library = type void (%..rawptr, %Context*)*
%imgui_console-28.CommandProc = type void ({%..string*, i64}*, %Context*)*
%imgui_console-28.LogData = type {[256 x i8], {%imgui_console-28.LogItem*, i64, i64, %Allocator}, {%..string*, i64, i64, %Allocator}, {%imgui_console-28.LogItem*, i64, i64, %Allocator}, {{i64*, i64, i64, %Allocator}, {{%__Map_Key, i64, void ({%..string*, i64}*, %Context*)*}*, i64, i64, %Allocator}}, %..string, i8, i64}
%imgui_console-28.LogItem = type {%..string, %windows-15.Systemtime, i64, %..string, i64}
%imgui_console-28.LogLevel = type i64
%debug-30.Debug_Settings = type {i8, i8, i8}
%debug-30.Debug_State = type {%debug-30.Debug_Settings, i64}
%libgit2-29.Misc_Buf = type i64
%log-33.Item = type {%commit-34.Commit, %misc-49.Datetime}
%log-33.Log = type {{%log-33.Item*, i64, i64, %Allocator}, i64}
%commit-34.Commit = type {%libgit2_types-55.Commit*, %libgit2_types-55.Signature, %libgit2_types-55.Signature, %..string, %..string}
%branch-35.Branch = type {%libgit2_types-55.Reference*, %libgit2_types-55.Reference*, %..string, i32, %commit-34.Commit, i64, i64}
%branch-35.Branch_Collection = type {%..string, {%branch-35.Branch*, i64, i64, %Allocator}}
%settings-36.Settings = type {%..string, %..string, %..string, %..string, i8, {%..string*, i64, i64, %Allocator}, i8, i8}
%state-38.State = type {i8, double, %..rawptr, %..rawptr, %..rawptr, %brew_imgui-23.State*, %msg-46.Msg, i64, i64, i8, %brew_imgui-23.FrameState, i8, i8, %misc-49.TimeData, i64, i64, i8, i8, i8, i8, i32, i32, i32, %..string, [256 x i8], [1024 x i8], [1024 x i8], i8, %log-33.Log, %status-39.Status, i8, [1024 x i8], [1024 x i8], [1024 x i8], [1024 x i8], [1024 x i8], [1024 x i8], i8, %..string, i32 (%libgit2_types-55.Cred**, i8*, i8*, i32, %..rawptr)*, %libgit2_types-55.Repository*, %..string, %libgit2_types-55.Status_List*, %branch-35.Branch, {%branch-35.Branch_Collection*, i64}, {%branch-35.Branch_Collection*, i64}, [513 x i8], [4097 x i8], %diff_view-37.Context*}
%diff_view-37.Context = type {%..string, %libgit2_types-55.Patch*, i64, i8}
%status-39.Status = type {%libgit2_types-55.Status_List*, {%libgit2_types-55.Status_Entry**, i64, i64, %Allocator}, {%libgit2_types-55.Status_Entry**, i64, i64, %Allocator}, {%libgit2_types-55.Status_Entry**, i64, i64, %Allocator}, %libgit2_types-55.Diff*}
%time_util-22.Timer = type {double, double}
%strconv-42.Int_Flag = type i64
%strconv-42.DecimalSlice = type {{i8*, i64}, i64, i64, i8}
%strconv-42.FloatInfo = type {i64, i64, i64}
%sync_windows-43.Mutex = type {%windows-15.Critical_Section}
%window-45.Window_Style = type i32
%msg-46.Msg = type {[0 x <8 x i8>], [16 x i8], i8}
%msg-46.MsgNotTranslated = type {}
%msg-46.MsgQuitMessage = type {i64}
%msg-46.MsgKey = type {i64, i8, i8}
%msg-46.MsgWindowFocus = type {i8}
%msg-46.MsgKeyboardFocus = type {i8}
%msg-46.MsgMouseMove = type {i64, i64}
%msg-46.MsgMouseButton = type {i64, i8, i8}
%msg-46.MsgSizeChange = type {i64, i64}
%msg-46.MsgChar = type {i32}
%msg-46.MsgMouseWheel = type {i64}
%misc-49.TimeData = type {i64, i64}
%misc-49.Week_Day = type i64
%misc-49.Month = type i64
%misc-49.Datetime = type {i64, i64, i64, i64, i64, i64, i64, i64}
%keys-47.VirtualKey = type i64
%math-51.Mat4 = type [4 x [4 x float]]
%dear_imgui-50.DrawIdx = type i16
%dear_imgui-50.Wchar = type i16
%dear_imgui-50.TextureID = type %..rawptr
%dear_imgui-50.Cstring = type i8*
%dear_imgui-50.Font = type {}
%dear_imgui-50.FontAtlas = type {}
%dear_imgui-50.DrawList = type {}
%dear_imgui-50.Vec2 = type {float, float}
%dear_imgui-50.Vec4 = type {float, float, float, float}
%dear_imgui-50.TextEditCallbackData = type {i32, i32, %..rawptr, i8, i16, i32, i8*, i32, i32, i8, i32, i32, i32}
%dear_imgui-50.DrawCmd = type {i32, %dear_imgui-50.Vec4, %..rawptr, void (%dear_imgui-50.DrawList*, %dear_imgui-50.DrawCmd*)*, %..rawptr}
%dear_imgui-50.DrawVert = type {%dear_imgui-50.Vec2, %dear_imgui-50.Vec2, i32}
%dear_imgui-50.DrawData = type {i8, %dear_imgui-50.DrawList**, i32, i32, i32}
%dear_imgui-50.FontConfig = type {%..rawptr, i32, i8, i32, float, i32, i32, i8, %dear_imgui-50.Vec2, %dear_imgui-50.Vec2, i16*, i8, i32, float, [32 x i8], %dear_imgui-50.Font*}
%dear_imgui-50.ListClipper = type {float, float, i32, i32, i32, i32}
%dear_imgui-50.Style = type {float, %dear_imgui-50.Vec2, float, float, %dear_imgui-50.Vec2, %dear_imgui-50.Vec2, float, float, float, float, %dear_imgui-50.Vec2, float, float, %dear_imgui-50.Vec2, %dear_imgui-50.Vec2, %dear_imgui-50.Vec2, float, float, float, float, float, float, %dear_imgui-50.Vec2, %dear_imgui-50.Vec2, %dear_imgui-50.Vec2, i8, i8, float, [43 x %dear_imgui-50.Vec4]}
%dear_imgui-50.IO = type {%dear_imgui-50.Vec2, float, float, i8*, i8*, float, float, float, [19 x i32], float, float, %..rawptr, %dear_imgui-50.FontAtlas*, float, i8, %dear_imgui-50.Font*, %dear_imgui-50.Vec2, %dear_imgui-50.Vec2, %dear_imgui-50.Vec2, i8, i8, void (%dear_imgui-50.DrawData*)*, i8* (%..rawptr)*, void (%..rawptr, i8*)*, %..rawptr, %..rawptr (i64)*, void (%..rawptr)*, void (i32, i32)*, %..rawptr, %dear_imgui-50.Vec2, [5 x i8], float, i8, i8, i8, i8, i8, [512 x i8], [17 x i16], i8, i8, i8, float, i32, i32, i32, i32, %dear_imgui-50.Vec2, %dear_imgui-50.Vec2, [5 x i8], [5 x %dear_imgui-50.Vec2], [5 x float], [5 x i8], [5 x i8], [5 x i8], [5 x float], [5 x float], [5 x %dear_imgui-50.Vec2], [5 x float], [512 x float], [512 x float]}
%dear_imgui-50.text_edit_callback = type i32 (%dear_imgui-50.TextEditCallbackData*)*
%dear_imgui-50.draw_callback = type void (%dear_imgui-50.DrawList*, %dear_imgui-50.DrawCmd*)*
%dear_imgui-50.Window_Flags = type i32
%dear_imgui-50.Input_Text_Flags = type i32
%dear_imgui-50.Hovered_Flags = type i32
%dear_imgui-50.Selectable_Flags = type i64
%dear_imgui-50.Key = type i32
%dear_imgui-50.Color = type i32
%dear_imgui-50.Mouse_Cursor = type i32
%dear_imgui-50.Set_Cond = type i32
%gl_enums-52.UniformTypes = type i32
%gl_enums-52.AttribTypes = type i32
%gl_enums-52.DebugSource = type i32
%gl_enums-52.DebugType = type i32
%gl_enums-52.DebugSeverity = type i32
%gl_enums-52.DrawModes = type i32
%gl_enums-52.DrawElementsType = type i32
%gl_enums-52.ShaderTypes = type i32
%gl_enums-52.BlendFactors = type i32
%gl_enums-52.BlendEquations = type i32
%gl_enums-52.Capabilities = type i32
%gl_enums-52.ClearFlags = type i32
%gl_enums-52.GetIntegerNames = type i32
%gl_enums-52.InternalColorFormat = type i32
%gl_enums-52.PixelDataFormat = type i32
%gl_enums-52.Texture2DDataType = type i32
%gl_enums-52.VertexAttribDataType = type i32
%gl_enums-52.TextureTargets = type i32
%gl_enums-52.TextureParameters = type i32
%gl_enums-52.TextureParametersValues = type i32
%gl_enums-52.TextureUnits = type i32
%gl_enums-52.BufferTargets = type i32
%gl_enums-52.BufferDataUsage = type i32
%gl_enums-52.PolygonFace = type i32
%gl_enums-52.PolygonModes = type i32
%libgit2_types-55.Repository = type {}
%libgit2_types-55.Remote = type {}
%libgit2_types-55.Tree = type {}
%libgit2_types-55.Index = type {}
%libgit2_types-55.Transport = type {}
%libgit2_types-55.Commit = type {}
%libgit2_types-55.Reference = type {}
%libgit2_types-55.Object = type {}
%libgit2_types-55.Revwalk = type {}
%libgit2_types-55.Branch_Iterator = type {}
%libgit2_types-55.Status_List = type {}
%libgit2_types-55.Diff = type {}
%libgit2_types-55.Patch = type {}
%libgit2_types-55.Oid = type {[20 x i8]}
%libgit2_types-55.Git_Signature = type {i8*, i8*, %libgit2_types-55.Time}
%libgit2_types-55.Signature = type {%libgit2_types-55.Git_Signature*, %..string, %..string, %libgit2_types-55.Time}
%libgit2_types-55.Git_Error = type {i8*, i32}
%libgit2_types-55.Error = type {%..string, i32}
%libgit2_types-55.Str_Array = type {i8**, i64}
%libgit2_types-55.Checkout_Perfdata = type {i32, i32, i32}
%libgit2_types-55.Cred = type {i32, void (%libgit2_types-55.Cred*)*}
%libgit2_types-55.Cert = type {i32}
%libgit2_types-55.Time = type {i64, i32, i8}
%libgit2_types-55.Stash_Apply_Options = type {i32, i32, %libgit2_types-55.Checkout_Options, i32 (i32, %..rawptr)*, %..rawptr}
%libgit2_types-55.Clone_Options = type {i32, %libgit2_types-55.Checkout_Options, %libgit2_types-55.Fetch_Options, i32, i32, i8*, i32 (%libgit2_types-55.Repository**, i8*, i32, %..rawptr)*, %..rawptr, i32 (%libgit2_types-55.Remote**, %libgit2_types-55.Repository*, i8*, i8*, %..rawptr)*, %..rawptr}
%libgit2_types-55.Checkout_Options = type {i32, i32, i32, i32, i32, i32, i32, i32 (i32, i8*, %libgit2_types-55.Diff_File*, %libgit2_types-55.Diff_File*, %libgit2_types-55.Diff_File*, %..rawptr)*, %..rawptr, void (i8*, i64, i64, %..rawptr)*, %..rawptr, %libgit2_types-55.Str_Array, %libgit2_types-55.Tree*, %libgit2_types-55.Index*, i8*, i8*, i8*, i8*, void (%libgit2_types-55.Checkout_Perfdata*, %..rawptr)*, %..rawptr}
%libgit2_types-55.Fetch_Options = type {i32, %libgit2_types-55.Remote_Callbacks, i32, i32, i32, %libgit2_types-55.Proxy_Options, %libgit2_types-55.Str_Array}
%libgit2_types-55.Push_Options = type {i32, i32, %libgit2_types-55.Remote_Callbacks, %libgit2_types-55.Proxy_Options, %libgit2_types-55.Str_Array}
%libgit2_types-55.Remote_Callbacks = type {i32, i32 (i8*, i32, %..rawptr)*, void (i32, %..rawptr)*, i32 (%libgit2_types-55.Cred**, i8*, i8*, i32, %..rawptr)*, i32 (%libgit2_types-55.Cert*, i32, i8*, %..rawptr)*, i32 (%libgit2_types-55.Transfer_Progress*, %..rawptr)*, i32 (i8*, %libgit2_types-55.Oid*, %libgit2_types-55.Oid*, %..rawptr)*, i32 (i32, i32, i32, %..rawptr)*, i32 (i32, i32, i64, %..rawptr)*, i32 (i8*, i8*, %..rawptr)*, i32 (%libgit2_types-55.Push_Update**, i64, %..rawptr)*, i32 (%libgit2_types-55.Transport**, %libgit2_types-55.Remote*, %..rawptr)*, %..rawptr}
%libgit2_types-55.Transfer_Progress = type {i32, i32, i32, i32, i32, i32, i64}
%libgit2_types-55.Push_Update = type {i8*, i8*, %libgit2_types-55.Oid, %libgit2_types-55.Oid}
%libgit2_types-55.Proxy_Options = type {i32, i32, i8*, i32 (%libgit2_types-55.Cred**, i8*, i8*, i32, %..rawptr)*, i32 (%libgit2_types-55.Cert*, i32, i8*, %..rawptr)*, %..rawptr}
%libgit2_types-55.Submodule_Ignore = type i32
%libgit2_types-55.Diff_Notify_Cb = type i32 (%libgit2_types-55.Diff*, %libgit2_types-55.Diff_Delta*, i8*, %..rawptr, %Context*)*
%libgit2_types-55.Diff_Progress_Cb = type i32 (%libgit2_types-55.Diff*, i8*, i8*, %..rawptr, %Context*)*
%libgit2_types-55.Diff_Hunk = type {i32, i32, i32, i32, i64, [128 x i8]}
%libgit2_types-55.Diff_Line = type {i8, i32, i32, i32, i64, i64, i8*}
%libgit2_types-55.Diff_Options = type {i32, i32, i32, %libgit2_types-55.Str_Array, i32 (%libgit2_types-55.Diff*, %libgit2_types-55.Diff_Delta*, i8*, %..rawptr, %Context*)*, i32 (%libgit2_types-55.Diff*, i8*, i8*, %..rawptr, %Context*)*, %..rawptr, i32, i32, i16, i64, i8*, i8*}
%libgit2_types-55.Diff_File = type {%libgit2_types-55.Oid, i8*, i64, i32, i16, i16}
%libgit2_types-55.Status_Options = type {i32, i32, i32, %libgit2_types-55.Str_Array}
%libgit2_types-55.Status_Entry = type {i32, %libgit2_types-55.Diff_Delta*, %libgit2_types-55.Diff_Delta*}
%libgit2_types-55.Diff_Delta = type {i32, i32, i16, i16, %libgit2_types-55.Diff_File, %libgit2_types-55.Diff_File}
%libgit2_types-55.Error_Code = type i32
%libgit2_types-55.Obj_Type = type i32
%libgit2_types-55.Cred_Type = type i32
%libgit2_types-55.Stash_Apply_Flags = type i32
%libgit2_types-55.Stash_Flags = type i32
%libgit2_types-55.Stash_Apply_Progress = type i32
%libgit2_types-55.Checkout_Strategy_Flags = type i32
%libgit2_types-55.Cert_Type = type i32
%libgit2_types-55.Fetch_Prune_Flags = type i32
%libgit2_types-55.Remote_Autotag_Option_Flags = type i32
%libgit2_types-55.Clone_Local_Flags = type i32
%libgit2_types-55.Proxy_Flags = type i32
%libgit2_types-55.Remote_Completion_Type = type i32
%libgit2_types-55.Checkout_Notify_Flags = type i32
%libgit2_types-55.ErrorType = type i32
%libgit2_types-55.Lib_Features = type i32
%libgit2_types-55.Repository_Open_Flags = type i32
%libgit2_types-55.Status_Flags = type i32
%libgit2_types-55.Direction = type i32
%libgit2_types-55.Status_Show_Flags = type i32
%libgit2_types-55.Delta = type i32
%libgit2_types-55.Diff_Flags = type i32
%libgit2_types-55.Status_Opt_Flags = type i32
%libgit2_types-55.Branch_Type = type i32
%libgit2_types-55.Stash_Apply_Progress_Cb = type i32 (i32, %..rawptr)*
%libgit2_types-55.Repository_Create_Cb = type i32 (%libgit2_types-55.Repository**, i8*, i32, %..rawptr)*
%libgit2_types-55.Remote_Create_Cb = type i32 (%libgit2_types-55.Remote**, %libgit2_types-55.Repository*, i8*, i8*, %..rawptr)*
%libgit2_types-55.Checkout_Notify_Cb = type i32 (i32, i8*, %libgit2_types-55.Diff_File*, %libgit2_types-55.Diff_File*, %libgit2_types-55.Diff_File*, %..rawptr)*
%libgit2_types-55.Checkout_Progress_Cb = type void (i8*, i64, i64, %..rawptr)*
%libgit2_types-55.Checkout_Perfdata_Cb = type void (%libgit2_types-55.Checkout_Perfdata*, %..rawptr)*
%libgit2_types-55.Transport_Message_Cb = type i32 (i8*, i32, %..rawptr)*
%libgit2_types-55.Transport_Certificate_Check_Cb = type i32 (%libgit2_types-55.Cert*, i32, i8*, %..rawptr)*
%libgit2_types-55.Cred_Acquire_Cb = type i32 (%libgit2_types-55.Cred**, i8*, i8*, i32, %..rawptr)*
%libgit2_types-55.Transfer_Progress_Cb = type i32 (%libgit2_types-55.Transfer_Progress*, %..rawptr)*
%libgit2_types-55.Packbuilder_Progress_Cb = type i32 (i32, i32, i32, %..rawptr)*
%libgit2_types-55.Push_Transfer_Progress_Cb = type i32 (i32, i32, i64, %..rawptr)*
%libgit2_types-55.Push_Negotiation_Cb = type i32 (%libgit2_types-55.Push_Update**, i64, %..rawptr)*
%libgit2_types-55.Transport_Cb = type i32 (%libgit2_types-55.Transport**, %libgit2_types-55.Remote*, %..rawptr)*
%cel-53.Array = type {%cel-53.Value*, i64}
%cel-53.Dict = type {{i64*, i64, i64, %Allocator}, {{%__Map_Key, i64, %cel-53.Value}*, i64, i64, %Allocator}}
%cel-53.Nil_Value = type {}
%cel-53.Value = type {[0 x <8 x i8>], [80 x i8], i8}
%cel-53.Parser = type {{%token-65.Token*, i64, i64, %Allocator}, %token-65.Token, %token-65.Token, i64, {%..string*, i64, i64, %Allocator}, i64, {{i64*, i64, i64, %Allocator}, {{%__Map_Key, i64, %cel-53.Value}*, i64, i64, %Allocator}}, {{{i64*, i64, i64, %Allocator}, {{%__Map_Key, i64, %cel-53.Value}*, i64, i64, %Allocator}}**, i64, i64, %Allocator}}
%opengl_wgl-62.Attrib = type {i32, i32}
%opengl_wgl-62.AccelerationArbValues = type i32
%opengl_wgl-62.PixelTypeArbValues = type i32
%opengl_wgl-62.ContextFlagsArbValues = type i32
%opengl_wgl-62.ContextProfileMaskArbValues = type i32
%opengl_wgl-62.CreateContextAttribsARB = type %..rawptr (%..rawptr, %..rawptr, i32*)*
%opengl_wgl-62.ChoosePixelFormatARB = type i32 (%..rawptr, i32*, float*, i32, i32*, i32*)*
%opengl_wgl-62.SwapIntervalEXT = type i8 (i32)*
%opengl_wgl-62.GetExtensionsStringARB = type i8* (%..rawptr)*
%decimal-58.Decimal = type {[384 x i8], i64, i64, i8, i8}
%wgl-61.Hglrc = type %..rawptr
%token-65.Kind = type i64
%token-65.Pos = type {%..string, i64, i64}
%token-65.Token = type {i64, %token-65.Pos, %..string}
%token-65.Tokenizer = type {{i8*, i64}, %..string, i32, i64, i64, i64, i64, i8, i64}
%main-0.do_async_fetch._payload-1215 = type {%libgit2_types-55.Repository*}
%main-0.do_async_push._payload-1216 = type {%libgit2_types-55.Repository*, {%branch-35.Branch*, i64}}
%strconv-42.format_digits.Buffer-1220 = type {{i8*, i64}, i64}
declare ccc void @llvm.assume(i1) #0
declare ccc void @llvm.debugtrap() #0
declare ccc void @llvm.trap() #0
declare ccc i64 @llvm.readcyclecounter() #0
declare ccc float @llvm.sqrt.f32(float) #0
declare ccc double @llvm.sqrt.f64(double) #0
declare ccc float @llvm.sin.f32(float) #0
declare ccc double @llvm.sin.f64(double) #0
declare ccc float @llvm.cos.f32(float) #0
declare ccc double @llvm.cos.f64(double) #0
declare ccc float @llvm.pow.f32(float, float) #0
declare ccc double @llvm.pow.f64(double, double) #0
declare ccc float @llvm.fmuladd.f32(float, float, float) #0
declare ccc double @llvm.fmuladd.f64(double, double, double) #0
declare cc 64 i32 @GetLastError() #0
declare cc 64 %..rawptr @GetModuleHandleA(i8*) #0
declare cc 64 i32 @QueryPerformanceFrequency(i64*) #0
declare cc 64 i32 @QueryPerformanceCounter(i64*) #0
declare cc 64 i32 @GetCurrentThreadId() #0
declare cc 64 void @GetSystemTimeAsFileTime(%windows-15.Filetime*) #0
declare cc 64 i32 @FileTimeToSystemTime(%windows-15.Filetime*, %windows-15.Systemtime*) #0
declare cc 64 i32 @CloseHandle(%..rawptr) #0
declare cc 64 %..rawptr @GetStdHandle(i32) #0
declare cc 64 %..rawptr @CreateFileA(i8*, i32, i32, %..rawptr, i32, i32, %..rawptr) #0
declare cc 64 i32 @ReadFile(%..rawptr, %..rawptr, i32, i32*, %..rawptr) #0
declare cc 64 i32 @WriteFile(%..rawptr, %..rawptr, i32, i32*, %..rawptr) #0
declare cc 64 i32 @GetFileSizeEx(%..rawptr, i64*) #0
declare cc 64 i32 @GetFileAttributesA(i8*) #0
declare cc 64 i32 @SetHandleInformation(%..rawptr, i32, i32) #0
declare cc 64 %..rawptr @HeapAlloc(%..rawptr, i32, i64) #0
declare cc 64 %..rawptr @HeapReAlloc(%..rawptr, i32, %..rawptr, i64) #0
declare cc 64 i32 @HeapFree(%..rawptr, i32, %..rawptr) #0
declare cc 64 %..rawptr @GetProcessHeap() #0
declare cc 64 %..rawptr @CreateThread(%windows-15.Security_Attributes*, i64, %..rawptr, %..rawptr, i32, i32*) #0
declare cc 64 i32 @ResumeThread(%..rawptr) #0
declare cc 64 void @InitializeCriticalSectionAndSpinCount(%windows-15.Critical_Section*, i32) #0
declare cc 64 void @EnterCriticalSection(%windows-15.Critical_Section*) #0
declare cc 64 void @LeaveCriticalSection(%windows-15.Critical_Section*) #0
declare cc 64 %..rawptr @LoadLibraryA(i8*) #0
declare cc 64 void @FreeLibrary(%..rawptr) #0
declare cc 64 %..rawptr @GetProcAddress(%..rawptr, i8*) #0
declare cc 64 i16 @RegisterClassExA(%windows-15.Wnd_Class_Ex_A*) #0
declare cc 64 %..rawptr @CreateWindowExA(i32, i8*, i8*, i32, i32, i32, i32, i32, %..rawptr, %..rawptr, %..rawptr, %..rawptr) #0
declare cc 64 i32 @TranslateMessage(%windows-15.Msg*) #0
declare cc 64 i64 @DispatchMessageA(%windows-15.Msg*) #0
declare cc 64 i32 @PeekMessageA(%windows-15.Msg*, %..rawptr, i32, i32, i32) #0
declare cc 64 i32 @PostMessageA(%..rawptr, i32, i32, i32) #0
declare cc 64 i64 @DefWindowProcA(%..rawptr, i32, i64, i64) #0
declare cc 64 i32 @AdjustWindowRect(%windows-15.Rect*, i32, i1) #0
declare cc 64 i32 @DestroyWindow(%..rawptr) #0
declare cc 64 i32 @DescribePixelFormat(%..rawptr, i32, i32, %windows-15.Pixel_Format_Descriptor*) #0
declare cc 64 %..rawptr @GetDC(%..rawptr) #0
declare cc 64 i32 @ReleaseDC(%..rawptr, %..rawptr) #0
declare cc 64 i32 @MapVirtualKeyA(i32, i32) #0
declare cc 64 i16 @GetAsyncKeyState(i32) #0
declare cc 64 %..rawptr @LoadCursorA(%..rawptr, i8*) #0
declare cc 64 %..rawptr @SetCursor(%..rawptr) #0
declare cc 64 i32 @SetPixelFormat(%..rawptr, i32, %windows-15.Pixel_Format_Descriptor*) #0
declare cc 64 i32 @ChoosePixelFormat(%..rawptr, %windows-15.Pixel_Format_Descriptor*) #0
declare cc 64 i32 @SwapBuffers(%..rawptr) #0
declare ccc %dear_imgui-50.IO* @igGetIO() #0
declare ccc %dear_imgui-50.Style* @igGetStyle() #0
declare ccc %dear_imgui-50.DrawData* @igGetDrawData() #0
declare ccc void @igNewFrame() #0
declare ccc void @igRender() #0
declare ccc void @igShowDemoWindow(i8*) #0
declare ccc i8 @igBegin(i8*, i8*, i32) #0
declare ccc void @igEnd() #0
declare ccc i8 @igBeginChild(i8*, i64, i1, i32) #0
declare ccc void @igEndChild() #0
declare ccc void @igGetContentRegionMax(%dear_imgui-50.Vec2*) #0
declare ccc void @igGetWindowPos(%dear_imgui-50.Vec2*) #0
declare ccc void @igSetNextWindowPos(i64, i32, i64) #0
declare ccc void @igSetNextWindowSize(i64, i32) #0
declare ccc void @igSetScrollHere(float) #0
declare ccc void @igSetKeyboardFocusHere(i32) #0
declare ccc void @igPushFont(%dear_imgui-50.Font*) #0
declare ccc void @igPopFont() #0
declare ccc void @igPushStyleColor(i32, %dear_imgui-50.Vec4*) #0
declare ccc void @igPopStyleColor(i32) #0
declare ccc void @igSeparator() #0
declare ccc void @igSameLine(float, float) #0
declare ccc void @igIndent(float) #0
declare ccc void @igUnindent(float) #0
declare ccc void @igColumns(i32, i8*, i1) #0
declare ccc void @igNextColumn() #0
declare ccc float @igSetColumnWidth(i32, float) #0
declare ccc void @igPushIDStr(i8*) #0
declare ccc void @igPushIDInt(i32) #0
declare ccc void @igPopID() #0
declare ccc void @igTextColored(%dear_imgui-50.Vec4*, i8*) #0
declare ccc void @igTextDisabled(i8*) #0
declare ccc void @igTextWrapped(i8*) #0
declare ccc void @igTextUnformatted(i8*, i8*) #0
declare ccc i8 @igButton(i8*, i64) #0
declare ccc i8 @igCheckbox(i8*, i8*) #0
declare ccc void @igProgressBar(float, %dear_imgui-50.Vec2*, i8*) #0
declare ccc i8 @igInputText(i8*, i8*, i64, i32, i32 (%dear_imgui-50.TextEditCallbackData*)*, %..rawptr) #0
declare ccc i8 @igInputTextMultiline(i8*, i8*, i64, i64, i32, i32 (%dear_imgui-50.TextEditCallbackData*)*, %..rawptr) #0
declare ccc i8 @igTreeNode(i8*) #0
declare ccc void @igTreePop() #0
declare ccc void @igSetNextTreeNodeOpen(i1, i32) #0
declare ccc i8 @igSelectable(i8*, i1, i64, i64) #0
declare ccc void @igBeginTooltip() #0
declare ccc void @igEndTooltip() #0
declare ccc i8 @igBeginMainMenuBar() #0
declare ccc void @igEndMainMenuBar() #0
declare ccc i8 @igBeginMenuBar() #0
declare ccc void @igEndMenuBar() #0
declare ccc i8 @igBeginMenu(i8*, i1) #0
declare ccc void @igEndMenu() #0
declare ccc i8 @igMenuItem(i8*, i8*, i1, i1) #0
declare ccc void @igOpenPopup(i8*) #0
declare ccc i8 @igBeginPopup(i8*) #0
declare ccc i8 @igBeginPopupModal(i8*, i8*, i32) #0
declare ccc i8 @igBeginPopupContextItem(i8*, i32) #0
declare ccc void @igEndPopup() #0
declare ccc void @igCloseCurrentPopup() #0
declare ccc i8 @igIsItemHovered(i32) #0
declare ccc i8 @igIsItemClicked(i32) #0
declare ccc i8 @igIsMouseDoubleClicked(i32) #0
declare ccc i32 @igGetMouseCursor() #0
declare ccc void @ImFontConfig_DefaultConstructor(%dear_imgui-50.FontConfig*) #0
declare ccc void @ImGuiIO_AddInputCharacter(i16) #0
declare ccc i8 @ImGuiListClipper_Step(%dear_imgui-50.ListClipper*) #0
declare ccc void @ImFontAtlas_GetTexDataAsRGBA32(%dear_imgui-50.FontAtlas*, i8**, i32*, i32*, i32*) #0
declare ccc void @ImFontAtlas_SetTexID(%dear_imgui-50.FontAtlas*, %..rawptr) #0
declare ccc %dear_imgui-50.Font* @ImFontAtlas_AddFontDefault(%dear_imgui-50.FontAtlas*, %dear_imgui-50.FontConfig*) #0
declare ccc %dear_imgui-50.Font* @ImFontAtlas_AddFontFromFileTTF(%dear_imgui-50.FontAtlas*, i8*, float, %dear_imgui-50.FontConfig*, i16*) #0
declare ccc i32 @ImDrawList_GetVertexBufferSize(%dear_imgui-50.DrawList*) #0
declare ccc %dear_imgui-50.DrawVert* @ImDrawList_GetVertexPtr(%dear_imgui-50.DrawList*, i32) #0
declare ccc i32 @ImDrawList_GetIndexBufferSize(%dear_imgui-50.DrawList*) #0
declare ccc i16* @ImDrawList_GetIndexPtr(%dear_imgui-50.DrawList*, i32) #0
declare ccc i32 @ImDrawList_GetCmdSize(%dear_imgui-50.DrawList*) #0
declare ccc %dear_imgui-50.DrawCmd* @ImDrawList_GetCmdPtr(%dear_imgui-50.DrawList*, i32) #0
declare cc 64 %libgit2_types-55.Git_Error* @giterr_last() #0
declare cc 64 i32 @git_libgit2_init() #0
declare cc 64 i32 @git_libgit2_shutdown() #0
declare cc 64 i32 @git_libgit2_features() #0
declare cc 64 void @git_libgit2_version(i32*, i32*, i32*) #0
declare cc 64 void @git_repository_free(%libgit2_types-55.Repository*) #0
declare cc 64 i32 @git_repository_open_ext(%libgit2_types-55.Repository**, i8*, i32, i8*) #0
declare cc 64 i32 @git_repository_head(%libgit2_types-55.Reference**, %libgit2_types-55.Repository*) #0
declare cc 64 i32 @git_repository_set_head(%libgit2_types-55.Repository*, i8*) #0
declare cc 64 i8* @git_repository_path(%libgit2_types-55.Repository*) #0
declare cc 64 i32 @git_repository_index(%libgit2_types-55.Index**, %libgit2_types-55.Repository*) #0
declare cc 64 i32 @git_clone(%libgit2_types-55.Repository**, i8*, i8*, %libgit2_types-55.Clone_Options*) #0
declare cc 64 i32 @git_clone_init_options(%libgit2_types-55.Clone_Options*, i32) #0
declare cc 64 i32 @git_status_list_new(%libgit2_types-55.Status_List**, %libgit2_types-55.Repository*, %libgit2_types-55.Status_Options*) #0
declare cc 64 void @git_status_list_free(%libgit2_types-55.Status_List*) #0
declare cc 64 i64 @git_status_list_entrycount(%libgit2_types-55.Status_List*) #0
declare cc 64 %libgit2_types-55.Status_Entry* @git_status_byindex(%libgit2_types-55.Status_List*, i64) #0
declare cc 64 i32 @git_commit_create(%libgit2_types-55.Oid*, %libgit2_types-55.Repository*, i8*, %libgit2_types-55.Git_Signature*, %libgit2_types-55.Git_Signature*, i8*, i8*, %libgit2_types-55.Tree*, i64, %libgit2_types-55.Commit**) #0
declare cc 64 void @git_commit_free(%libgit2_types-55.Commit*) #0
declare cc 64 i32 @git_commit_lookup(%libgit2_types-55.Commit**, %libgit2_types-55.Repository*, %libgit2_types-55.Oid*) #0
declare cc 64 i8* @git_commit_message(%libgit2_types-55.Commit*) #0
declare cc 64 %libgit2_types-55.Git_Signature* @git_commit_committer(%libgit2_types-55.Commit*) #0
declare cc 64 %libgit2_types-55.Git_Signature* @git_commit_author(%libgit2_types-55.Commit*) #0
declare cc 64 i8* @git_commit_summary(%libgit2_types-55.Commit*) #0
declare cc 64 i32 @git_signature_now(%libgit2_types-55.Git_Signature**, i8*, i8*) #0
declare cc 64 i32 @git_oid_equal(%libgit2_types-55.Oid*, %libgit2_types-55.Oid*) #0
declare cc 64 i32 @git_remote_lookup(%libgit2_types-55.Remote**, %libgit2_types-55.Repository*, i8*) #0
declare cc 64 i32 @git_remote_connect(%libgit2_types-55.Remote*, i32, %libgit2_types-55.Remote_Callbacks*, %libgit2_types-55.Proxy_Options*, %libgit2_types-55.Str_Array*) #0
declare cc 64 i32 @git_remote_init_callbacks(%libgit2_types-55.Remote_Callbacks*, i32) #0
declare cc 64 i32 @git_remote_fetch(%libgit2_types-55.Remote*, %libgit2_types-55.Str_Array*, %libgit2_types-55.Fetch_Options*, i8*) #0
declare cc 64 void @git_remote_free(%libgit2_types-55.Remote*) #0
declare cc 64 i32 @git_remote_push(%libgit2_types-55.Remote*, %libgit2_types-55.Str_Array*, %libgit2_types-55.Push_Options*) #0
declare cc 64 i8* @git_remote_name(%libgit2_types-55.Remote*) #0
declare cc 64 i32 @git_index_add_bypath(%libgit2_types-55.Index*, i8*) #0
declare cc 64 i32 @git_index_write(%libgit2_types-55.Index*) #0
declare cc 64 i32 @git_index_write_tree(%libgit2_types-55.Oid*, %libgit2_types-55.Index*) #0
declare cc 64 i32 @git_cred_userpass_plaintext_new(%libgit2_types-55.Cred**, i8*, i8*) #0
declare cc 64 i32 @git_cred_ssh_key_from_agent(%libgit2_types-55.Cred**, i8*) #0
declare cc 64 i32 @git_reset_default(%libgit2_types-55.Repository*, %libgit2_types-55.Object*, %libgit2_types-55.Str_Array*) #0
declare cc 64 i32 @git_reference_name_to_id(%libgit2_types-55.Oid*, %libgit2_types-55.Repository*, i8*) #0
declare cc 64 i8* @git_reference_name(%libgit2_types-55.Reference*) #0
declare cc 64 i32 @git_reference_peel(%libgit2_types-55.Object**, %libgit2_types-55.Reference*, i32) #0
declare cc 64 void @git_reference_free(%libgit2_types-55.Reference*) #0
declare cc 64 i32 @git_reference_is_branch(%libgit2_types-55.Reference*) #0
declare cc 64 i32 @git_object_lookup(%libgit2_types-55.Object**, %libgit2_types-55.Repository*, %libgit2_types-55.Oid*, i32) #0
declare cc 64 void @git_object_free(%libgit2_types-55.Object*) #0
declare cc 64 void @git_diff_free(%libgit2_types-55.Diff*) #0
declare cc 64 %libgit2_types-55.Diff_Delta* @git_diff_get_delta(%libgit2_types-55.Diff*, i64) #0
declare cc 64 i32 @git_diff_index_to_workdir(%libgit2_types-55.Diff**, %libgit2_types-55.Repository*, %libgit2_types-55.Index*, %libgit2_types-55.Diff_Options*) #0
declare cc 64 i64 @git_diff_num_deltas(%libgit2_types-55.Diff*) #0
declare cc 64 void @git_patch_free(%libgit2_types-55.Patch*) #0
declare cc 64 i32 @git_patch_from_diff(%libgit2_types-55.Patch**, %libgit2_types-55.Diff*, i64) #0
declare cc 64 i64 @git_patch_num_hunks(%libgit2_types-55.Patch*) #0
declare cc 64 i32 @git_patch_get_hunk(%libgit2_types-55.Diff_Hunk**, i64*, %libgit2_types-55.Patch*, i64) #0
declare cc 64 i32 @git_patch_get_line_in_hunk(%libgit2_types-55.Diff_Line**, %libgit2_types-55.Patch*, i64, i64) #0
declare cc 64 i32 @git_branch_create(%libgit2_types-55.Reference**, %libgit2_types-55.Repository*, i8*, %libgit2_types-55.Commit*, i32) #0
declare cc 64 i32 @git_branch_name(i8**, %libgit2_types-55.Reference*) #0
declare cc 64 i32 @git_branch_iterator_new(%libgit2_types-55.Branch_Iterator**, %libgit2_types-55.Repository*, i32) #0
declare cc 64 void @git_branch_iterator_free(%libgit2_types-55.Branch_Iterator*) #0
declare cc 64 i32 @git_branch_next(%libgit2_types-55.Reference**, i32*, %libgit2_types-55.Branch_Iterator*) #0
declare cc 64 i32 @git_branch_delete(%libgit2_types-55.Reference*) #0
declare cc 64 i32 @git_branch_is_checked_out(%libgit2_types-55.Reference*) #0
declare cc 64 i32 @git_branch_upstream(%libgit2_types-55.Reference**, %libgit2_types-55.Reference*) #0
declare cc 64 i32 @git_branch_set_upstream(%libgit2_types-55.Reference*, i8*) #0
declare cc 64 i32 @git_revparse_single(%libgit2_types-55.Object**, %libgit2_types-55.Repository*, i8*) #0
declare cc 64 i32 @git_checkout_tree(%libgit2_types-55.Repository*, %libgit2_types-55.Object*, %libgit2_types-55.Checkout_Options*) #0
declare cc 64 i32 @git_stash_save(%libgit2_types-55.Oid*, %libgit2_types-55.Repository*, %libgit2_types-55.Git_Signature*, i8*, i32) #0
declare cc 64 i32 @git_stash_pop(%libgit2_types-55.Repository*, i64, %libgit2_types-55.Stash_Apply_Options*) #0
declare cc 64 i32 @git_revwalk_new(%libgit2_types-55.Revwalk**, %libgit2_types-55.Repository*) #0
declare cc 64 i32 @git_revwalk_next(%libgit2_types-55.Oid*, %libgit2_types-55.Revwalk*) #0
declare cc 64 i32 @git_revwalk_push_ref(%libgit2_types-55.Revwalk*, i8*) #0
declare cc 64 void @git_revwalk_free(%libgit2_types-55.Revwalk*) #0
declare cc 64 i32 @git_fetch_init_options(%libgit2_types-55.Fetch_Options*, i32) #0
declare cc 64 i32 @git_stash_apply_init_options(%libgit2_types-55.Stash_Apply_Options*, i32) #0
declare cc 64 i32 @git_status_init_options(%libgit2_types-55.Status_Options*, i32) #0
declare cc 64 i32 @git_checkout_init_options(%libgit2_types-55.Checkout_Options*, i32) #0
declare cc 64 i32 @git_push_init_options(%libgit2_types-55.Push_Options*, i32) #0
declare cc 64 i32 @git_diff_init_options(%libgit2_types-55.Diff_Options*, i32) #0
declare cc 64 i32 @git_graph_ahead_behind(i64*, i64*, %libgit2_types-55.Repository*, %libgit2_types-55.Oid*, %libgit2_types-55.Oid*) #0
declare ccc %..rawptr @wglCreateContext(%..rawptr) #0
declare ccc i32 @wglMakeCurrent(%..rawptr, %..rawptr) #0
declare ccc %..rawptr @wglGetProcAddress(i8*) #0
declare ccc i32 @wglDeleteContext(%..rawptr) #0
declare ccc void @llvm.memset.p0i8.i64(%..rawptr, i8, i64, i32, i1) #0
declare ccc void @llvm.memmove.p0i8.p0i8.i64(%..rawptr, %..rawptr, i64, i32, i1) #0
declare ccc void @llvm.memcpy.p0i8.p0i8.i64(%..rawptr, %..rawptr, i64, i32, i1) #0
declare ccc float @llvm.fabs.f32(float) #0
declare ccc double @llvm.fabs.f64(double) #0
declare ccc float @llvm.minnum.f32(float, float) #0
declare ccc double @llvm.minnum.f64(double, double) #0
declare ccc float @llvm.maxnum.f32(float, float) #0
declare ccc double @llvm.maxnum.f64(double, double) #0
declare cc 64 i32 @GetFullPathNameA(i8*, i32, i8*, i8**) #0
define %Type_Info* @type_info_base(%Type_Info* %info, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %Type_Info*, align 16
%1 = alloca %Type_Info*, align 16
%2 = alloca %Type_Info_Named, align 16
%3 = alloca {[0 x <8 x i8>], [72 x i8], i8}, align 16
store %Type_Info* %info, %Type_Info** %0
; IfStmt
%4 = load %Type_Info*, %Type_Info** %0, align 8
%5 = icmp eq %Type_Info* %4, zeroinitializer
%6 = zext i1 %5 to i8
%7 = trunc i8 %6 to i1
br i1 %7, label %if.then-1, label %if.done-2
if.then-1:
; ReturnStmt
ret %Type_Info* zeroinitializer
if.done-2:
; base
%8 = load %Type_Info*, %Type_Info** %0, align 8
store %Type_Info* %8, %Type_Info** %1
; ForStmt
br label %for.body-3
for.body-3:
; TypeSwitchStmt
; SelectorExpr
%9 = load %Type_Info*, %Type_Info** %1, align 8
%10 = getelementptr inbounds %Type_Info, %Type_Info* %9, i64 0
%11 = getelementptr inbounds %Type_Info, %Type_Info* %10, i64 0, i32 2
%12 = load {[0 x <8 x i8>], [72 x i8], i8}, {[0 x <8 x i8>], [72 x i8], i8}* %11, align 8
; get union's tag
%13 = getelementptr inbounds {[0 x <8 x i8>], [72 x i8], i8}, {[0 x <8 x i8>], [72 x i8], i8}* %11, i64 0, i32 2 ; UnionTagPtr
%14 = load i8, i8* %13, align 1
%15 = bitcast {[0 x <8 x i8>], [72 x i8], i8}* %11 to %..rawptr
%16 = icmp eq i8 %14, 1
br i1 %16, label %typeswitch.body-5, label %typeswitch.next-4
typeswitch.next-4:
store {[0 x <8 x i8>], [72 x i8], i8} %12, {[0 x <8 x i8>], [72 x i8], i8}* %3
; break
; ReturnStmt
%17 = load %Type_Info*, %Type_Info** %1, align 8
ret %Type_Info* %17
typeswitch.body-5:
%18 = bitcast %..rawptr %15 to %Type_Info_Named*
%19 = load %Type_Info_Named, %Type_Info_Named* %18, align 8
store %Type_Info_Named %19, %Type_Info_Named* %2
; AssignStmt
; SelectorExpr
%20 = getelementptr inbounds %Type_Info_Named, %Type_Info_Named* %2, i64 0, i32 1
%21 = load %Type_Info*, %Type_Info** %20, align 8
store %Type_Info* %21, %Type_Info** %1
br label %for.body-3
}
define %Type_Info* @type_info_base_without_enum(%Type_Info* %info, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %Type_Info*, align 16
%1 = alloca %Type_Info*, align 16
%2 = alloca %Type_Info_Named, align 16
%3 = alloca %Type_Info_Enum, align 16
%4 = alloca {[0 x <8 x i8>], [72 x i8], i8}, align 16
store %Type_Info* %info, %Type_Info** %0
; IfStmt
%5 = load %Type_Info*, %Type_Info** %0, align 8
%6 = icmp eq %Type_Info* %5, zeroinitializer
%7 = zext i1 %6 to i8
%8 = trunc i8 %7 to i1
br i1 %8, label %if.then-1, label %if.done-2
if.then-1:
; ReturnStmt
ret %Type_Info* zeroinitializer
if.done-2:
; base
%9 = load %Type_Info*, %Type_Info** %0, align 8
store %Type_Info* %9, %Type_Info** %1
; ForStmt
br label %for.body-3
for.body-3:
; TypeSwitchStmt
; SelectorExpr
%10 = load %Type_Info*, %Type_Info** %1, align 8
%11 = getelementptr inbounds %Type_Info, %Type_Info* %10, i64 0
%12 = getelementptr inbounds %Type_Info, %Type_Info* %11, i64 0, i32 2
%13 = load {[0 x <8 x i8>], [72 x i8], i8}, {[0 x <8 x i8>], [72 x i8], i8}* %12, align 8
; get union's tag
%14 = getelementptr inbounds {[0 x <8 x i8>], [72 x i8], i8}, {[0 x <8 x i8>], [72 x i8], i8}* %12, i64 0, i32 2 ; UnionTagPtr
%15 = load i8, i8* %14, align 1
%16 = bitcast {[0 x <8 x i8>], [72 x i8], i8}* %12 to %..rawptr
%17 = icmp eq i8 %15, 1
br i1 %17, label %typeswitch.body-5, label %typeswitch.next-4
typeswitch.next-4:
%18 = icmp eq i8 %15, 17
br i1 %18, label %typeswitch.body-7, label %typeswitch.next-6
typeswitch.body-5:
%19 = bitcast %..rawptr %16 to %Type_Info_Named*
%20 = load %Type_Info_Named, %Type_Info_Named* %19, align 8
store %Type_Info_Named %20, %Type_Info_Named* %2
; AssignStmt
; SelectorExpr
%21 = getelementptr inbounds %Type_Info_Named, %Type_Info_Named* %2, i64 0, i32 1
%22 = load %Type_Info*, %Type_Info** %21, align 8
store %Type_Info* %22, %Type_Info** %1
br label %typeswitch.done-8
typeswitch.next-6:
store {[0 x <8 x i8>], [72 x i8], i8} %13, {[0 x <8 x i8>], [72 x i8], i8}* %4
; break
; ReturnStmt
%23 = load %Type_Info*, %Type_Info** %1, align 8
ret %Type_Info* %23
typeswitch.body-7:
%24 = bitcast %..rawptr %16 to %Type_Info_Enum*
%25 = load %Type_Info_Enum, %Type_Info_Enum* %24, align 8
store %Type_Info_Enum %25, %Type_Info_Enum* %3
; AssignStmt
; SelectorExpr
%26 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %3, i64 0, i32 0
%27 = load %Type_Info*, %Type_Info** %26, align 8
store %Type_Info* %27, %Type_Info** %1
br label %typeswitch.done-8
typeswitch.done-8:
br label %for.body-3
}
define %Source_Code_Location @make_source_code_location(%..string %file, i64 %line, i64 %column, %..string %procedure) alwaysinline #1 {
decls-0:
%0 = alloca %..string, align 16
%1 = alloca i64, align 16
%2 = alloca i64, align 16
%3 = alloca %..string, align 16
%4 = alloca %Source_Code_Location, align 16
store %..string %file, %..string* %0
store i64 %line, i64* %1
store i64 %column, i64* %2
store %..string %procedure, %..string* %3
; ReturnStmt
; CompoundLit
%5 = bitcast %Source_Code_Location* %4 to %..rawptr
%6 = call %..rawptr @__mem_zero(%..rawptr %5, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %4
store %Source_Code_Location {%..string zeroinitializer, i64 zeroinitializer, i64 zeroinitializer, %..string zeroinitializer}, %Source_Code_Location* %4
%7 = load %..string, %..string* %0, align 8
%8 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %4, i64 0, i32 0
store %..string %7, %..string* %8
%9 = load i64, i64* %1, align 8
%10 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %4, i64 0, i32 1
store i64 %9, i64* %10
%11 = load i64, i64* %2, align 8
%12 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %4, i64 0, i32 2
store i64 %11, i64* %12
%13 = load %..string, %..string* %3, align 8
%14 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %4, i64 0, i32 3
store %..string %13, %..string* %14
%15 = load %Source_Code_Location, %Source_Code_Location* %4, align 8
ret %Source_Code_Location %15
}
define void @__init_context_from_ptr(%Context* %c, %Context* %other) #0 {
decls-0:
%0 = alloca %Context*, align 16
%1 = alloca %Context*, align 16
store %Context* %c, %Context** %0
store %Context* %other, %Context** %1
; IfStmt
%2 = load %Context*, %Context** %0, align 8
%3 = icmp eq %Context* %2, zeroinitializer
%4 = zext i1 %3 to i8
%5 = trunc i8 %4 to i1
br i1 %5, label %if.then-1, label %if.done-2
if.then-1:
; ReturnStmt
ret void
if.done-2:
; AssignStmt
%6 = load %Context*, %Context** %0, align 8
%7 = getelementptr inbounds %Context, %Context* %6, i64 0
%8 = load %Context*, %Context** %1, align 8
%9 = getelementptr inbounds %Context, %Context* %8, i64 0
%10 = load %Context, %Context* %9, align 8
store %Context %10, %Context* %7
%11 = load %Context*, %Context** %0, align 8
call void @__init_context(%Context* %11)
ret void
}
define void @__init_context(%Context* %c) #0 {
decls-0:
%0 = alloca %Context*, align 16
%1 = alloca %Context, align 16
%2 = bitcast %Context* %1 to %..rawptr
%3 = call %..rawptr @__mem_zero(%..rawptr %2, i64 72)
store %Context zeroinitializer, %Context* %1
%4 = load %Context, %Context* @__ggv$0, align 8
store %Context %4, %Context* %1
%5 = getelementptr inbounds %Context, %Context* %1, i64 0, i32 0
%6 = call %Allocator @default_allocator(%Context* noalias nonnull %1)
store %Allocator %6, %Allocator* %5
store %Context* %c, %Context** %0
; IfStmt
%7 = load %Context*, %Context** %0, align 8
%8 = icmp eq %Context* %7, zeroinitializer
%9 = zext i1 %8 to i8
%10 = trunc i8 %9 to i1
br i1 %10, label %if.then-1, label %if.done-2
if.then-1:
; ReturnStmt
ret void
if.done-2:
; IfStmt
; SelectorExpr
; SelectorExpr
%11 = load %Context*, %Context** %0, align 8
%12 = getelementptr inbounds %Context, %Context* %11, i64 0
%13 = getelementptr inbounds %Context, %Context* %12, i64 0, i32 0
%14 = getelementptr inbounds %Allocator, %Allocator* %13, i64 0, i32 0
%15 = load %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)*, %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)** %14, align 8
%16 = icmp eq %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)* %15, zeroinitializer
%17 = zext i1 %16 to i8
%18 = trunc i8 %17 to i1
br i1 %18, label %if.then-3, label %if.done-4
if.then-3:
; AssignStmt
; SelectorExpr
%19 = load %Context*, %Context** %0, align 8
%20 = getelementptr inbounds %Context, %Context* %19, i64 0
%21 = getelementptr inbounds %Context, %Context* %20, i64 0, i32 0
%22 = call %Allocator @default_allocator(%Context* noalias nonnull %1)
store %Allocator %22, %Allocator* %21
br label %if.done-4
if.done-4:
; IfStmt
; SelectorExpr
%23 = load %Context*, %Context** %0, align 8
%24 = getelementptr inbounds %Context, %Context* %23, i64 0
%25 = getelementptr inbounds %Context, %Context* %24, i64 0, i32 1
%26 = load i64, i64* %25, align 8
%27 = icmp eq i64 %26, 0
%28 = zext i1 %27 to i8
%29 = trunc i8 %28 to i1
br i1 %29, label %if.then-5, label %if.done-6
if.then-5:
; AssignStmt
; SelectorExpr
%30 = load %Context*, %Context** %0, align 8
%31 = getelementptr inbounds %Context, %Context* %30, i64 0
%32 = getelementptr inbounds %Context, %Context* %31, i64 0, i32 1
; SelectorExpr
%33 = call i64 @os_windows-6.current_thread_id(%Context* noalias nonnull %1)
store i64 %33, i64* %32
br label %if.done-6
if.done-6:
ret void
}
define %..rawptr @alloc(i64 %size, i64 %alignment, %Source_Code_Location* %loc, %Context* noalias nonnull %__.context_ptr) alwaysinline #1 {
decls-0:
%0 = alloca i64, align 16
%1 = alloca i64, align 16
%2 = alloca %Allocator, align 16
%3 = alloca %Source_Code_Location, align 16
store i64 %size, i64* %0
store i64 %alignment, i64* %1
%4 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
; a
; SelectorExpr
%5 = getelementptr inbounds %Context, %Context* %__.context_ptr, i64 0, i32 0
%6 = load %Allocator, %Allocator* %5, align 8
store %Allocator %6, %Allocator* %2
; ReturnStmt
; SelectorExpr
%7 = getelementptr inbounds %Allocator, %Allocator* %2, i64 0, i32 0
%8 = load %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)*, %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)** %7, align 8
; SelectorExpr
%9 = getelementptr inbounds %Allocator, %Allocator* %2, i64 0, i32 1
%10 = load %..rawptr, %..rawptr* %9, align 8
%11 = load i64, i64* %0, align 8
%12 = load i64, i64* %1, align 8
%13 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
%14 = bitcast %Source_Code_Location* %3 to %..rawptr
%15 = call %..rawptr @__mem_zero(%..rawptr %14, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %3
store %Source_Code_Location %13, %Source_Code_Location* %3
%16 = call %..rawptr %8(%..rawptr %10, i8 0, i64 %11, i64 %12, %..rawptr zeroinitializer, i64 0, i64 0, %Source_Code_Location* %3, %Context* noalias nonnull %__.context_ptr)
ret %..rawptr %16
}
define void @free_ptr_with_allocator(%Allocator* %a, %..rawptr %ptr, %Source_Code_Location* %loc, %Context* noalias nonnull %__.context_ptr) alwaysinline #1 {
decls-0:
%0 = alloca %..rawptr, align 16
%1 = alloca %Source_Code_Location, align 16
%2 = load %Allocator, %Allocator* %a, align 8
store %..rawptr %ptr, %..rawptr* %0
%3 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
; IfStmt
%4 = load %..rawptr, %..rawptr* %0, align 8
%5 = icmp eq %..rawptr %4, zeroinitializer
%6 = zext i1 %5 to i8
%7 = trunc i8 %6 to i1
br i1 %7, label %if.then-1, label %if.done-2
if.then-1:
; ReturnStmt
ret void
if.done-2:
; IfStmt
; SelectorExpr
%8 = getelementptr inbounds %Allocator, %Allocator* %a, i64 0, i32 0
%9 = load %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)*, %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)** %8, align 8
%10 = icmp eq %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)* %9, zeroinitializer
%11 = zext i1 %10 to i8
%12 = trunc i8 %11 to i1
br i1 %12, label %if.then-3, label %if.done-4
if.then-3:
; ReturnStmt
ret void
if.done-4:
; SelectorExpr
%13 = getelementptr inbounds %Allocator, %Allocator* %a, i64 0, i32 0
%14 = load %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)*, %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)** %13, align 8
; SelectorExpr
%15 = getelementptr inbounds %Allocator, %Allocator* %a, i64 0, i32 1
%16 = load %..rawptr, %..rawptr* %15, align 8
%17 = load %..rawptr, %..rawptr* %0, align 8
%18 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
%19 = bitcast %Source_Code_Location* %1 to %..rawptr
%20 = call %..rawptr @__mem_zero(%..rawptr %19, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %1
store %Source_Code_Location %18, %Source_Code_Location* %1
%21 = call %..rawptr %14(%..rawptr %16, i8 1, i64 0, i64 0, %..rawptr %17, i64 0, i64 0, %Source_Code_Location* %1, %Context* noalias nonnull %__.context_ptr)
ret void
}
define void @free_ptr(%..rawptr %ptr, %Source_Code_Location* %loc, %Context* noalias nonnull %__.context_ptr) alwaysinline #1 {
decls-0:
%0 = alloca %..rawptr, align 16
%1 = alloca %Allocator, align 16
%2 = alloca %Source_Code_Location, align 16
store %..rawptr %ptr, %..rawptr* %0
%3 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
; SelectorExpr
%4 = getelementptr inbounds %Context, %Context* %__.context_ptr, i64 0, i32 0
%5 = load %Allocator, %Allocator* %4, align 8
%6 = load %..rawptr, %..rawptr* %0, align 8
%7 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$0, i64 0, i32 0), i64 51}, i64 302, i64 66, %..string {i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__str$1, i64 0, i32 0), i64 8})
%8 = bitcast %Allocator* %1 to %..rawptr
%9 = call %..rawptr @__mem_zero(%..rawptr %8, i64 16)
store %Allocator zeroinitializer, %Allocator* %1
store %Allocator %5, %Allocator* %1
%10 = bitcast %Source_Code_Location* %2 to %..rawptr
%11 = call %..rawptr @__mem_zero(%..rawptr %10, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %2
store %Source_Code_Location %7, %Source_Code_Location* %2
call void @free_ptr_with_allocator(%Allocator* %1, %..rawptr %6, %Source_Code_Location* %2, %Context* noalias nonnull %__.context_ptr)
ret void
}
define void @free_all(%Source_Code_Location* %loc, %Context* noalias nonnull %__.context_ptr) alwaysinline #1 {
decls-0:
%0 = alloca %Allocator, align 16
%1 = alloca %Source_Code_Location, align 16
%2 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
; a
; SelectorExpr
%3 = getelementptr inbounds %Context, %Context* %__.context_ptr, i64 0, i32 0
%4 = load %Allocator, %Allocator* %3, align 8
store %Allocator %4, %Allocator* %0
; SelectorExpr
%5 = getelementptr inbounds %Allocator, %Allocator* %0, i64 0, i32 0
%6 = load %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)*, %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)** %5, align 8
; SelectorExpr
%7 = getelementptr inbounds %Allocator, %Allocator* %0, i64 0, i32 1
%8 = load %..rawptr, %..rawptr* %7, align 8
%9 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
%10 = bitcast %Source_Code_Location* %1 to %..rawptr
%11 = call %..rawptr @__mem_zero(%..rawptr %10, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %1
store %Source_Code_Location %9, %Source_Code_Location* %1
%12 = call %..rawptr %6(%..rawptr %8, i8 2, i64 0, i64 0, %..rawptr zeroinitializer, i64 0, i64 0, %Source_Code_Location* %1, %Context* noalias nonnull %__.context_ptr)
ret void
}
define %..rawptr @resize(%..rawptr %ptr, i64 %old_size, i64 %new_size, i64 %alignment, %Source_Code_Location* %loc, %Context* noalias nonnull %__.context_ptr) alwaysinline #1 {
decls-0:
%0 = alloca %..rawptr, align 16
%1 = alloca i64, align 16
%2 = alloca i64, align 16
%3 = alloca i64, align 16
%4 = alloca %Allocator, align 16
%5 = alloca %Source_Code_Location, align 16
store %..rawptr %ptr, %..rawptr* %0
store i64 %old_size, i64* %1
store i64 %new_size, i64* %2
store i64 %alignment, i64* %3
%6 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
; a
; SelectorExpr
%7 = getelementptr inbounds %Context, %Context* %__.context_ptr, i64 0, i32 0
%8 = load %Allocator, %Allocator* %7, align 8
store %Allocator %8, %Allocator* %4
; ReturnStmt
; SelectorExpr
%9 = getelementptr inbounds %Allocator, %Allocator* %4, i64 0, i32 0
%10 = load %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)*, %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)** %9, align 8
; SelectorExpr
%11 = getelementptr inbounds %Allocator, %Allocator* %4, i64 0, i32 1
%12 = load %..rawptr, %..rawptr* %11, align 8
%13 = load i64, i64* %2, align 8
%14 = load i64, i64* %3, align 8
%15 = load %..rawptr, %..rawptr* %0, align 8
%16 = load i64, i64* %1, align 8
%17 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
%18 = bitcast %Source_Code_Location* %5 to %..rawptr
%19 = call %..rawptr @__mem_zero(%..rawptr %18, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %5
store %Source_Code_Location %17, %Source_Code_Location* %5
%20 = call %..rawptr %10(%..rawptr %12, i8 3, i64 %13, i64 %14, %..rawptr %15, i64 %16, i64 0, %Source_Code_Location* %5, %Context* noalias nonnull %__.context_ptr)
ret %..rawptr %20
}
define void @free_string(%..string %str, %Source_Code_Location* %loc, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %..string, align 16
%1 = alloca %Source_Code_Location, align 16
store %..string %str, %..string* %0
%2 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
; SelectorExpr
%3 = load %..string, %..string* %0, align 8
%4 = call i8* @raw-5.string_data-18664(%..string %3, %Context* noalias nonnull %__.context_ptr)
%5 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
%6 = bitcast i8* %4 to %..rawptr
%7 = bitcast %Source_Code_Location* %1 to %..rawptr
%8 = call %..rawptr @__mem_zero(%..rawptr %7, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %1
store %Source_Code_Location %5, %Source_Code_Location* %1
call void @free_ptr(%..rawptr %6, %Source_Code_Location* %1, %Context* noalias nonnull %__.context_ptr)
ret void
}
define %..rawptr @default_resize_align(%..rawptr %old_memory, i64 %old_size, i64 %new_size, i64 %alignment, %Source_Code_Location* %loc, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %..rawptr, align 16
%1 = alloca i64, align 16
%2 = alloca i64, align 16
%3 = alloca i64, align 16
%4 = alloca %Source_Code_Location, align 16
%5 = alloca %Source_Code_Location, align 16
%6 = alloca %..rawptr, align 16
%7 = alloca %Source_Code_Location, align 16
%8 = alloca %Source_Code_Location, align 16
store %..rawptr %old_memory, %..rawptr* %0
store i64 %old_size, i64* %1
store i64 %new_size, i64* %2
store i64 %alignment, i64* %3
%9 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
; IfStmt
%10 = load %..rawptr, %..rawptr* %0, align 8
%11 = icmp eq %..rawptr %10, zeroinitializer
%12 = zext i1 %11 to i8
%13 = trunc i8 %12 to i1
br i1 %13, label %if.then-1, label %if.done-2
if.then-1:
; ReturnStmt
%14 = load i64, i64* %2, align 8
%15 = load i64, i64* %3, align 8
%16 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
%17 = bitcast %Source_Code_Location* %4 to %..rawptr
%18 = call %..rawptr @__mem_zero(%..rawptr %17, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %4
store %Source_Code_Location %16, %Source_Code_Location* %4
%19 = call %..rawptr @alloc(i64 %14, i64 %15, %Source_Code_Location* %4, %Context* noalias nonnull %__.context_ptr)
ret %..rawptr %19
if.done-2:
; IfStmt
%20 = load i64, i64* %2, align 8
%21 = icmp eq i64 %20, 0
%22 = zext i1 %21 to i8
%23 = trunc i8 %22 to i1
br i1 %23, label %if.then-3, label %if.done-4
if.then-3:
%24 = load %..rawptr, %..rawptr* %0, align 8
%25 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
%26 = bitcast %Source_Code_Location* %5 to %..rawptr
%27 = call %..rawptr @__mem_zero(%..rawptr %26, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %5
store %Source_Code_Location %25, %Source_Code_Location* %5
call void @free_ptr(%..rawptr %24, %Source_Code_Location* %5, %Context* noalias nonnull %__.context_ptr)
; ReturnStmt
ret %..rawptr zeroinitializer
if.done-4:
; IfStmt
%28 = load i64, i64* %2, align 8
%29 = load i64, i64* %1, align 8
%30 = icmp eq i64 %28, %29
%31 = zext i1 %30 to i8
%32 = trunc i8 %31 to i1
br i1 %32, label %if.then-5, label %if.done-6
if.then-5:
; ReturnStmt
%33 = load %..rawptr, %..rawptr* %0, align 8
ret %..rawptr %33
if.done-6:
; new_memory
%34 = load i64, i64* %2, align 8
%35 = load i64, i64* %3, align 8
%36 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
%37 = bitcast %Source_Code_Location* %7 to %..rawptr
%38 = call %..rawptr @__mem_zero(%..rawptr %37, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %7
store %Source_Code_Location %36, %Source_Code_Location* %7
%39 = call %..rawptr @alloc(i64 %34, i64 %35, %Source_Code_Location* %7, %Context* noalias nonnull %__.context_ptr)
store %..rawptr %39, %..rawptr* %6
; IfStmt
%40 = load %..rawptr, %..rawptr* %6, align 8
%41 = icmp eq %..rawptr %40, zeroinitializer
%42 = zext i1 %41 to i8
%43 = trunc i8 %42 to i1
br i1 %43, label %if.then-7, label %if.done-8
if.then-7:
; ReturnStmt
ret %..rawptr zeroinitializer
if.done-8:
%44 = load %..rawptr, %..rawptr* %6, align 8
%45 = load %..rawptr, %..rawptr* %0, align 8
; min
%46 = load i64, i64* %2, align 8
%47 = load i64, i64* %1, align 8
%48 = icmp slt i64 %47, %46
%49 = select i1 %48, i64 %47, i64 %46
%50 = call %..rawptr @__mem_copy(%..rawptr %44, %..rawptr %45, i64 %49)
%51 = load %..rawptr, %..rawptr* %0, align 8
%52 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
%53 = bitcast %Source_Code_Location* %8 to %..rawptr
%54 = call %..rawptr @__mem_zero(%..rawptr %53, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %8
store %Source_Code_Location %52, %Source_Code_Location* %8
call void @free_ptr(%..rawptr %51, %Source_Code_Location* %8, %Context* noalias nonnull %__.context_ptr)
; ReturnStmt
%55 = load %..rawptr, %..rawptr* %6, align 8
ret %..rawptr %55
}
define %..rawptr @default_allocator_proc(%..rawptr %allocator_data, i8 %mode, i64 %size, i64 %alignment, %..rawptr %old_memory, i64 %old_size, i64 %flags, %Source_Code_Location* %loc, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %..rawptr, align 16
%1 = alloca i8, align 16
%2 = alloca i64, align 16
%3 = alloca i64, align 16
%4 = alloca %..rawptr, align 16
%5 = alloca i64, align 16
%6 = alloca i64, align 16
%7 = alloca %..rawptr, align 16
%8 = alloca %Source_Code_Location, align 16
store %..rawptr %allocator_data, %..rawptr* %0
store i8 %mode, i8* %1
store i64 %size, i64* %2
store i64 %alignment, i64* %3
store %..rawptr %old_memory, %..rawptr* %4
store i64 %old_size, i64* %5
store i64 %flags, i64* %6
%9 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
; SwitchStmt
%10 = load i8, i8* %1, align 1
%11 = icmp eq i8 %10, 0
br i1 %11, label %switch.case.body-2, label %switch.case.next-1
switch.case.next-1:
%12 = icmp eq i8 %10, 1
br i1 %12, label %switch.fall.body-4, label %switch.case.next-3
switch.case.body-2:
; ReturnStmt
; SelectorExpr
%13 = load i64, i64* %2, align 8
%14 = call %..rawptr @os_windows-6.heap_alloc(i64 %13, %Context* noalias nonnull %__.context_ptr)
ret %..rawptr %14
switch.case.next-3:
%15 = icmp eq i8 %10, 2
br i1 %15, label %switch.fall.body-6, label %switch.case.next-5
switch.fall.body-4:
; SelectorExpr
%16 = load %..rawptr, %..rawptr* %4, align 8
call void @os_windows-6.heap_free(%..rawptr %16, %Context* noalias nonnull %__.context_ptr)
; ReturnStmt
ret %..rawptr zeroinitializer
switch.case.next-5:
%17 = icmp eq i8 %10, 3
br i1 %17, label %switch.fall.body-8, label %switch.case.next-7
switch.fall.body-6:
br label %switch.done-9
switch.case.next-7:
br label %switch.done-9
switch.fall.body-8:
; ptr
; SelectorExpr
%18 = load %..rawptr, %..rawptr* %4, align 8
%19 = load i64, i64* %2, align 8
%20 = call %..rawptr @os_windows-6.heap_resize(%..rawptr %18, i64 %19, %Context* noalias nonnull %__.context_ptr)
store %..rawptr %20, %..rawptr* %7
%21 = load %..rawptr, %..rawptr* %7, align 8
%22 = icmp ne %..rawptr %21, zeroinitializer
%23 = zext i1 %22 to i8
%24 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$2, i64 0, i32 0), i64 51}, i64 569, i64 3, %..string {i8* getelementptr inbounds ([23 x i8], [23 x i8]* @__str$3, i64 0, i32 0), i64 22})
%25 = trunc i8 %23 to i1
%26 = bitcast %Source_Code_Location* %8 to %..rawptr
%27 = call %..rawptr @__mem_zero(%..rawptr %26, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %8
store %Source_Code_Location %24, %Source_Code_Location* %8
%28 = call i8 @assert(i1 %25, %..string zeroinitializer, %Source_Code_Location* %8)
; ReturnStmt
%29 = load %..rawptr, %..rawptr* %7, align 8
ret %..rawptr %29
switch.done-9:
; ReturnStmt
ret %..rawptr zeroinitializer
}
define %Allocator @default_allocator(%Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %Allocator, align 16
; ReturnStmt
; CompoundLit
%1 = bitcast %Allocator* %0 to %..rawptr
%2 = call %..rawptr @__mem_zero(%..rawptr %1, i64 16)
store %Allocator zeroinitializer, %Allocator* %0
store %Allocator {%..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)* zeroinitializer, %..rawptr zeroinitializer}, %Allocator* %0
%3 = bitcast %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)* @default_allocator_proc to %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)*
%4 = getelementptr inbounds %Allocator, %Allocator* %0, i64 0, i32 0
store %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)* %3, %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)** %4
%5 = getelementptr inbounds %Allocator, %Allocator* %0, i64 0, i32 1
store %..rawptr zeroinitializer, %..rawptr* %5
%6 = load %Allocator, %Allocator* %0, align 8
ret %Allocator %6
}
define %..rawptr @nil_allocator_proc(%..rawptr %allocator_data, i8 %mode, i64 %size, i64 %alignment, %..rawptr %old_memory, i64 %old_size, i64 %flags, %Source_Code_Location* %loc, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %..rawptr, align 16
%1 = alloca i8, align 16
%2 = alloca i64, align 16
%3 = alloca i64, align 16
%4 = alloca %..rawptr, align 16
%5 = alloca i64, align 16
%6 = alloca i64, align 16
store %..rawptr %allocator_data, %..rawptr* %0
store i8 %mode, i8* %1
store i64 %size, i64* %2
store i64 %alignment, i64* %3
store %..rawptr %old_memory, %..rawptr* %4
store i64 %old_size, i64* %5
store i64 %flags, i64* %6
%7 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
; ReturnStmt
ret %..rawptr zeroinitializer
}
define %Allocator @nil_allocator(%Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %Allocator, align 16
; ReturnStmt
; CompoundLit
%1 = bitcast %Allocator* %0 to %..rawptr
%2 = call %..rawptr @__mem_zero(%..rawptr %1, i64 16)
store %Allocator zeroinitializer, %Allocator* %0
store %Allocator {%..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)* zeroinitializer, %..rawptr zeroinitializer}, %Allocator* %0
%3 = bitcast %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)* @nil_allocator_proc to %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)*
%4 = getelementptr inbounds %Allocator, %Allocator* %0, i64 0, i32 0
store %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)* %3, %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)** %4
%5 = getelementptr inbounds %Allocator, %Allocator* %0, i64 0, i32 1
store %..rawptr zeroinitializer, %..rawptr* %5
%6 = load %Allocator, %Allocator* %0, align 8
ret %Allocator %6
}
define void @__print_u64(i64 %fd, i64 %u, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca i64, align 16
%1 = alloca i64, align 16
%2 = alloca %..string, align 16
%3 = alloca [129 x i8], align 16
%4 = alloca i64, align 16
%5 = alloca i64, align 16
%6 = alloca {i8*, i64}, align 16
%7 = alloca {i8*, i64}, align 16
store i64 %fd, i64* %0
store i64 %u, i64* %1
; digits
store %..string {i8* getelementptr inbounds ([11 x i8], [11 x i8]* @__str$4, i64 0, i32 0), i64 10}, %..string* %2
; a
%8 = bitcast [129 x i8]* %3 to %..rawptr
%9 = call %..rawptr @__mem_zero(%..rawptr %8, i64 129)
store [129 x i8] zeroinitializer, [129 x i8]* %3
; i
store i64 129, i64* %4
; b
store i64 10, i64* %5
; ForStmt
br label %for.loop-1
for.loop-1:
%10 = load i64, i64* %1, align 8
%11 = load i64, i64* %5, align 8
%12 = icmp uge i64 %10, %11
%13 = zext i1 %12 to i8
%14 = trunc i8 %13 to i1
br i1 %14, label %for.body-2, label %for.done-3
for.body-2:
; AssignStmt
%15 = load i64, i64* %4, align 8
%16 = sub i64 %15, 1
store i64 %16, i64* %4
; AssignStmt
; IndexExpr
%17 = load i64, i64* %4, align 8
%18 = trunc i64 %17 to i32
%19 = getelementptr inbounds [129 x i8], [129 x i8]* %3, i64 0, i32 %18
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$5, i64 0, i32 0), i64 51}, i64 604, i64 13, i64 %17, i64 129)
; IndexExpr
%20 = load %..string, %..string* %2, align 8
%21 = extractvalue %..string %20, 0
%22 = extractvalue %..string %20, 1
%23 = load i64, i64* %1, align 8
%24 = load i64, i64* %5, align 8
%25 = urem i64 %23, %24
%26 = bitcast i64 %25 to i64
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$6, i64 0, i32 0), i64 51}, i64 604, i64 25, i64 %26, i64 %22)
%27 = getelementptr inbounds i8, i8* %21, i64 %26
%28 = load i8, i8* %27, align 1
store i8 %28, i8* %19
; AssignStmt
%29 = load i64, i64* %5, align 8
%30 = load i64, i64* %1, align 8
%31 = udiv i64 %30, %29
store i64 %31, i64* %1
br label %for.loop-1
for.done-3:
; AssignStmt
%32 = load i64, i64* %4, align 8
%33 = sub i64 %32, 1
store i64 %33, i64* %4
; AssignStmt
; IndexExpr
%34 = load i64, i64* %4, align 8
%35 = trunc i64 %34 to i32
%36 = getelementptr inbounds [129 x i8], [129 x i8]* %3, i64 0, i32 %35
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$7, i64 0, i32 0), i64 51}, i64 607, i64 12, i64 %34, i64 129)
; IndexExpr
%37 = load %..string, %..string* %2, align 8
%38 = extractvalue %..string %37, 0
%39 = extractvalue %..string %37, 1
%40 = load i64, i64* %1, align 8
%41 = load i64, i64* %5, align 8
%42 = urem i64 %40, %41
%43 = bitcast i64 %42 to i64
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$8, i64 0, i32 0), i64 51}, i64 607, i64 24, i64 %43, i64 %39)
%44 = getelementptr inbounds i8, i8* %38, i64 %43
%45 = load i8, i8* %44, align 1
store i8 %45, i8* %36
; SelectorExpr
%46 = load i64, i64* %0, align 8
; SliceExpr
%47 = load i64, i64* %4, align 8
%48 = load [129 x i8], [129 x i8]* %3, align 1
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$9, i64 0, i32 0), i64 51}, i64 609, i64 16, i64 %47, i64 129, i64 129)
%49 = getelementptr inbounds [129 x i8], [129 x i8]* %3, i64 0, i32 0
%50 = getelementptr inbounds i8, i8* %49, i64 %47
%51 = sub i64 129, %47
%52 = bitcast {i8*, i64}* %6 to %..rawptr
%53 = call %..rawptr @__mem_zero(%..rawptr %52, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %6
%54 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %6, i64 0, i32 0
store i8* %50, i8** %54
%55 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %6, i64 0, i32 1
store i64 %51, i64* %55
%56 = load {i8*, i64}, {i8*, i64}* %6, align 8
%57 = bitcast {i8*, i64}* %7 to %..rawptr
%58 = call %..rawptr @__mem_zero(%..rawptr %57, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %7
store {i8*, i64} %56, {i8*, i64}* %7
%59 = call {i64, i64} @os_windows-6.write(i64 %46, {i8*, i64}* %7, %Context* noalias nonnull %__.context_ptr)
ret void
}
define void @__print_i64(i64 %fd, i64 %u, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca i64, align 16
%1 = alloca i64, align 16
%2 = alloca %..string, align 16
%3 = alloca i8, align 16
%4 = alloca [129 x i8], align 16
%5 = alloca i64, align 16
%6 = alloca i64, align 16
%7 = alloca {i8*, i64}, align 16
%8 = alloca {i8*, i64}, align 16
store i64 %fd, i64* %0
store i64 %u, i64* %1
; digits
store %..string {i8* getelementptr inbounds ([11 x i8], [11 x i8]* @__str$a, i64 0, i32 0), i64 10}, %..string* %2
; neg
%9 = load i64, i64* %1, align 8
%10 = icmp slt i64 %9, 0
%11 = zext i1 %10 to i8
store i8 %11, i8* %3
; AssignStmt
; abs
%12 = load i64, i64* %1, align 8
%13 = icmp slt i64 %12, 0
%14 = sub i64 0, %12
%15 = select i1 %13, i64 %14, i64 %12
store i64 %15, i64* %1
; a
%16 = bitcast [129 x i8]* %4 to %..rawptr
%17 = call %..rawptr @__mem_zero(%..rawptr %16, i64 129)
store [129 x i8] zeroinitializer, [129 x i8]* %4
; i
store i64 129, i64* %5
; b
store i64 10, i64* %6
; ForStmt
br label %for.loop-1
for.loop-1:
%18 = load i64, i64* %1, align 8
%19 = load i64, i64* %6, align 8
%20 = icmp sge i64 %18, %19
%21 = zext i1 %20 to i8
%22 = trunc i8 %21 to i1
br i1 %22, label %for.body-2, label %for.done-3
for.body-2:
; AssignStmt
%23 = load i64, i64* %5, align 8
%24 = sub i64 %23, 1
store i64 %24, i64* %5
; AssignStmt
; IndexExpr
%25 = load i64, i64* %5, align 8
%26 = trunc i64 %25 to i32
%27 = getelementptr inbounds [129 x i8], [129 x i8]* %4, i64 0, i32 %26
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$b, i64 0, i32 0), i64 51}, i64 622, i64 13, i64 %25, i64 129)
; IndexExpr
%28 = load %..string, %..string* %2, align 8
%29 = extractvalue %..string %28, 0
%30 = extractvalue %..string %28, 1
%31 = load i64, i64* %1, align 8
%32 = load i64, i64* %6, align 8
%33 = srem i64 %31, %32
%34 = bitcast i64 %33 to i64
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$c, i64 0, i32 0), i64 51}, i64 622, i64 25, i64 %34, i64 %30)
%35 = getelementptr inbounds i8, i8* %29, i64 %34
%36 = load i8, i8* %35, align 1
store i8 %36, i8* %27
; AssignStmt
%37 = load i64, i64* %6, align 8
%38 = load i64, i64* %1, align 8
%39 = sdiv i64 %38, %37
store i64 %39, i64* %1
br label %for.loop-1
for.done-3:
; AssignStmt
%40 = load i64, i64* %5, align 8
%41 = sub i64 %40, 1
store i64 %41, i64* %5
; AssignStmt
; IndexExpr
%42 = load i64, i64* %5, align 8
%43 = trunc i64 %42 to i32
%44 = getelementptr inbounds [129 x i8], [129 x i8]* %4, i64 0, i32 %43
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$d, i64 0, i32 0), i64 51}, i64 625, i64 12, i64 %42, i64 129)
; IndexExpr
%45 = load %..string, %..string* %2, align 8
%46 = extractvalue %..string %45, 0
%47 = extractvalue %..string %45, 1
%48 = load i64, i64* %1, align 8
%49 = load i64, i64* %6, align 8
%50 = srem i64 %48, %49
%51 = bitcast i64 %50 to i64
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$e, i64 0, i32 0), i64 51}, i64 625, i64 24, i64 %51, i64 %47)
%52 = getelementptr inbounds i8, i8* %46, i64 %51
%53 = load i8, i8* %52, align 1
store i8 %53, i8* %44
; IfStmt
%54 = load i8, i8* %3, align 1
%55 = trunc i8 %54 to i1
br i1 %55, label %if.then-4, label %if.done-5
if.then-4:
; AssignStmt
%56 = load i64, i64* %5, align 8
%57 = sub i64 %56, 1
store i64 %57, i64* %5
; AssignStmt
; IndexExpr
%58 = load i64, i64* %5, align 8
%59 = trunc i64 %58 to i32
%60 = getelementptr inbounds [129 x i8], [129 x i8]* %4, i64 0, i32 %59
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$f, i64 0, i32 0), i64 51}, i64 627, i64 13, i64 %58, i64 129)
store i8 45, i8* %60
br label %if.done-5
if.done-5:
; SelectorExpr
%61 = load i64, i64* %0, align 8
; SliceExpr
%62 = load i64, i64* %5, align 8
%63 = load [129 x i8], [129 x i8]* %4, align 1
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$10, i64 0, i32 0), i64 51}, i64 630, i64 16, i64 %62, i64 129, i64 129)
%64 = getelementptr inbounds [129 x i8], [129 x i8]* %4, i64 0, i32 0
%65 = getelementptr inbounds i8, i8* %64, i64 %62
%66 = sub i64 129, %62
%67 = bitcast {i8*, i64}* %7 to %..rawptr
%68 = call %..rawptr @__mem_zero(%..rawptr %67, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %7
%69 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %7, i64 0, i32 0
store i8* %65, i8** %69
%70 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %7, i64 0, i32 1
store i64 %66, i64* %70
%71 = load {i8*, i64}, {i8*, i64}* %7, align 8
%72 = bitcast {i8*, i64}* %8 to %..rawptr
%73 = call %..rawptr @__mem_zero(%..rawptr %72, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %8
store {i8*, i64} %71, {i8*, i64}* %8
%74 = call {i64, i64} @os_windows-6.write(i64 %61, {i8*, i64}* %8, %Context* noalias nonnull %__.context_ptr)
ret void
}
define void @__print_caller_location(i64 %fd, %Source_Code_Location* %loc, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca i64, align 16
store i64 %fd, i64* %0
%1 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
; SelectorExpr
%2 = load i64, i64* %0, align 8
%3 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %loc, i64 0, i32 0
%4 = load %..string, %..string* %3, align 8
%5 = call {i64, i64} @os-3.write_string(i64 %2, %..string %4, %Context* noalias nonnull %__.context_ptr)
; SelectorExpr
%6 = load i64, i64* %0, align 8
%7 = call {i64, i64} @os-3.write_byte(i64 %6, i8 40, %Context* noalias nonnull %__.context_ptr)
%8 = load i64, i64* %0, align 8
%9 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %loc, i64 0, i32 1
%10 = load i64, i64* %9, align 8
%11 = bitcast i64 %10 to i64
call void @__print_u64(i64 %8, i64 %11, %Context* noalias nonnull %__.context_ptr)
; SelectorExpr
%12 = load i64, i64* %0, align 8
%13 = call {i64, i64} @os-3.write_byte(i64 %12, i8 58, %Context* noalias nonnull %__.context_ptr)
%14 = load i64, i64* %0, align 8
%15 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %loc, i64 0, i32 2
%16 = load i64, i64* %15, align 8
%17 = bitcast i64 %16 to i64
call void @__print_u64(i64 %14, i64 %17, %Context* noalias nonnull %__.context_ptr)
; SelectorExpr
%18 = load i64, i64* %0, align 8
%19 = call {i64, i64} @os-3.write_byte(i64 %18, i8 41, %Context* noalias nonnull %__.context_ptr)
ret void
}
define void @__print_type(i64 %fd, %Type_Info* %ti, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca i64, align 16
%1 = alloca %Type_Info*, align 16
%2 = alloca %Type_Info_Named, align 16
%3 = alloca %Type_Info_Integer, align 16
%4 = alloca %..any, align 16
%5 = alloca %..any, align 16
%6 = alloca i64, align 16
%7 = alloca i64, align 16
%8 = alloca i64, align 16
%9 = alloca %..any, align 16
%10 = alloca %Type_Info_Rune, align 16
%11 = alloca %Type_Info_Float, align 16
%12 = alloca %Type_Info_Complex, align 16
%13 = alloca %Type_Info_String, align 16
%14 = alloca %Type_Info_Boolean, align 16
%15 = alloca %..any, align 16
%16 = alloca %..any, align 16
%17 = alloca i8, align 16
%18 = alloca %..any, align 16
%19 = alloca %Type_Info_Any, align 16
%20 = alloca %Type_Info_Pointer, align 16
%21 = alloca %Type_Info_Procedure, align 16
%22 = alloca %Type_Info_Tuple, align 16
%23 = alloca {%Type_Info_Tuple, i8}, align 16
%24 = alloca %Type_Info*, align 16
%25 = alloca i64, align 16
%26 = alloca i64, align 16
%27 = alloca i64, align 16
%28 = alloca %Type_Info_Tuple, align 16
%29 = alloca i64, align 16
%30 = alloca %..string, align 16
%31 = alloca i64, align 16
%32 = alloca i64, align 16
%33 = alloca i64, align 16
%34 = alloca %Type_Info*, align 16
%35 = alloca %Type_Info_Array, align 16
%36 = alloca %Type_Info_Dynamic_Array, align 16
%37 = alloca %Type_Info_Slice, align 16
%38 = alloca %Type_Info_Map, align 16
%39 = alloca %Type_Info_Struct, align 16
%40 = alloca %..string, align 16
%41 = alloca i64, align 16
%42 = alloca i64, align 16
%43 = alloca i64, align 16
%44 = alloca %Type_Info_Union, align 16
%45 = alloca %Type_Info*, align 16
%46 = alloca i64, align 16
%47 = alloca i64, align 16
%48 = alloca i64, align 16
%49 = alloca %Type_Info_Enum, align 16
%50 = alloca %..string, align 16
%51 = alloca i64, align 16
%52 = alloca i64, align 16
%53 = alloca i64, align 16
%54 = alloca %Type_Info_Bit_Field, align 16
%55 = alloca %..string, align 16
%56 = alloca i64, align 16
%57 = alloca i64, align 16
%58 = alloca i64, align 16
store i64 %fd, i64* %0
store %Type_Info* %ti, %Type_Info** %1
; IfStmt
%59 = load %Type_Info*, %Type_Info** %1, align 8
%60 = icmp eq %Type_Info* %59, zeroinitializer
%61 = zext i1 %60 to i8
%62 = trunc i8 %61 to i1
br i1 %62, label %if.then-1, label %if.done-2
if.then-1:
; SelectorExpr
%63 = load i64, i64* %0, align 8
%64 = call {i64, i64} @os-3.write_string(i64 %63, %..string {i8* getelementptr inbounds ([4 x i8], [4 x i8]* @__str$11, i64 0, i32 0), i64 3}, %Context* noalias nonnull %__.context_ptr)
; ReturnStmt
ret void
if.done-2:
; TypeSwitchStmt
; SelectorExpr
%65 = load %Type_Info*, %Type_Info** %1, align 8
%66 = getelementptr inbounds %Type_Info, %Type_Info* %65, i64 0
%67 = getelementptr inbounds %Type_Info, %Type_Info* %66, i64 0, i32 2
%68 = load {[0 x <8 x i8>], [72 x i8], i8}, {[0 x <8 x i8>], [72 x i8], i8}* %67, align 8
; get union's tag
%69 = getelementptr inbounds {[0 x <8 x i8>], [72 x i8], i8}, {[0 x <8 x i8>], [72 x i8], i8}* %67, i64 0, i32 2 ; UnionTagPtr
%70 = load i8, i8* %69, align 1
%71 = bitcast {[0 x <8 x i8>], [72 x i8], i8}* %67 to %..rawptr
%72 = icmp eq i8 %70, 1
br i1 %72, label %typeswitch.body-4, label %typeswitch.next-3
typeswitch.next-3:
%73 = icmp eq i8 %70, 2
br i1 %73, label %typeswitch.body-6, label %typeswitch.next-5
typeswitch.body-4:
%74 = bitcast %..rawptr %71 to %Type_Info_Named*
%75 = load %Type_Info_Named, %Type_Info_Named* %74, align 8
store %Type_Info_Named %75, %Type_Info_Named* %2
; SelectorExpr
%76 = load i64, i64* %0, align 8
; SelectorExpr
%77 = getelementptr inbounds %Type_Info_Named, %Type_Info_Named* %2, i64 0, i32 0
%78 = load %..string, %..string* %77, align 8
%79 = call {i64, i64} @os-3.write_string(i64 %76, %..string %78, %Context* noalias nonnull %__.context_ptr)
br label %typeswitch.done-108
typeswitch.next-5:
%80 = icmp eq i8 %70, 3
br i1 %80, label %typeswitch.body-18, label %typeswitch.next-17
typeswitch.body-6:
%81 = bitcast %..rawptr %71 to %Type_Info_Integer*
%82 = load %Type_Info_Integer, %Type_Info_Integer* %81, align 1
store %Type_Info_Integer %82, %Type_Info_Integer* %3
; a
; CompoundLit
%83 = bitcast %..any* %5 to %..rawptr
%84 = call %..rawptr @__mem_zero(%..rawptr %83, i64 16)
store %..any zeroinitializer, %..any* %5
store %..any zeroinitializer, %..any* %5
%85 = load %Type_Info*, %Type_Info** %1, align 8
%86 = getelementptr inbounds %..any, %..any* %5, i64 0, i32 1
store %Type_Info* %85, %Type_Info** %86
%87 = load %..any, %..any* %5, align 8
store %..any %87, %..any* %4
; TypeSwitchStmt
%88 = load %..any, %..any* %4, align 8
%89 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 1
%90 = load %Type_Info*, %Type_Info** %89, align 8
%91 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 6
%92 = icmp eq %Type_Info* %90, %91
br i1 %92, label %typeswitch.body-8, label %typeswitch.next-7
typeswitch.next-7:
%93 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 1
%94 = load %Type_Info*, %Type_Info** %93, align 8
%95 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 72
%96 = icmp eq %Type_Info* %94, %95
br i1 %96, label %typeswitch.body-10, label %typeswitch.next-9
typeswitch.body-8:
%97 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 0
%98 = load %..rawptr, %..rawptr* %97, align 8
%99 = bitcast %..rawptr %98 to i64*
%100 = load i64, i64* %99, align 8
store i64 %100, i64* %6
; SelectorExpr
%101 = load i64, i64* %0, align 8
%102 = call {i64, i64} @os-3.write_string(i64 %101, %..string {i8* getelementptr inbounds ([4 x i8], [4 x i8]* @__str$12, i64 0, i32 0), i64 3}, %Context* noalias nonnull %__.context_ptr)
br label %typeswitch.done-16
typeswitch.next-9:
%103 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 1
%104 = load %Type_Info*, %Type_Info** %103, align 8
%105 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 55
%106 = icmp eq %Type_Info* %104, %105
br i1 %106, label %typeswitch.body-12, label %typeswitch.next-11
typeswitch.body-10:
%107 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 0
%108 = load %..rawptr, %..rawptr* %107, align 8
%109 = bitcast %..rawptr %108 to i64*
%110 = load i64, i64* %109, align 8
store i64 %110, i64* %7
; SelectorExpr
%111 = load i64, i64* %0, align 8
%112 = call {i64, i64} @os-3.write_string(i64 %111, %..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$13, i64 0, i32 0), i64 4}, %Context* noalias nonnull %__.context_ptr)
br label %typeswitch.done-16
typeswitch.next-11:
store %..any %88, %..any* %9
; SelectorExpr
%113 = load i64, i64* %0, align 8
; TernaryExpr
; SelectorExpr
%114 = getelementptr inbounds %Type_Info_Integer, %Type_Info_Integer* %3, i64 0, i32 0
%115 = load i8, i8* %114, align 1
%116 = trunc i8 %115 to i1
br i1 %116, label %if.then-13, label %if.else-14
typeswitch.body-12:
%117 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 0
%118 = load %..rawptr, %..rawptr* %117, align 8
%119 = bitcast %..rawptr %118 to i64*
%120 = load i64, i64* %119, align 8
store i64 %120, i64* %8
; SelectorExpr
%121 = load i64, i64* %0, align 8
%122 = call {i64, i64} @os-3.write_string(i64 %121, %..string {i8* getelementptr inbounds ([8 x i8], [8 x i8]* @__str$14, i64 0, i32 0), i64 7}, %Context* noalias nonnull %__.context_ptr)
br label %typeswitch.done-16
if.then-13:
br label %if.done-15
if.else-14:
br label %if.done-15
if.done-15:
%123 = phi i32 [ 105, %if.then-13 ], [ 117, %if.else-14 ]
%124 = trunc i32 %123 to i8
%125 = call {i64, i64} @os-3.write_byte(i64 %113, i8 %124, %Context* noalias nonnull %__.context_ptr)
%126 = load i64, i64* %0, align 8
; SelectorExpr
%127 = load %Type_Info*, %Type_Info** %1, align 8
%128 = getelementptr inbounds %Type_Info, %Type_Info* %127, i64 0
%129 = getelementptr inbounds %Type_Info, %Type_Info* %128, i64 0, i32 0
%130 = load i64, i64* %129, align 8
%131 = mul i64 8, %130
%132 = bitcast i64 %131 to i64
call void @__print_u64(i64 %126, i64 %132, %Context* noalias nonnull %__.context_ptr)
br label %typeswitch.done-16
typeswitch.done-16:
br label %typeswitch.done-108
typeswitch.next-17:
%133 = icmp eq i8 %70, 4
br i1 %133, label %typeswitch.body-20, label %typeswitch.next-19
typeswitch.body-18:
%134 = bitcast %..rawptr %71 to %Type_Info_Rune*
%135 = load %Type_Info_Rune, %Type_Info_Rune* %134, align 1
store %Type_Info_Rune %135, %Type_Info_Rune* %10
; SelectorExpr
%136 = load i64, i64* %0, align 8
%137 = call {i64, i64} @os-3.write_string(i64 %136, %..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$15, i64 0, i32 0), i64 4}, %Context* noalias nonnull %__.context_ptr)
br label %typeswitch.done-108
typeswitch.next-19:
%138 = icmp eq i8 %70, 5
br i1 %138, label %typeswitch.body-22, label %typeswitch.next-21
typeswitch.body-20:
%139 = bitcast %..rawptr %71 to %Type_Info_Float*
%140 = load %Type_Info_Float, %Type_Info_Float* %139, align 1
store %Type_Info_Float %140, %Type_Info_Float* %11
; SelectorExpr
%141 = load i64, i64* %0, align 8
%142 = call {i64, i64} @os-3.write_byte(i64 %141, i8 102, %Context* noalias nonnull %__.context_ptr)
%143 = load i64, i64* %0, align 8
; SelectorExpr
%144 = load %Type_Info*, %Type_Info** %1, align 8
%145 = getelementptr inbounds %Type_Info, %Type_Info* %144, i64 0
%146 = getelementptr inbounds %Type_Info, %Type_Info* %145, i64 0, i32 0
%147 = load i64, i64* %146, align 8
%148 = mul i64 8, %147
%149 = bitcast i64 %148 to i64
call void @__print_u64(i64 %143, i64 %149, %Context* noalias nonnull %__.context_ptr)
br label %typeswitch.done-108
typeswitch.next-21:
%150 = icmp eq i8 %70, 6
br i1 %150, label %typeswitch.body-24, label %typeswitch.next-23
typeswitch.body-22:
%151 = bitcast %..rawptr %71 to %Type_Info_Complex*
%152 = load %Type_Info_Complex, %Type_Info_Complex* %151, align 1
store %Type_Info_Complex %152, %Type_Info_Complex* %12
; SelectorExpr
%153 = load i64, i64* %0, align 8
%154 = call {i64, i64} @os-3.write_string(i64 %153, %..string {i8* getelementptr inbounds ([8 x i8], [8 x i8]* @__str$16, i64 0, i32 0), i64 7}, %Context* noalias nonnull %__.context_ptr)
%155 = load i64, i64* %0, align 8
; SelectorExpr
%156 = load %Type_Info*, %Type_Info** %1, align 8
%157 = getelementptr inbounds %Type_Info, %Type_Info* %156, i64 0
%158 = getelementptr inbounds %Type_Info, %Type_Info* %157, i64 0, i32 0
%159 = load i64, i64* %158, align 8
%160 = mul i64 8, %159
%161 = bitcast i64 %160 to i64
call void @__print_u64(i64 %155, i64 %161, %Context* noalias nonnull %__.context_ptr)
br label %typeswitch.done-108
typeswitch.next-23:
%162 = icmp eq i8 %70, 7
br i1 %162, label %typeswitch.body-26, label %typeswitch.next-25
typeswitch.body-24:
%163 = bitcast %..rawptr %71 to %Type_Info_String*
%164 = load %Type_Info_String, %Type_Info_String* %163, align 1
store %Type_Info_String %164, %Type_Info_String* %13
; SelectorExpr
%165 = load i64, i64* %0, align 8
%166 = call {i64, i64} @os-3.write_string(i64 %165, %..string {i8* getelementptr inbounds ([7 x i8], [7 x i8]* @__str$17, i64 0, i32 0), i64 6}, %Context* noalias nonnull %__.context_ptr)
br label %typeswitch.done-108
typeswitch.next-25:
%167 = icmp eq i8 %70, 8
br i1 %167, label %typeswitch.body-31, label %typeswitch.next-30
typeswitch.body-26:
%168 = bitcast %..rawptr %71 to %Type_Info_Boolean*
%169 = load %Type_Info_Boolean, %Type_Info_Boolean* %168, align 1
store %Type_Info_Boolean %169, %Type_Info_Boolean* %14
; a
; CompoundLit
%170 = bitcast %..any* %16 to %..rawptr
%171 = call %..rawptr @__mem_zero(%..rawptr %170, i64 16)
store %..any zeroinitializer, %..any* %16
store %..any zeroinitializer, %..any* %16
%172 = load %Type_Info*, %Type_Info** %1, align 8
%173 = getelementptr inbounds %..any, %..any* %16, i64 0, i32 1
store %Type_Info* %172, %Type_Info** %173
%174 = load %..any, %..any* %16, align 8
store %..any %174, %..any* %15
; TypeSwitchStmt
%175 = load %..any, %..any* %15, align 8
%176 = getelementptr inbounds %..any, %..any* %15, i64 0, i32 1
%177 = load %Type_Info*, %Type_Info** %176, align 8
%178 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 27
%179 = icmp eq %Type_Info* %177, %178
br i1 %179, label %typeswitch.body-28, label %typeswitch.next-27
typeswitch.next-27:
store %..any %175, %..any* %18
; SelectorExpr
%180 = load i64, i64* %0, align 8
%181 = call {i64, i64} @os-3.write_byte(i64 %180, i8 98, %Context* noalias nonnull %__.context_ptr)
%182 = load i64, i64* %0, align 8
; SelectorExpr
%183 = load %Type_Info*, %Type_Info** %1, align 8
%184 = getelementptr inbounds %Type_Info, %Type_Info* %183, i64 0
%185 = getelementptr inbounds %Type_Info, %Type_Info* %184, i64 0, i32 0
%186 = load i64, i64* %185, align 8
%187 = mul i64 8, %186
%188 = bitcast i64 %187 to i64
call void @__print_u64(i64 %182, i64 %188, %Context* noalias nonnull %__.context_ptr)
br label %typeswitch.done-29
typeswitch.body-28:
%189 = getelementptr inbounds %..any, %..any* %15, i64 0, i32 0
%190 = load %..rawptr, %..rawptr* %189, align 8
%191 = bitcast %..rawptr %190 to i8*
%192 = load i8, i8* %191, align 1
store i8 %192, i8* %17
; SelectorExpr
%193 = load i64, i64* %0, align 8
%194 = call {i64, i64} @os-3.write_string(i64 %193, %..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$18, i64 0, i32 0), i64 4}, %Context* noalias nonnull %__.context_ptr)
br label %typeswitch.done-29
typeswitch.done-29:
br label %typeswitch.done-108
typeswitch.next-30:
%195 = icmp eq i8 %70, 9
br i1 %195, label %typeswitch.body-33, label %typeswitch.next-32
typeswitch.body-31:
%196 = bitcast %..rawptr %71 to %Type_Info_Any*
%197 = load %Type_Info_Any, %Type_Info_Any* %196, align 1
store %Type_Info_Any %197, %Type_Info_Any* %19
; SelectorExpr
%198 = load i64, i64* %0, align 8
%199 = call {i64, i64} @os-3.write_string(i64 %198, %..string {i8* getelementptr inbounds ([4 x i8], [4 x i8]* @__str$19, i64 0, i32 0), i64 3}, %Context* noalias nonnull %__.context_ptr)
br label %typeswitch.done-108
typeswitch.next-32:
%200 = icmp eq i8 %70, 10
br i1 %200, label %typeswitch.body-38, label %typeswitch.next-37
typeswitch.body-33:
%201 = bitcast %..rawptr %71 to %Type_Info_Pointer*
%202 = load %Type_Info_Pointer, %Type_Info_Pointer* %201, align 8
store %Type_Info_Pointer %202, %Type_Info_Pointer* %20
; IfStmt
; SelectorExpr
%203 = getelementptr inbounds %Type_Info_Pointer, %Type_Info_Pointer* %20, i64 0, i32 0
%204 = load %Type_Info*, %Type_Info** %203, align 8
%205 = icmp eq %Type_Info* %204, zeroinitializer
%206 = zext i1 %205 to i8
%207 = trunc i8 %206 to i1
br i1 %207, label %if.then-34, label %if.else-35
if.then-34:
; SelectorExpr
%208 = load i64, i64* %0, align 8
%209 = call {i64, i64} @os-3.write_string(i64 %208, %..string {i8* getelementptr inbounds ([7 x i8], [7 x i8]* @__str$1a, i64 0, i32 0), i64 6}, %Context* noalias nonnull %__.context_ptr)
br label %if.done-36
if.else-35:
; SelectorExpr
%210 = load i64, i64* %0, align 8
%211 = call {i64, i64} @os-3.write_string(i64 %210, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$1b, i64 0, i32 0), i64 1}, %Context* noalias nonnull %__.context_ptr)
%212 = load i64, i64* %0, align 8
; SelectorExpr
%213 = getelementptr inbounds %Type_Info_Pointer, %Type_Info_Pointer* %20, i64 0, i32 0
%214 = load %Type_Info*, %Type_Info** %213, align 8
call void @__print_type(i64 %212, %Type_Info* %214, %Context* noalias nonnull %__.context_ptr)
br label %if.done-36
if.done-36:
br label %typeswitch.done-108
typeswitch.next-37:
%215 = icmp eq i8 %70, 14
br i1 %215, label %typeswitch.body-52, label %typeswitch.next-51
typeswitch.body-38:
%216 = bitcast %..rawptr %71 to %Type_Info_Procedure*
%217 = load %Type_Info_Procedure, %Type_Info_Procedure* %216, align 8
store %Type_Info_Procedure %217, %Type_Info_Procedure* %21
; SelectorExpr
%218 = load i64, i64* %0, align 8
%219 = call {i64, i64} @os-3.write_string(i64 %218, %..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$1c, i64 0, i32 0), i64 4}, %Context* noalias nonnull %__.context_ptr)
; IfStmt
; SelectorExpr
%220 = getelementptr inbounds %Type_Info_Procedure, %Type_Info_Procedure* %21, i64 0, i32 0
%221 = load %Type_Info*, %Type_Info** %220, align 8
%222 = icmp eq %Type_Info* %221, zeroinitializer
%223 = zext i1 %222 to i8
%224 = trunc i8 %223 to i1
br i1 %224, label %if.then-39, label %if.else-40
if.then-39:
; SelectorExpr
%225 = load i64, i64* %0, align 8
%226 = call {i64, i64} @os-3.write_string(i64 %225, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$1d, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr)
br label %if.done-48
if.else-40:
; t
; SelectorExpr
; SelectorExpr
%227 = getelementptr inbounds %Type_Info_Procedure, %Type_Info_Procedure* %21, i64 0, i32 0
%228 = load %Type_Info*, %Type_Info** %227, align 8
%229 = getelementptr inbounds %Type_Info, %Type_Info* %228, i64 0
%230 = getelementptr inbounds %Type_Info, %Type_Info* %229, i64 0, i32 2
%231 = load {[0 x <8 x i8>], [72 x i8], i8}, {[0 x <8 x i8>], [72 x i8], i8}* %230, align 8
; cast - union_cast
%232 = bitcast {%Type_Info_Tuple, i8}* %23 to %..rawptr
%233 = call %..rawptr @__mem_zero(%..rawptr %232, i64 40)
store {%Type_Info_Tuple, i8} zeroinitializer, {%Type_Info_Tuple, i8}* %23
%234 = getelementptr inbounds {[0 x <8 x i8>], [72 x i8], i8}, {[0 x <8 x i8>], [72 x i8], i8}* %230, i64 0, i32 2 ; UnionTagPtr
%235 = load i8, i8* %234, align 1
%236 = icmp eq i8 %235, 14
br i1 %236, label %union_cast.ok-41, label %union_cast.end-42
union_cast.ok-41:
%237 = getelementptr inbounds {%Type_Info_Tuple, i8}, {%Type_Info_Tuple, i8}* %23, i64 0, i32 0
%238 = getelementptr inbounds {%Type_Info_Tuple, i8}, {%Type_Info_Tuple, i8}* %23, i64 0, i32 1
%239 = bitcast {[0 x <8 x i8>], [72 x i8], i8}* %230 to %Type_Info_Tuple*
%240 = load %Type_Info_Tuple, %Type_Info_Tuple* %239, align 8
store %Type_Info_Tuple %240, %Type_Info_Tuple* %237
store i8 1, i8* %238
br label %union_cast.end-42
union_cast.end-42:
%241 = getelementptr inbounds {%Type_Info_Tuple, i8}, {%Type_Info_Tuple, i8}* %23, i64 0, i32 1
%242 = load i8, i8* %241, align 1
%243 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 24
%244 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 46
%245 = trunc i8 %242 to i1
call void @__type_assertion_check(i1 %245, %..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$1e, i64 0, i32 0), i64 51}, i64 694, i64 21, %Type_Info* %243, %Type_Info* %244)
%246 = getelementptr inbounds {%Type_Info_Tuple, i8}, {%Type_Info_Tuple, i8}* %23, i64 0, i32 0
%247 = load %Type_Info_Tuple, %Type_Info_Tuple* %246, align 8
store %Type_Info_Tuple %247, %Type_Info_Tuple* %22
; SelectorExpr
%248 = load i64, i64* %0, align 8
%249 = call {i64, i64} @os-3.write_string(i64 %248, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$1f, i64 0, i32 0), i64 1}, %Context* noalias nonnull %__.context_ptr)
; RangeStmt
; t
%250 = bitcast %Type_Info** %24 to %..rawptr
%251 = call %..rawptr @__mem_zero(%..rawptr %250, i64 8)
store %Type_Info* zeroinitializer, %Type_Info** %24
; i
%252 = bitcast i64* %25 to %..rawptr
%253 = call %..rawptr @__mem_zero(%..rawptr %252, i64 8)
store i64 zeroinitializer, i64* %25
; SelectorExpr
%254 = getelementptr inbounds %Type_Info_Tuple, %Type_Info_Tuple* %22, i64 0, i32 0
%255 = load {%Type_Info**, i64}, {%Type_Info**, i64}* %254, align 8
%256 = bitcast i64* %26 to %..rawptr
%257 = call %..rawptr @__mem_zero(%..rawptr %256, i64 8)
store i64 zeroinitializer, i64* %26
%258 = extractvalue {%Type_Info**, i64} %255, 1
store i64 %258, i64* %26
%259 = bitcast i64* %27 to %..rawptr
%260 = call %..rawptr @__mem_zero(%..rawptr %259, i64 8)
store i64 zeroinitializer, i64* %27
store i64 -1, i64* %27
br label %for.index.loop-43
for.index.loop-43:
%261 = load i64, i64* %27, align 8
%262 = add i64 %261, 1
store i64 %262, i64* %27
%263 = load i64, i64* %26, align 8
%264 = icmp slt i64 %262, %263
br i1 %264, label %for.index.body-44, label %for.index.done-47
for.index.body-44:
%265 = load i64, i64* %27, align 8
%266 = extractvalue {%Type_Info**, i64} %255, 0
%267 = getelementptr inbounds %Type_Info*, %Type_Info** %266, i64 %265
%268 = load %Type_Info*, %Type_Info** %267, align 8
store %Type_Info* %268, %Type_Info** %24
store i64 %265, i64* %25
; IfStmt
%269 = load i64, i64* %25, align 8
%270 = icmp sgt i64 %269, 0
%271 = zext i1 %270 to i8
%272 = trunc i8 %271 to i1
br i1 %272, label %if.then-45, label %if.done-46
if.then-45:
; SelectorExpr
%273 = load i64, i64* %0, align 8
%274 = call {i64, i64} @os-3.write_string(i64 %273, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$20, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr)
br label %if.done-46
if.done-46:
%275 = load i64, i64* %0, align 8
%276 = load %Type_Info*, %Type_Info** %24, align 8
call void @__print_type(i64 %275, %Type_Info* %276, %Context* noalias nonnull %__.context_ptr)
br label %for.index.loop-43
for.index.done-47:
; SelectorExpr
%277 = load i64, i64* %0, align 8
%278 = call {i64, i64} @os-3.write_string(i64 %277, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$21, i64 0, i32 0), i64 1}, %Context* noalias nonnull %__.context_ptr)
br label %if.done-48
if.done-48:
; IfStmt
; SelectorExpr
%279 = getelementptr inbounds %Type_Info_Procedure, %Type_Info_Procedure* %21, i64 0, i32 1
%280 = load %Type_Info*, %Type_Info** %279, align 8
%281 = icmp ne %Type_Info* %280, zeroinitializer
%282 = zext i1 %281 to i8
%283 = trunc i8 %282 to i1
br i1 %283, label %if.then-49, label %if.done-50
if.then-49:
; SelectorExpr
%284 = load i64, i64* %0, align 8
%285 = call {i64, i64} @os-3.write_string(i64 %284, %..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$22, i64 0, i32 0), i64 4}, %Context* noalias nonnull %__.context_ptr)
%286 = load i64, i64* %0, align 8
; SelectorExpr
%287 = getelementptr inbounds %Type_Info_Procedure, %Type_Info_Procedure* %21, i64 0, i32 1
%288 = load %Type_Info*, %Type_Info** %287, align 8
call void @__print_type(i64 %286, %Type_Info* %288, %Context* noalias nonnull %__.context_ptr)
br label %if.done-50
if.done-50:
br label %typeswitch.done-108
typeswitch.next-51:
%289 = icmp eq i8 %70, 11
br i1 %289, label %typeswitch.body-65, label %typeswitch.next-64
typeswitch.body-52:
%290 = bitcast %..rawptr %71 to %Type_Info_Tuple*
%291 = load %Type_Info_Tuple, %Type_Info_Tuple* %290, align 8
store %Type_Info_Tuple %291, %Type_Info_Tuple* %28
; count
; SelectorExpr
%292 = getelementptr inbounds %Type_Info_Tuple, %Type_Info_Tuple* %28, i64 0, i32 1
%293 = load {%..string*, i64}, {%..string*, i64}* %292, align 8
%294 = extractvalue {%..string*, i64} %293, 1
store i64 %294, i64* %29
; IfStmt
%295 = load i64, i64* %29, align 8
%296 = icmp ne i64 %295, 1
%297 = zext i1 %296 to i8
%298 = trunc i8 %297 to i1
br i1 %298, label %if.then-53, label %if.done-54
if.then-53:
; SelectorExpr
%299 = load i64, i64* %0, align 8
%300 = call {i64, i64} @os-3.write_string(i64 %299, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$23, i64 0, i32 0), i64 1}, %Context* noalias nonnull %__.context_ptr)
br label %if.done-54
if.done-54:
; RangeStmt
; name
%301 = bitcast %..string* %30 to %..rawptr
%302 = call %..rawptr @__mem_zero(%..rawptr %301, i64 16)
store %..string zeroinitializer, %..string* %30
; i
%303 = bitcast i64* %31 to %..rawptr
%304 = call %..rawptr @__mem_zero(%..rawptr %303, i64 8)
store i64 zeroinitializer, i64* %31
; SelectorExpr
%305 = getelementptr inbounds %Type_Info_Tuple, %Type_Info_Tuple* %28, i64 0, i32 1
%306 = load {%..string*, i64}, {%..string*, i64}* %305, align 8
%307 = bitcast i64* %32 to %..rawptr
%308 = call %..rawptr @__mem_zero(%..rawptr %307, i64 8)
store i64 zeroinitializer, i64* %32
%309 = extractvalue {%..string*, i64} %306, 1
store i64 %309, i64* %32
%310 = bitcast i64* %33 to %..rawptr
%311 = call %..rawptr @__mem_zero(%..rawptr %310, i64 8)
store i64 zeroinitializer, i64* %33
store i64 -1, i64* %33
br label %for.index.loop-55
for.index.loop-55:
%312 = load i64, i64* %33, align 8
%313 = add i64 %312, 1
store i64 %313, i64* %33
%314 = load i64, i64* %32, align 8
%315 = icmp slt i64 %313, %314
br i1 %315, label %for.index.body-56, label %for.index.done-61
for.index.body-56:
%316 = load i64, i64* %33, align 8
%317 = extractvalue {%..string*, i64} %306, 0
%318 = getelementptr inbounds %..string, %..string* %317, i64 %316
%319 = load %..string, %..string* %318, align 8
store %..string %319, %..string* %30
store i64 %316, i64* %31
; IfStmt
%320 = load i64, i64* %31, align 8
%321 = icmp sgt i64 %320, 0
%322 = zext i1 %321 to i8
%323 = trunc i8 %322 to i1
br i1 %323, label %if.then-57, label %if.done-58
if.then-57:
; SelectorExpr
%324 = load i64, i64* %0, align 8
%325 = call {i64, i64} @os-3.write_string(i64 %324, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$24, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr)
br label %if.done-58
if.done-58:
; t
; IndexExpr
; SelectorExpr
%326 = getelementptr inbounds %Type_Info_Tuple, %Type_Info_Tuple* %28, i64 0, i32 0
%327 = load {%Type_Info**, i64}, {%Type_Info**, i64}* %326, align 8
%328 = extractvalue {%Type_Info**, i64} %327, 0
%329 = load i64, i64* %31, align 8
%330 = extractvalue {%Type_Info**, i64} %327, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$25, i64 0, i32 0), i64 51}, i64 712, i64 20, i64 %329, i64 %330)
%331 = getelementptr inbounds %Type_Info*, %Type_Info** %328, i64 %329
%332 = load %Type_Info*, %Type_Info** %331, align 8
store %Type_Info* %332, %Type_Info** %34
; IfStmt
%333 = load %..string, %..string* %30, align 8
%334 = extractvalue %..string %333, 1
%335 = icmp sgt i64 %334, 0
%336 = zext i1 %335 to i8
%337 = trunc i8 %336 to i1
br i1 %337, label %if.then-59, label %if.done-60
if.then-59:
; SelectorExpr
%338 = load i64, i64* %0, align 8
%339 = load %..string, %..string* %30, align 8
%340 = call {i64, i64} @os-3.write_string(i64 %338, %..string %339, %Context* noalias nonnull %__.context_ptr)
; SelectorExpr
%341 = load i64, i64* %0, align 8
%342 = call {i64, i64} @os-3.write_string(i64 %341, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$26, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr)
br label %if.done-60
if.done-60:
%343 = load i64, i64* %0, align 8
%344 = load %Type_Info*, %Type_Info** %34, align 8
call void @__print_type(i64 %343, %Type_Info* %344, %Context* noalias nonnull %__.context_ptr)
br label %for.index.loop-55
for.index.done-61:
; IfStmt
%345 = load i64, i64* %29, align 8
%346 = icmp ne i64 %345, 1
%347 = zext i1 %346 to i8
%348 = trunc i8 %347 to i1
br i1 %348, label %if.then-62, label %if.done-63
if.then-62:
; SelectorExpr
%349 = load i64, i64* %0, align 8
%350 = call {i64, i64} @os-3.write_string(i64 %349, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$27, i64 0, i32 0), i64 1}, %Context* noalias nonnull %__.context_ptr)
br label %if.done-63
if.done-63:
br label %typeswitch.done-108
typeswitch.next-64:
%351 = icmp eq i8 %70, 12
br i1 %351, label %typeswitch.body-67, label %typeswitch.next-66
typeswitch.body-65:
%352 = bitcast %..rawptr %71 to %Type_Info_Array*
%353 = load %Type_Info_Array, %Type_Info_Array* %352, align 8
store %Type_Info_Array %353, %Type_Info_Array* %35
; SelectorExpr
%354 = load i64, i64* %0, align 8
%355 = call {i64, i64} @os-3.write_string(i64 %354, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$28, i64 0, i32 0), i64 1}, %Context* noalias nonnull %__.context_ptr)
%356 = load i64, i64* %0, align 8
; SelectorExpr
%357 = getelementptr inbounds %Type_Info_Array, %Type_Info_Array* %35, i64 0, i32 2
%358 = load i64, i64* %357, align 8
%359 = bitcast i64 %358 to i64
call void @__print_u64(i64 %356, i64 %359, %Context* noalias nonnull %__.context_ptr)
; SelectorExpr
%360 = load i64, i64* %0, align 8
%361 = call {i64, i64} @os-3.write_string(i64 %360, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$29, i64 0, i32 0), i64 1}, %Context* noalias nonnull %__.context_ptr)
%362 = load i64, i64* %0, align 8
; SelectorExpr
%363 = getelementptr inbounds %Type_Info_Array, %Type_Info_Array* %35, i64 0, i32 0
%364 = load %Type_Info*, %Type_Info** %363, align 8
call void @__print_type(i64 %362, %Type_Info* %364, %Context* noalias nonnull %__.context_ptr)
br label %typeswitch.done-108
typeswitch.next-66:
%365 = icmp eq i8 %70, 13
br i1 %365, label %typeswitch.body-69, label %typeswitch.next-68
typeswitch.body-67:
%366 = bitcast %..rawptr %71 to %Type_Info_Dynamic_Array*
%367 = load %Type_Info_Dynamic_Array, %Type_Info_Dynamic_Array* %366, align 8
store %Type_Info_Dynamic_Array %367, %Type_Info_Dynamic_Array* %36
; SelectorExpr
%368 = load i64, i64* %0, align 8
%369 = call {i64, i64} @os-3.write_string(i64 %368, %..string {i8* getelementptr inbounds ([10 x i8], [10 x i8]* @__str$2a, i64 0, i32 0), i64 9}, %Context* noalias nonnull %__.context_ptr)
%370 = load i64, i64* %0, align 8
; SelectorExpr
%371 = getelementptr inbounds %Type_Info_Dynamic_Array, %Type_Info_Dynamic_Array* %36, i64 0, i32 0
%372 = load %Type_Info*, %Type_Info** %371, align 8
call void @__print_type(i64 %370, %Type_Info* %372, %Context* noalias nonnull %__.context_ptr)
br label %typeswitch.done-108
typeswitch.next-68:
%373 = icmp eq i8 %70, 18
br i1 %373, label %typeswitch.body-71, label %typeswitch.next-70
typeswitch.body-69:
%374 = bitcast %..rawptr %71 to %Type_Info_Slice*
%375 = load %Type_Info_Slice, %Type_Info_Slice* %374, align 8
store %Type_Info_Slice %375, %Type_Info_Slice* %37
; SelectorExpr
%376 = load i64, i64* %0, align 8
%377 = call {i64, i64} @os-3.write_string(i64 %376, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$2b, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr)
%378 = load i64, i64* %0, align 8
; SelectorExpr
%379 = getelementptr inbounds %Type_Info_Slice, %Type_Info_Slice* %37, i64 0, i32 0
%380 = load %Type_Info*, %Type_Info** %379, align 8
call void @__print_type(i64 %378, %Type_Info* %380, %Context* noalias nonnull %__.context_ptr)
br label %typeswitch.done-108
typeswitch.next-70:
%381 = icmp eq i8 %70, 15
br i1 %381, label %typeswitch.body-73, label %typeswitch.next-72
typeswitch.body-71:
%382 = bitcast %..rawptr %71 to %Type_Info_Map*
%383 = load %Type_Info_Map, %Type_Info_Map* %382, align 8
store %Type_Info_Map %383, %Type_Info_Map* %38
; SelectorExpr
%384 = load i64, i64* %0, align 8
%385 = call {i64, i64} @os-3.write_string(i64 %384, %..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$2c, i64 0, i32 0), i64 4}, %Context* noalias nonnull %__.context_ptr)
%386 = load i64, i64* %0, align 8
; SelectorExpr
%387 = getelementptr inbounds %Type_Info_Map, %Type_Info_Map* %38, i64 0, i32 0
%388 = load %Type_Info*, %Type_Info** %387, align 8
call void @__print_type(i64 %386, %Type_Info* %388, %Context* noalias nonnull %__.context_ptr)
; SelectorExpr
%389 = load i64, i64* %0, align 8
%390 = call {i64, i64} @os-3.write_byte(i64 %389, i8 93, %Context* noalias nonnull %__.context_ptr)
%391 = load i64, i64* %0, align 8
; SelectorExpr
%392 = getelementptr inbounds %Type_Info_Map, %Type_Info_Map* %38, i64 0, i32 1
%393 = load %Type_Info*, %Type_Info** %392, align 8
call void @__print_type(i64 %391, %Type_Info* %393, %Context* noalias nonnull %__.context_ptr)
br label %typeswitch.done-108
typeswitch.next-72:
%394 = icmp eq i8 %70, 16
br i1 %394, label %typeswitch.body-86, label %typeswitch.next-85
typeswitch.body-73:
%395 = bitcast %..rawptr %71 to %Type_Info_Struct*
%396 = load %Type_Info_Struct, %Type_Info_Struct* %395, align 8
store %Type_Info_Struct %396, %Type_Info_Struct* %39
; SelectorExpr
%397 = load i64, i64* %0, align 8
%398 = call {i64, i64} @os-3.write_string(i64 %397, %..string {i8* getelementptr inbounds ([8 x i8], [8 x i8]* @__str$2d, i64 0, i32 0), i64 7}, %Context* noalias nonnull %__.context_ptr)
; IfStmt
; SelectorExpr
%399 = getelementptr inbounds %Type_Info_Struct, %Type_Info_Struct* %39, i64 0, i32 4
%400 = load i8, i8* %399, align 1
%401 = trunc i8 %400 to i1
br i1 %401, label %if.then-74, label %if.done-75
if.then-74:
; SelectorExpr
%402 = load i64, i64* %0, align 8
%403 = call {i64, i64} @os-3.write_string(i64 %402, %..string {i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__str$2e, i64 0, i32 0), i64 8}, %Context* noalias nonnull %__.context_ptr)
br label %if.done-75
if.done-75:
; IfStmt
; SelectorExpr
%404 = getelementptr inbounds %Type_Info_Struct, %Type_Info_Struct* %39, i64 0, i32 5
%405 = load i8, i8* %404, align 1
%406 = trunc i8 %405 to i1
br i1 %406, label %if.then-76, label %if.done-77
if.then-76:
; SelectorExpr
%407 = load i64, i64* %0, align 8
%408 = call {i64, i64} @os-3.write_string(i64 %407, %..string {i8* getelementptr inbounds ([12 x i8], [12 x i8]* @__str$2f, i64 0, i32 0), i64 11}, %Context* noalias nonnull %__.context_ptr)
br label %if.done-77
if.done-77:
; IfStmt
; SelectorExpr
%409 = getelementptr inbounds %Type_Info_Struct, %Type_Info_Struct* %39, i64 0, i32 6
%410 = load i8, i8* %409, align 1
%411 = trunc i8 %410 to i1
br i1 %411, label %if.then-78, label %if.done-79
if.then-78:
; SelectorExpr
%412 = load i64, i64* %0, align 8
%413 = call {i64, i64} @os-3.write_string(i64 %412, %..string {i8* getelementptr inbounds ([8 x i8], [8 x i8]* @__str$30, i64 0, i32 0), i64 7}, %Context* noalias nonnull %__.context_ptr)
%414 = load i64, i64* %0, align 8
; SelectorExpr
%415 = load %Type_Info*, %Type_Info** %1, align 8
%416 = getelementptr inbounds %Type_Info, %Type_Info* %415, i64 0
%417 = getelementptr inbounds %Type_Info, %Type_Info* %416, i64 0, i32 1
%418 = load i64, i64* %417, align 8
%419 = bitcast i64 %418 to i64
call void @__print_u64(i64 %414, i64 %419, %Context* noalias nonnull %__.context_ptr)
; SelectorExpr
%420 = load i64, i64* %0, align 8
%421 = call {i64, i64} @os-3.write_byte(i64 %420, i8 32, %Context* noalias nonnull %__.context_ptr)
br label %if.done-79
if.done-79:
; SelectorExpr
%422 = load i64, i64* %0, align 8
%423 = call {i64, i64} @os-3.write_byte(i64 %422, i8 123, %Context* noalias nonnull %__.context_ptr)
; RangeStmt
; name
%424 = bitcast %..string* %40 to %..rawptr
%425 = call %..rawptr @__mem_zero(%..rawptr %424, i64 16)
store %..string zeroinitializer, %..string* %40
; i
%426 = bitcast i64* %41 to %..rawptr
%427 = call %..rawptr @__mem_zero(%..rawptr %426, i64 8)
store i64 zeroinitializer, i64* %41
; SelectorExpr
%428 = getelementptr inbounds %Type_Info_Struct, %Type_Info_Struct* %39, i64 0, i32 1
%429 = load {%..string*, i64}, {%..string*, i64}* %428, align 8
%430 = bitcast i64* %42 to %..rawptr
%431 = call %..rawptr @__mem_zero(%..rawptr %430, i64 8)
store i64 zeroinitializer, i64* %42
%432 = extractvalue {%..string*, i64} %429, 1
store i64 %432, i64* %42
%433 = bitcast i64* %43 to %..rawptr
%434 = call %..rawptr @__mem_zero(%..rawptr %433, i64 8)
store i64 zeroinitializer, i64* %43
store i64 -1, i64* %43
br label %for.index.loop-80
for.index.loop-80:
%435 = load i64, i64* %43, align 8
%436 = add i64 %435, 1
store i64 %436, i64* %43
%437 = load i64, i64* %42, align 8
%438 = icmp slt i64 %436, %437
br i1 %438, label %for.index.body-81, label %for.index.done-84
for.index.body-81:
%439 = load i64, i64* %43, align 8
%440 = extractvalue {%..string*, i64} %429, 0
%441 = getelementptr inbounds %..string, %..string* %440, i64 %439
%442 = load %..string, %..string* %441, align 8
store %..string %442, %..string* %40
store i64 %439, i64* %41
; IfStmt
%443 = load i64, i64* %41, align 8
%444 = icmp sgt i64 %443, 0
%445 = zext i1 %444 to i8
%446 = trunc i8 %445 to i1
br i1 %446, label %if.then-82, label %if.done-83
if.then-82:
; SelectorExpr
%447 = load i64, i64* %0, align 8
%448 = call {i64, i64} @os-3.write_string(i64 %447, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$31, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr)
br label %if.done-83
if.done-83:
; SelectorExpr
%449 = load i64, i64* %0, align 8
%450 = load %..string, %..string* %40, align 8
%451 = call {i64, i64} @os-3.write_string(i64 %449, %..string %450, %Context* noalias nonnull %__.context_ptr)
; SelectorExpr
%452 = load i64, i64* %0, align 8
%453 = call {i64, i64} @os-3.write_string(i64 %452, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$32, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr)
%454 = load i64, i64* %0, align 8
; IndexExpr
; SelectorExpr
%455 = getelementptr inbounds %Type_Info_Struct, %Type_Info_Struct* %39, i64 0, i32 0
%456 = load {%Type_Info**, i64}, {%Type_Info**, i64}* %455, align 8
%457 = extractvalue {%Type_Info**, i64} %456, 0
%458 = load i64, i64* %41, align 8
%459 = extractvalue {%Type_Info**, i64} %456, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$33, i64 0, i32 0), i64 51}, i64 754, i64 32, i64 %458, i64 %459)
%460 = getelementptr inbounds %Type_Info*, %Type_Info** %457, i64 %458
%461 = load %Type_Info*, %Type_Info** %460, align 8
call void @__print_type(i64 %454, %Type_Info* %461, %Context* noalias nonnull %__.context_ptr)
br label %for.index.loop-80
for.index.done-84:
; SelectorExpr
%462 = load i64, i64* %0, align 8
%463 = call {i64, i64} @os-3.write_byte(i64 %462, i8 125, %Context* noalias nonnull %__.context_ptr)
br label %typeswitch.done-108
typeswitch.next-85:
%464 = icmp eq i8 %70, 17
br i1 %464, label %typeswitch.body-93, label %typeswitch.next-92
typeswitch.body-86:
%465 = bitcast %..rawptr %71 to %Type_Info_Union*
%466 = load %Type_Info_Union, %Type_Info_Union* %465, align 8
store %Type_Info_Union %466, %Type_Info_Union* %44
; SelectorExpr
%467 = load i64, i64* %0, align 8
%468 = call {i64, i64} @os-3.write_string(i64 %467, %..string {i8* getelementptr inbounds ([8 x i8], [8 x i8]* @__str$34, i64 0, i32 0), i64 7}, %Context* noalias nonnull %__.context_ptr)
; RangeStmt
; variant
%469 = bitcast %Type_Info** %45 to %..rawptr
%470 = call %..rawptr @__mem_zero(%..rawptr %469, i64 8)
store %Type_Info* zeroinitializer, %Type_Info** %45
; i
%471 = bitcast i64* %46 to %..rawptr
%472 = call %..rawptr @__mem_zero(%..rawptr %471, i64 8)
store i64 zeroinitializer, i64* %46
; SelectorExpr
%473 = getelementptr inbounds %Type_Info_Union, %Type_Info_Union* %44, i64 0, i32 0
%474 = load {%Type_Info**, i64}, {%Type_Info**, i64}* %473, align 8
%475 = bitcast i64* %47 to %..rawptr
%476 = call %..rawptr @__mem_zero(%..rawptr %475, i64 8)
store i64 zeroinitializer, i64* %47
%477 = extractvalue {%Type_Info**, i64} %474, 1
store i64 %477, i64* %47
%478 = bitcast i64* %48 to %..rawptr
%479 = call %..rawptr @__mem_zero(%..rawptr %478, i64 8)
store i64 zeroinitializer, i64* %48
store i64 -1, i64* %48
br label %for.index.loop-87
for.index.loop-87:
%480 = load i64, i64* %48, align 8
%481 = add i64 %480, 1
store i64 %481, i64* %48
%482 = load i64, i64* %47, align 8
%483 = icmp slt i64 %481, %482
br i1 %483, label %for.index.body-88, label %for.index.done-91
for.index.body-88:
%484 = load i64, i64* %48, align 8
%485 = extractvalue {%Type_Info**, i64} %474, 0
%486 = getelementptr inbounds %Type_Info*, %Type_Info** %485, i64 %484
%487 = load %Type_Info*, %Type_Info** %486, align 8
store %Type_Info* %487, %Type_Info** %45
store i64 %484, i64* %46
; IfStmt
%488 = load i64, i64* %46, align 8
%489 = icmp sgt i64 %488, 0
%490 = zext i1 %489 to i8
%491 = trunc i8 %490 to i1
br i1 %491, label %if.then-89, label %if.done-90
if.then-89:
; SelectorExpr
%492 = load i64, i64* %0, align 8
%493 = call {i64, i64} @os-3.write_string(i64 %492, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$35, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr)
br label %if.done-90
if.done-90:
%494 = load i64, i64* %0, align 8
%495 = load %Type_Info*, %Type_Info** %45, align 8
call void @__print_type(i64 %494, %Type_Info* %495, %Context* noalias nonnull %__.context_ptr)
br label %for.index.loop-87
for.index.done-91:
; SelectorExpr
%496 = load i64, i64* %0, align 8
%497 = call {i64, i64} @os-3.write_string(i64 %496, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$36, i64 0, i32 0), i64 1}, %Context* noalias nonnull %__.context_ptr)
br label %typeswitch.done-108
typeswitch.next-92:
%498 = icmp eq i8 %70, 19
br i1 %498, label %typeswitch.body-100, label %typeswitch.next-99
typeswitch.body-93:
%499 = bitcast %..rawptr %71 to %Type_Info_Enum*
%500 = load %Type_Info_Enum, %Type_Info_Enum* %499, align 8
store %Type_Info_Enum %500, %Type_Info_Enum* %49
; SelectorExpr
%501 = load i64, i64* %0, align 8
%502 = call {i64, i64} @os-3.write_string(i64 %501, %..string {i8* getelementptr inbounds ([6 x i8], [6 x i8]* @__str$37, i64 0, i32 0), i64 5}, %Context* noalias nonnull %__.context_ptr)
%503 = load i64, i64* %0, align 8
; SelectorExpr
%504 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %49, i64 0, i32 0
%505 = load %Type_Info*, %Type_Info** %504, align 8
call void @__print_type(i64 %503, %Type_Info* %505, %Context* noalias nonnull %__.context_ptr)
; SelectorExpr
%506 = load i64, i64* %0, align 8
%507 = call {i64, i64} @os-3.write_string(i64 %506, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$38, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr)
; RangeStmt
; name
%508 = bitcast %..string* %50 to %..rawptr
%509 = call %..rawptr @__mem_zero(%..rawptr %508, i64 16)
store %..string zeroinitializer, %..string* %50
; i
%510 = bitcast i64* %51 to %..rawptr
%511 = call %..rawptr @__mem_zero(%..rawptr %510, i64 8)
store i64 zeroinitializer, i64* %51
; SelectorExpr
%512 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %49, i64 0, i32 1
%513 = load {%..string*, i64}, {%..string*, i64}* %512, align 8
%514 = bitcast i64* %52 to %..rawptr
%515 = call %..rawptr @__mem_zero(%..rawptr %514, i64 8)
store i64 zeroinitializer, i64* %52
%516 = extractvalue {%..string*, i64} %513, 1
store i64 %516, i64* %52
%517 = bitcast i64* %53 to %..rawptr
%518 = call %..rawptr @__mem_zero(%..rawptr %517, i64 8)
store i64 zeroinitializer, i64* %53
store i64 -1, i64* %53
br label %for.index.loop-94
for.index.loop-94:
%519 = load i64, i64* %53, align 8
%520 = add i64 %519, 1
store i64 %520, i64* %53
%521 = load i64, i64* %52, align 8
%522 = icmp slt i64 %520, %521
br i1 %522, label %for.index.body-95, label %for.index.done-98
for.index.body-95:
%523 = load i64, i64* %53, align 8
%524 = extractvalue {%..string*, i64} %513, 0
%525 = getelementptr inbounds %..string, %..string* %524, i64 %523
%526 = load %..string, %..string* %525, align 8
store %..string %526, %..string* %50
store i64 %523, i64* %51
; IfStmt
%527 = load i64, i64* %51, align 8
%528 = icmp sgt i64 %527, 0
%529 = zext i1 %528 to i8
%530 = trunc i8 %529 to i1
br i1 %530, label %if.then-96, label %if.done-97
if.then-96:
; SelectorExpr
%531 = load i64, i64* %0, align 8
%532 = call {i64, i64} @os-3.write_string(i64 %531, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$39, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr)
br label %if.done-97
if.done-97:
; SelectorExpr
%533 = load i64, i64* %0, align 8
%534 = load %..string, %..string* %50, align 8
%535 = call {i64, i64} @os-3.write_string(i64 %533, %..string %534, %Context* noalias nonnull %__.context_ptr)
br label %for.index.loop-94
for.index.done-98:
; SelectorExpr
%536 = load i64, i64* %0, align 8
%537 = call {i64, i64} @os-3.write_string(i64 %536, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$3a, i64 0, i32 0), i64 1}, %Context* noalias nonnull %__.context_ptr)
br label %typeswitch.done-108
typeswitch.next-99:
br label %typeswitch.done-108
typeswitch.body-100:
%538 = bitcast %..rawptr %71 to %Type_Info_Bit_Field*
%539 = load %Type_Info_Bit_Field, %Type_Info_Bit_Field* %538, align 8
store %Type_Info_Bit_Field %539, %Type_Info_Bit_Field* %54
; SelectorExpr
%540 = load i64, i64* %0, align 8
%541 = call {i64, i64} @os-3.write_string(i64 %540, %..string {i8* getelementptr inbounds ([11 x i8], [11 x i8]* @__str$3b, i64 0, i32 0), i64 10}, %Context* noalias nonnull %__.context_ptr)
; IfStmt
; SelectorExpr
%542 = load %Type_Info*, %Type_Info** %1, align 8
%543 = getelementptr inbounds %Type_Info, %Type_Info* %542, i64 0
%544 = getelementptr inbounds %Type_Info, %Type_Info* %543, i64 0, i32 1
%545 = load i64, i64* %544, align 8
%546 = icmp ne i64 %545, 1
%547 = zext i1 %546 to i8
%548 = trunc i8 %547 to i1
br i1 %548, label %if.then-101, label %if.done-102
if.then-101:
; SelectorExpr
%549 = load i64, i64* %0, align 8
%550 = call {i64, i64} @os-3.write_string(i64 %549, %..string {i8* getelementptr inbounds ([8 x i8], [8 x i8]* @__str$3c, i64 0, i32 0), i64 7}, %Context* noalias nonnull %__.context_ptr)
%551 = load i64, i64* %0, align 8
; SelectorExpr
%552 = load %Type_Info*, %Type_Info** %1, align 8
%553 = getelementptr inbounds %Type_Info, %Type_Info* %552, i64 0
%554 = getelementptr inbounds %Type_Info, %Type_Info* %553, i64 0, i32 1
%555 = load i64, i64* %554, align 8
%556 = bitcast i64 %555 to i64
call void @__print_u64(i64 %551, i64 %556, %Context* noalias nonnull %__.context_ptr)
; SelectorExpr
%557 = load i64, i64* %0, align 8
%558 = call {i64, i64} @os-3.write_byte(i64 %557, i8 32, %Context* noalias nonnull %__.context_ptr)
br label %if.done-102
if.done-102:
; SelectorExpr
%559 = load i64, i64* %0, align 8
%560 = call {i64, i64} @os-3.write_string(i64 %559, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$3d, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr)
; RangeStmt
; name
%561 = bitcast %..string* %55 to %..rawptr
%562 = call %..rawptr @__mem_zero(%..rawptr %561, i64 16)
store %..string zeroinitializer, %..string* %55
; i
%563 = bitcast i64* %56 to %..rawptr
%564 = call %..rawptr @__mem_zero(%..rawptr %563, i64 8)
store i64 zeroinitializer, i64* %56
; SelectorExpr
%565 = getelementptr inbounds %Type_Info_Bit_Field, %Type_Info_Bit_Field* %54, i64 0, i32 0
%566 = load {%..string*, i64}, {%..string*, i64}* %565, align 8
%567 = bitcast i64* %57 to %..rawptr
%568 = call %..rawptr @__mem_zero(%..rawptr %567, i64 8)
store i64 zeroinitializer, i64* %57
%569 = extractvalue {%..string*, i64} %566, 1
store i64 %569, i64* %57
%570 = bitcast i64* %58 to %..rawptr
%571 = call %..rawptr @__mem_zero(%..rawptr %570, i64 8)
store i64 zeroinitializer, i64* %58
store i64 -1, i64* %58
br label %for.index.loop-103
for.index.loop-103:
%572 = load i64, i64* %58, align 8
%573 = add i64 %572, 1
store i64 %573, i64* %58
%574 = load i64, i64* %57, align 8
%575 = icmp slt i64 %573, %574
br i1 %575, label %for.index.body-104, label %for.index.done-107
for.index.body-104:
%576 = load i64, i64* %58, align 8
%577 = extractvalue {%..string*, i64} %566, 0
%578 = getelementptr inbounds %..string, %..string* %577, i64 %576
%579 = load %..string, %..string* %578, align 8
store %..string %579, %..string* %55
store i64 %576, i64* %56
; IfStmt
%580 = load i64, i64* %56, align 8
%581 = icmp sgt i64 %580, 0
%582 = zext i1 %581 to i8
%583 = trunc i8 %582 to i1
br i1 %583, label %if.then-105, label %if.done-106
if.then-105:
; SelectorExpr
%584 = load i64, i64* %0, align 8
%585 = call {i64, i64} @os-3.write_string(i64 %584, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$3e, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr)
br label %if.done-106
if.done-106:
; SelectorExpr
%586 = load i64, i64* %0, align 8
%587 = load %..string, %..string* %55, align 8
%588 = call {i64, i64} @os-3.write_string(i64 %586, %..string %587, %Context* noalias nonnull %__.context_ptr)
; SelectorExpr
%589 = load i64, i64* %0, align 8
%590 = call {i64, i64} @os-3.write_string(i64 %589, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$3f, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr)
%591 = load i64, i64* %0, align 8
; IndexExpr
; SelectorExpr
%592 = getelementptr inbounds %Type_Info_Bit_Field, %Type_Info_Bit_Field* %54, i64 0, i32 1
%593 = load {i32*, i64}, {i32*, i64}* %592, align 8
%594 = extractvalue {i32*, i64} %593, 0
%595 = load i64, i64* %56, align 8
%596 = extractvalue {i32*, i64} %593, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$40, i64 0, i32 0), i64 51}, i64 788, i64 34, i64 %595, i64 %596)
%597 = getelementptr inbounds i32, i32* %594, i64 %595
%598 = load i32, i32* %597, align 4
%599 = sext i32 %598 to i64
call void @__print_u64(i64 %591, i64 %599, %Context* noalias nonnull %__.context_ptr)
br label %for.index.loop-103
for.index.done-107:
; SelectorExpr
%600 = load i64, i64* %0, align 8
%601 = call {i64, i64} @os-3.write_string(i64 %600, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$41, i64 0, i32 0), i64 1}, %Context* noalias nonnull %__.context_ptr)
br label %typeswitch.done-108
typeswitch.done-108:
ret void
}
define i8 @assert(i1 %condition, %..string %message, %Source_Code_Location* %loc) #0 {
decls-0:
%0 = alloca i8, align 16
%1 = alloca %..string, align 16
%2 = alloca i64, align 16
%3 = alloca %Context, align 16
%4 = bitcast %Context* %3 to %..rawptr
%5 = call %..rawptr @__mem_zero(%..rawptr %4, i64 72)
store %Context zeroinitializer, %Context* %3
%6 = load %Context, %Context* @__ggv$0, align 8
store %Context %6, %Context* %3
%7 = getelementptr inbounds %Context, %Context* %3, i64 0, i32 0
%8 = call %Allocator @default_allocator(%Context* noalias nonnull %3)
store %Allocator %8, %Allocator* %7
%9 = alloca %Source_Code_Location, align 16
%10 = zext i1 %condition to i8
store i8 %10, i8* %0
store %..string %message, %..string* %1
%11 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
; IfStmt
%12 = load i8, i8* %0, align 1
%13 = trunc i8 %12 to i1
br i1 %13, label %if.done-4, label %if.then-1
if.then-1:
; fd
; SelectorExpr
%14 = load i64, i64* @os_windows-6.stderr, align 8
store i64 %14, i64* %2
%15 = load i64, i64* %2, align 8
%16 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
%17 = bitcast %Source_Code_Location* %9 to %..rawptr
%18 = call %..rawptr @__mem_zero(%..rawptr %17, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %9
store %Source_Code_Location %16, %Source_Code_Location* %9
call void @__print_caller_location(i64 %15, %Source_Code_Location* %9, %Context* noalias nonnull %3)
; SelectorExpr
%19 = load i64, i64* %2, align 8
%20 = call {i64, i64} @os-3.write_string(i64 %19, %..string {i8* getelementptr inbounds ([19 x i8], [19 x i8]* @__str$42, i64 0, i32 0), i64 18}, %Context* noalias nonnull %3)
; IfStmt
%21 = load %..string, %..string* %1, align 8
%22 = extractvalue %..string %21, 1
%23 = icmp sgt i64 %22, 0
%24 = zext i1 %23 to i8
%25 = trunc i8 %24 to i1
br i1 %25, label %if.then-2, label %if.done-3
if.then-2:
; SelectorExpr
%26 = load i64, i64* %2, align 8
%27 = call {i64, i64} @os-3.write_string(i64 %26, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$43, i64 0, i32 0), i64 2}, %Context* noalias nonnull %3)
; SelectorExpr
%28 = load i64, i64* %2, align 8
%29 = load %..string, %..string* %1, align 8
%30 = call {i64, i64} @os-3.write_string(i64 %28, %..string %29, %Context* noalias nonnull %3)
br label %if.done-3
if.done-3:
; SelectorExpr
%31 = load i64, i64* %2, align 8
%32 = call {i64, i64} @os-3.write_byte(i64 %31, i8 10, %Context* noalias nonnull %3)
call ccc void @llvm.debugtrap()
br label %if.done-4
if.done-4:
; ReturnStmt
%33 = load i8, i8* %0, align 1
ret i8 %33
}
define void @panic(%..string %message, %Source_Code_Location* %loc) #0 {
decls-0:
%0 = alloca %..string, align 16
%1 = alloca i64, align 16
%2 = alloca %Context, align 16
%3 = bitcast %Context* %2 to %..rawptr
%4 = call %..rawptr @__mem_zero(%..rawptr %3, i64 72)
store %Context zeroinitializer, %Context* %2
%5 = load %Context, %Context* @__ggv$0, align 8
store %Context %5, %Context* %2
%6 = getelementptr inbounds %Context, %Context* %2, i64 0, i32 0
%7 = call %Allocator @default_allocator(%Context* noalias nonnull %2)
store %Allocator %7, %Allocator* %6
%8 = alloca %Source_Code_Location, align 16
store %..string %message, %..string* %0
%9 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
; fd
; SelectorExpr
%10 = load i64, i64* @os_windows-6.stderr, align 8
store i64 %10, i64* %1
%11 = load i64, i64* %1, align 8
%12 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
%13 = bitcast %Source_Code_Location* %8 to %..rawptr
%14 = call %..rawptr @__mem_zero(%..rawptr %13, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %8
store %Source_Code_Location %12, %Source_Code_Location* %8
call void @__print_caller_location(i64 %11, %Source_Code_Location* %8, %Context* noalias nonnull %2)
; SelectorExpr
%15 = load i64, i64* %1, align 8
%16 = call {i64, i64} @os-3.write_string(i64 %15, %..string {i8* getelementptr inbounds ([7 x i8], [7 x i8]* @__str$44, i64 0, i32 0), i64 6}, %Context* noalias nonnull %2)
; IfStmt
%17 = load %..string, %..string* %0, align 8
%18 = extractvalue %..string %17, 1
%19 = icmp sgt i64 %18, 0
%20 = zext i1 %19 to i8
%21 = trunc i8 %20 to i1
br i1 %21, label %if.then-1, label %if.done-2
if.then-1:
; SelectorExpr
%22 = load i64, i64* %1, align 8
%23 = call {i64, i64} @os-3.write_string(i64 %22, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$45, i64 0, i32 0), i64 2}, %Context* noalias nonnull %2)
; SelectorExpr
%24 = load i64, i64* %1, align 8
%25 = load %..string, %..string* %0, align 8
%26 = call {i64, i64} @os-3.write_string(i64 %24, %..string %25, %Context* noalias nonnull %2)
br label %if.done-2
if.done-2:
; SelectorExpr
%27 = load i64, i64* %1, align 8
%28 = call {i64, i64} @os-3.write_byte(i64 %27, i8 10, %Context* noalias nonnull %2)
call ccc void @llvm.debugtrap()
ret void
}
define i8 @__string_eq(%..string %a, %..string %b) #0 {
decls-0:
%0 = alloca %..string, align 16
%1 = alloca %..string, align 16
store %..string %a, %..string* %0
store %..string %b, %..string* %1
; SwitchStmt
%2 = load %..string, %..string* %0, align 8
%3 = extractvalue %..string %2, 1
%4 = load %..string, %..string* %1, align 8
%5 = extractvalue %..string %4, 1
%6 = icmp ne i64 %3, %5
%7 = zext i1 %6 to i8
%8 = icmp eq i8 1, %7
br i1 %8, label %switch.case.body-2, label %switch.case.next-1
switch.case.next-1:
%9 = load %..string, %..string* %0, align 8
%10 = extractvalue %..string %9, 1
%11 = icmp eq i64 %10, 0
%12 = zext i1 %11 to i8
%13 = icmp eq i8 1, %12
br i1 %13, label %switch.fall.body-4, label %switch.case.next-3
switch.case.body-2:
; ReturnStmt
ret i8 0
switch.case.next-3:
; IndexExpr
%14 = load %..string, %..string* %0, align 8
%15 = extractvalue %..string %14, 0
%16 = extractvalue %..string %14, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$46, i64 0, i32 0), i64 51}, i64 851, i64 10, i64 0, i64 %16)
%17 = getelementptr inbounds i8, i8* %15, i64 0
%18 = getelementptr inbounds i8, i8* %17, i64 0
; IndexExpr
%19 = load %..string, %..string* %1, align 8
%20 = extractvalue %..string %19, 0
%21 = extractvalue %..string %19, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$47, i64 0, i32 0), i64 51}, i64 851, i64 19, i64 0, i64 %21)
%22 = getelementptr inbounds i8, i8* %20, i64 0
%23 = getelementptr inbounds i8, i8* %22, i64 0
%24 = icmp eq i8* %18, %23
%25 = zext i1 %24 to i8
%26 = icmp eq i8 1, %25
br i1 %26, label %switch.fall.body-6, label %switch.case.next-5
switch.fall.body-4:
; ReturnStmt
ret i8 1
switch.case.next-5:
; ReturnStmt
%27 = load %..string, %..string* %0, align 8
%28 = load %..string, %..string* %1, align 8
%29 = call i64 @__string_cmp(%..string %27, %..string %28)
%30 = icmp eq i64 %29, 0
%31 = zext i1 %30 to i8
ret i8 %31
switch.fall.body-6:
; ReturnStmt
ret i8 1
}
define i64 @__string_cmp(%..string %a, %..string %b) #0 {
decls-0:
%0 = alloca %..string, align 16
%1 = alloca %..string, align 16
store %..string %a, %..string* %0
store %..string %b, %..string* %1
; ReturnStmt
; IndexExpr
%2 = load %..string, %..string* %0, align 8
%3 = extractvalue %..string %2, 0
%4 = extractvalue %..string %2, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$48, i64 0, i32 0), i64 51}, i64 857, i64 26, i64 0, i64 %4)
%5 = getelementptr inbounds i8, i8* %3, i64 0
%6 = getelementptr inbounds i8, i8* %5, i64 0
; IndexExpr
%7 = load %..string, %..string* %1, align 8
%8 = extractvalue %..string %7, 0
%9 = extractvalue %..string %7, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$49, i64 0, i32 0), i64 51}, i64 857, i64 33, i64 0, i64 %9)
%10 = getelementptr inbounds i8, i8* %8, i64 0
%11 = getelementptr inbounds i8, i8* %10, i64 0
; min
%12 = load %..string, %..string* %1, align 8
%13 = extractvalue %..string %12, 1
%14 = load %..string, %..string* %0, align 8
%15 = extractvalue %..string %14, 1
%16 = icmp slt i64 %15, %13
%17 = select i1 %16, i64 %15, i64 %13
%18 = call i64 @__mem_compare(i8* %6, i8* %11, i64 %17)
ret i64 %18
}
define i8 @__string_ne(%..string %a, %..string %b) alwaysinline #1 {
decls-0:
%0 = alloca %..string, align 16
%1 = alloca %..string, align 16
store %..string %a, %..string* %0
store %..string %b, %..string* %1
; ReturnStmt
%2 = load %..string, %..string* %0, align 8
%3 = load %..string, %..string* %1, align 8
%4 = call i8 @__string_eq(%..string %2, %..string %3)
%5 = xor i8 -1, %4
ret i8 %5
}
define i8 @__string_lt(%..string %a, %..string %b) alwaysinline #1 {
decls-0:
%0 = alloca %..string, align 16
%1 = alloca %..string, align 16
store %..string %a, %..string* %0
store %..string %b, %..string* %1
; ReturnStmt
%2 = load %..string, %..string* %0, align 8
%3 = load %..string, %..string* %1, align 8
%4 = call i64 @__string_cmp(%..string %2, %..string %3)
%5 = icmp slt i64 %4, 0
%6 = zext i1 %5 to i8
ret i8 %6
}
define i8 @__string_gt(%..string %a, %..string %b) alwaysinline #1 {
decls-0:
%0 = alloca %..string, align 16
%1 = alloca %..string, align 16
store %..string %a, %..string* %0
store %..string %b, %..string* %1
; ReturnStmt
%2 = load %..string, %..string* %0, align 8
%3 = load %..string, %..string* %1, align 8
%4 = call i64 @__string_cmp(%..string %2, %..string %3)
%5 = icmp sgt i64 %4, 0
%6 = zext i1 %5 to i8
ret i8 %6
}
define i8 @__string_le(%..string %a, %..string %b) alwaysinline #1 {
decls-0:
%0 = alloca %..string, align 16
%1 = alloca %..string, align 16
store %..string %a, %..string* %0
store %..string %b, %..string* %1
; ReturnStmt
%2 = load %..string, %..string* %0, align 8
%3 = load %..string, %..string* %1, align 8
%4 = call i64 @__string_cmp(%..string %2, %..string %3)
%5 = icmp sle i64 %4, 0
%6 = zext i1 %5 to i8
ret i8 %6
}
define i8 @__string_ge(%..string %a, %..string %b) alwaysinline #1 {
decls-0:
%0 = alloca %..string, align 16
%1 = alloca %..string, align 16
store %..string %a, %..string* %0
store %..string %b, %..string* %1
; ReturnStmt
%2 = load %..string, %..string* %0, align 8
%3 = load %..string, %..string* %1, align 8
%4 = call i64 @__string_cmp(%..string %2, %..string %3)
%5 = icmp sge i64 %4, 0
%6 = zext i1 %5 to i8
ret i8 %6
}
define i8 @__complex64_eq(%..complex64 %a, %..complex64 %b) alwaysinline #1 {
decls-0:
%0 = alloca %..complex64, align 16
%1 = alloca %..complex64, align 16
store %..complex64 %a, %..complex64* %0
store %..complex64 %b, %..complex64* %1
; ReturnStmt
; real
%2 = load %..complex64, %..complex64* %0, align 4
%3 = extractvalue %..complex64 %2, 0
; real
%4 = load %..complex64, %..complex64* %1, align 4
%5 = extractvalue %..complex64 %4, 0
%6 = fcmp oeq float %3, %5
%7 = zext i1 %6 to i8
; real
%8 = load %..complex64, %..complex64* %0, align 4
%9 = extractvalue %..complex64 %8, 0
; real
%10 = load %..complex64, %..complex64* %1, align 4
%11 = extractvalue %..complex64 %10, 0
%12 = fcmp oeq float %9, %11
%13 = zext i1 %12 to i8
%14 = trunc i8 %13 to i1
br i1 %14, label %logical.cmp.rhs-1, label %logical.cmp.done-2
logical.cmp.rhs-1:
; imag
%15 = load %..complex64, %..complex64* %0, align 4
%16 = extractvalue %..complex64 %15, 1
; imag
%17 = load %..complex64, %..complex64* %1, align 4
%18 = extractvalue %..complex64 %17, 1
%19 = fcmp oeq float %16, %18
%20 = zext i1 %19 to i8
br label %logical.cmp.done-2
logical.cmp.done-2:
%21 = phi i8 [ 0, %decls-0 ], [ %20, %logical.cmp.rhs-1 ]
ret i8 %21
}
define i8 @__complex64_ne(%..complex64 %a, %..complex64 %b) alwaysinline #1 {
decls-0:
%0 = alloca %..complex64, align 16
%1 = alloca %..complex64, align 16
store %..complex64 %a, %..complex64* %0
store %..complex64 %b, %..complex64* %1
; ReturnStmt
; real
%2 = load %..complex64, %..complex64* %0, align 4
%3 = extractvalue %..complex64 %2, 0
; real
%4 = load %..complex64, %..complex64* %1, align 4
%5 = extractvalue %..complex64 %4, 0
%6 = fcmp one float %3, %5
%7 = zext i1 %6 to i8
; real
%8 = load %..complex64, %..complex64* %0, align 4
%9 = extractvalue %..complex64 %8, 0
; real
%10 = load %..complex64, %..complex64* %1, align 4
%11 = extractvalue %..complex64 %10, 0
%12 = fcmp one float %9, %11
%13 = zext i1 %12 to i8
%14 = trunc i8 %13 to i1
br i1 %14, label %logical.cmp.done-2, label %logical.cmp.rhs-1
logical.cmp.rhs-1:
; imag
%15 = load %..complex64, %..complex64* %0, align 4
%16 = extractvalue %..complex64 %15, 1
; imag
%17 = load %..complex64, %..complex64* %1, align 4
%18 = extractvalue %..complex64 %17, 1
%19 = fcmp one float %16, %18
%20 = zext i1 %19 to i8
br label %logical.cmp.done-2
logical.cmp.done-2:
%21 = phi i8 [ 1, %decls-0 ], [ %20, %logical.cmp.rhs-1 ]
ret i8 %21
}
define i8 @__complex128_eq(%..complex128* %a, %..complex128* %b) alwaysinline #1 {
decls-0:
%0 = load %..complex128, %..complex128* %a, align 8
%1 = load %..complex128, %..complex128* %b, align 8
; ReturnStmt
; real
%2 = load %..complex128, %..complex128* %a, align 8
%3 = extractvalue %..complex128 %2, 0
; real
%4 = load %..complex128, %..complex128* %b, align 8
%5 = extractvalue %..complex128 %4, 0
%6 = fcmp oeq double %3, %5
%7 = zext i1 %6 to i8
; real
%8 = load %..complex128, %..complex128* %a, align 8
%9 = extractvalue %..complex128 %8, 0
; real
%10 = load %..complex128, %..complex128* %b, align 8
%11 = extractvalue %..complex128 %10, 0
%12 = fcmp oeq double %9, %11
%13 = zext i1 %12 to i8
%14 = trunc i8 %13 to i1
br i1 %14, label %logical.cmp.rhs-1, label %logical.cmp.done-2
logical.cmp.rhs-1:
; imag
%15 = load %..complex128, %..complex128* %a, align 8
%16 = extractvalue %..complex128 %15, 1
; imag
%17 = load %..complex128, %..complex128* %b, align 8
%18 = extractvalue %..complex128 %17, 1
%19 = fcmp oeq double %16, %18
%20 = zext i1 %19 to i8
br label %logical.cmp.done-2
logical.cmp.done-2:
%21 = phi i8 [ 0, %decls-0 ], [ %20, %logical.cmp.rhs-1 ]
ret i8 %21
}
define i8 @__complex128_ne(%..complex128* %a, %..complex128* %b) alwaysinline #1 {
decls-0:
%0 = load %..complex128, %..complex128* %a, align 8
%1 = load %..complex128, %..complex128* %b, align 8
; ReturnStmt
; real
%2 = load %..complex128, %..complex128* %a, align 8
%3 = extractvalue %..complex128 %2, 0
; real
%4 = load %..complex128, %..complex128* %b, align 8
%5 = extractvalue %..complex128 %4, 0
%6 = fcmp one double %3, %5
%7 = zext i1 %6 to i8
; real
%8 = load %..complex128, %..complex128* %a, align 8
%9 = extractvalue %..complex128 %8, 0
; real
%10 = load %..complex128, %..complex128* %b, align 8
%11 = extractvalue %..complex128 %10, 0
%12 = fcmp one double %9, %11
%13 = zext i1 %12 to i8
%14 = trunc i8 %13 to i1
br i1 %14, label %logical.cmp.done-2, label %logical.cmp.rhs-1
logical.cmp.rhs-1:
; imag
%15 = load %..complex128, %..complex128* %a, align 8
%16 = extractvalue %..complex128 %15, 1
; imag
%17 = load %..complex128, %..complex128* %b, align 8
%18 = extractvalue %..complex128 %17, 1
%19 = fcmp one double %16, %18
%20 = zext i1 %19 to i8
br label %logical.cmp.done-2
logical.cmp.done-2:
%21 = phi i8 [ 1, %decls-0 ], [ %20, %logical.cmp.rhs-1 ]
ret i8 %21
}
define void @__bounds_check_error(%..string %file, i64 %line, i64 %column, i64 %index, i64 %count) #0 {
decls-0:
%0 = alloca %..string, align 16
%1 = alloca i64, align 16
%2 = alloca i64, align 16
%3 = alloca i64, align 16
%4 = alloca i64, align 16
%5 = alloca i64, align 16
%6 = alloca %Source_Code_Location, align 16
%7 = alloca %Context, align 16
%8 = bitcast %Context* %7 to %..rawptr
%9 = call %..rawptr @__mem_zero(%..rawptr %8, i64 72)
store %Context zeroinitializer, %Context* %7
%10 = load %Context, %Context* @__ggv$0, align 8
store %Context %10, %Context* %7
%11 = getelementptr inbounds %Context, %Context* %7, i64 0, i32 0
%12 = call %Allocator @default_allocator(%Context* noalias nonnull %7)
store %Allocator %12, %Allocator* %11
%13 = alloca %Source_Code_Location, align 16
store %..string %file, %..string* %0
store i64 %line, i64* %1
store i64 %column, i64* %2
store i64 %index, i64* %3
store i64 %count, i64* %4
; IfStmt
%14 = load i64, i64* %3, align 8
%15 = icmp sle i64 0, %14
%16 = zext i1 %15 to i8
%17 = trunc i8 %16 to i1
br i1 %17, label %cmp.and-1, label %if.done-3
cmp.and-1:
%18 = load i64, i64* %3, align 8
%19 = load i64, i64* %4, align 8
%20 = icmp slt i64 %18, %19
%21 = zext i1 %20 to i8
%22 = trunc i8 %21 to i1
br i1 %22, label %if.then-2, label %if.done-3
if.then-2:
; ReturnStmt
ret void
if.done-3:
; fd
; SelectorExpr
%23 = load i64, i64* @os_windows-6.stderr, align 8
store i64 %23, i64* %5
%24 = load i64, i64* %5, align 8
; CompoundLit
%25 = bitcast %Source_Code_Location* %6 to %..rawptr
%26 = call %..rawptr @__mem_zero(%..rawptr %25, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %6
store %Source_Code_Location {%..string zeroinitializer, i64 zeroinitializer, i64 zeroinitializer, %..string zeroinitializer}, %Source_Code_Location* %6
%27 = load %..string, %..string* %0, align 8
%28 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %6, i64 0, i32 0
store %..string %27, %..string* %28
%29 = load i64, i64* %1, align 8
%30 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %6, i64 0, i32 1
store i64 %29, i64* %30
%31 = load i64, i64* %2, align 8
%32 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %6, i64 0, i32 2
store i64 %31, i64* %32
%33 = load %Source_Code_Location, %Source_Code_Location* %6, align 8
%34 = bitcast %Source_Code_Location* %13 to %..rawptr
%35 = call %..rawptr @__mem_zero(%..rawptr %34, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %13
store %Source_Code_Location %33, %Source_Code_Location* %13
call void @__print_caller_location(i64 %24, %Source_Code_Location* %13, %Context* noalias nonnull %7)
; SelectorExpr
%36 = load i64, i64* %5, align 8
%37 = call {i64, i64} @os-3.write_string(i64 %36, %..string {i8* getelementptr inbounds ([8 x i8], [8 x i8]* @__str$4a, i64 0, i32 0), i64 7}, %Context* noalias nonnull %7)
%38 = load i64, i64* %5, align 8
%39 = load i64, i64* %3, align 8
%40 = bitcast i64 %39 to i64
call void @__print_i64(i64 %38, i64 %40, %Context* noalias nonnull %7)
; SelectorExpr
%41 = load i64, i64* %5, align 8
%42 = call {i64, i64} @os-3.write_string(i64 %41, %..string {i8* getelementptr inbounds ([28 x i8], [28 x i8]* @__str$4b, i64 0, i32 0), i64 27}, %Context* noalias nonnull %7)
%43 = load i64, i64* %5, align 8
%44 = load i64, i64* %4, align 8
%45 = bitcast i64 %44 to i64
call void @__print_i64(i64 %43, i64 %45, %Context* noalias nonnull %7)
; SelectorExpr
%46 = load i64, i64* %5, align 8
%47 = call {i64, i64} @os-3.write_byte(i64 %46, i8 10, %Context* noalias nonnull %7)
call ccc void @llvm.debugtrap()
ret void
}
define void @__slice_expr_error(%..string %file, i64 %line, i64 %column, i64 %lo, i64 %hi, i64 %len) #0 {
decls-0:
%0 = alloca %..string, align 16
%1 = alloca i64, align 16
%2 = alloca i64, align 16
%3 = alloca i64, align 16
%4 = alloca i64, align 16
%5 = alloca i64, align 16
%6 = alloca i64, align 16
%7 = alloca %Source_Code_Location, align 16
%8 = alloca %Context, align 16
%9 = bitcast %Context* %8 to %..rawptr
%10 = call %..rawptr @__mem_zero(%..rawptr %9, i64 72)
store %Context zeroinitializer, %Context* %8
%11 = load %Context, %Context* @__ggv$0, align 8
store %Context %11, %Context* %8
%12 = getelementptr inbounds %Context, %Context* %8, i64 0, i32 0
%13 = call %Allocator @default_allocator(%Context* noalias nonnull %8)
store %Allocator %13, %Allocator* %12
%14 = alloca %Source_Code_Location, align 16
store %..string %file, %..string* %0
store i64 %line, i64* %1
store i64 %column, i64* %2
store i64 %lo, i64* %3
store i64 %hi, i64* %4
store i64 %len, i64* %5
; IfStmt
%15 = load i64, i64* %3, align 8
%16 = icmp sle i64 0, %15
%17 = zext i1 %16 to i8
%18 = trunc i8 %17 to i1
br i1 %18, label %cmp.and-1, label %if.done-4
cmp.and-1:
%19 = load i64, i64* %3, align 8
%20 = load i64, i64* %4, align 8
%21 = icmp sle i64 %19, %20
%22 = zext i1 %21 to i8
%23 = trunc i8 %22 to i1
br i1 %23, label %cmp.and-2, label %if.done-4
cmp.and-2:
%24 = load i64, i64* %4, align 8
%25 = load i64, i64* %5, align 8
%26 = icmp sle i64 %24, %25
%27 = zext i1 %26 to i8
%28 = trunc i8 %27 to i1
br i1 %28, label %if.then-3, label %if.done-4
if.then-3:
; ReturnStmt
ret void
if.done-4:
; fd
; SelectorExpr
%29 = load i64, i64* @os_windows-6.stderr, align 8
store i64 %29, i64* %6
%30 = load i64, i64* %6, align 8
; CompoundLit
%31 = bitcast %Source_Code_Location* %7 to %..rawptr
%32 = call %..rawptr @__mem_zero(%..rawptr %31, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %7
store %Source_Code_Location {%..string zeroinitializer, i64 zeroinitializer, i64 zeroinitializer, %..string zeroinitializer}, %Source_Code_Location* %7
%33 = load %..string, %..string* %0, align 8
%34 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %7, i64 0, i32 0
store %..string %33, %..string* %34
%35 = load i64, i64* %1, align 8
%36 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %7, i64 0, i32 1
store i64 %35, i64* %36
%37 = load i64, i64* %2, align 8
%38 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %7, i64 0, i32 2
store i64 %37, i64* %38
%39 = load %Source_Code_Location, %Source_Code_Location* %7, align 8
%40 = bitcast %Source_Code_Location* %14 to %..rawptr
%41 = call %..rawptr @__mem_zero(%..rawptr %40, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %14
store %Source_Code_Location %39, %Source_Code_Location* %14
call void @__print_caller_location(i64 %30, %Source_Code_Location* %14, %Context* noalias nonnull %8)
; SelectorExpr
%42 = load i64, i64* %6, align 8
%43 = call {i64, i64} @os-3.write_string(i64 %42, %..string {i8* getelementptr inbounds ([25 x i8], [25 x i8]* @__str$4c, i64 0, i32 0), i64 24}, %Context* noalias nonnull %8)
%44 = load i64, i64* %6, align 8
%45 = load i64, i64* %3, align 8
%46 = bitcast i64 %45 to i64
call void @__print_i64(i64 %44, i64 %46, %Context* noalias nonnull %8)
; SelectorExpr
%47 = load i64, i64* %6, align 8
%48 = call {i64, i64} @os-3.write_string(i64 %47, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$4d, i64 0, i32 0), i64 2}, %Context* noalias nonnull %8)
%49 = load i64, i64* %6, align 8
%50 = load i64, i64* %4, align 8
%51 = bitcast i64 %50 to i64
call void @__print_i64(i64 %49, i64 %51, %Context* noalias nonnull %8)
; SelectorExpr
%52 = load i64, i64* %6, align 8
%53 = call {i64, i64} @os-3.write_string(i64 %52, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$4e, i64 0, i32 0), i64 2}, %Context* noalias nonnull %8)
%54 = load i64, i64* %6, align 8
%55 = load i64, i64* %5, align 8
%56 = bitcast i64 %55 to i64
call void @__print_i64(i64 %54, i64 %56, %Context* noalias nonnull %8)
; SelectorExpr
%57 = load i64, i64* %6, align 8
%58 = call {i64, i64} @os-3.write_byte(i64 %57, i8 10, %Context* noalias nonnull %8)
call ccc void @llvm.debugtrap()
ret void
}
define void @__dynamic_array_expr_error(%..string %file, i64 %line, i64 %column, i64 %low, i64 %high, i64 %max) #0 {
decls-0:
%0 = alloca %..string, align 16
%1 = alloca i64, align 16
%2 = alloca i64, align 16
%3 = alloca i64, align 16
%4 = alloca i64, align 16
%5 = alloca i64, align 16
%6 = alloca i64, align 16
%7 = alloca %Source_Code_Location, align 16
%8 = alloca %Context, align 16
%9 = bitcast %Context* %8 to %..rawptr
%10 = call %..rawptr @__mem_zero(%..rawptr %9, i64 72)
store %Context zeroinitializer, %Context* %8
%11 = load %Context, %Context* @__ggv$0, align 8
store %Context %11, %Context* %8
%12 = getelementptr inbounds %Context, %Context* %8, i64 0, i32 0
%13 = call %Allocator @default_allocator(%Context* noalias nonnull %8)
store %Allocator %13, %Allocator* %12
%14 = alloca %Source_Code_Location, align 16
store %..string %file, %..string* %0
store i64 %line, i64* %1
store i64 %column, i64* %2
store i64 %low, i64* %3
store i64 %high, i64* %4
store i64 %max, i64* %5
; IfStmt
%15 = load i64, i64* %3, align 8
%16 = icmp sle i64 0, %15
%17 = zext i1 %16 to i8
%18 = trunc i8 %17 to i1
br i1 %18, label %cmp.and-1, label %if.done-4
cmp.and-1:
%19 = load i64, i64* %3, align 8
%20 = load i64, i64* %4, align 8
%21 = icmp sle i64 %19, %20
%22 = zext i1 %21 to i8
%23 = trunc i8 %22 to i1
br i1 %23, label %cmp.and-2, label %if.done-4
cmp.and-2:
%24 = load i64, i64* %4, align 8
%25 = load i64, i64* %5, align 8
%26 = icmp sle i64 %24, %25
%27 = zext i1 %26 to i8
%28 = trunc i8 %27 to i1
br i1 %28, label %if.then-3, label %if.done-4
if.then-3:
; ReturnStmt
ret void
if.done-4:
; fd
; SelectorExpr
%29 = load i64, i64* @os_windows-6.stderr, align 8
store i64 %29, i64* %6
%30 = load i64, i64* %6, align 8
; CompoundLit
%31 = bitcast %Source_Code_Location* %7 to %..rawptr
%32 = call %..rawptr @__mem_zero(%..rawptr %31, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %7
store %Source_Code_Location {%..string zeroinitializer, i64 zeroinitializer, i64 zeroinitializer, %..string zeroinitializer}, %Source_Code_Location* %7
%33 = load %..string, %..string* %0, align 8
%34 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %7, i64 0, i32 0
store %..string %33, %..string* %34
%35 = load i64, i64* %1, align 8
%36 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %7, i64 0, i32 1
store i64 %35, i64* %36
%37 = load i64, i64* %2, align 8
%38 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %7, i64 0, i32 2
store i64 %37, i64* %38
%39 = load %Source_Code_Location, %Source_Code_Location* %7, align 8
%40 = bitcast %Source_Code_Location* %14 to %..rawptr
%41 = call %..rawptr @__mem_zero(%..rawptr %40, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %14
store %Source_Code_Location %39, %Source_Code_Location* %14
call void @__print_caller_location(i64 %30, %Source_Code_Location* %14, %Context* noalias nonnull %8)
; SelectorExpr
%42 = load i64, i64* %6, align 8
%43 = call {i64, i64} @os-3.write_string(i64 %42, %..string {i8* getelementptr inbounds ([32 x i8], [32 x i8]* @__str$4f, i64 0, i32 0), i64 31}, %Context* noalias nonnull %8)
%44 = load i64, i64* %6, align 8
%45 = load i64, i64* %3, align 8
%46 = bitcast i64 %45 to i64
call void @__print_i64(i64 %44, i64 %46, %Context* noalias nonnull %8)
; SelectorExpr
%47 = load i64, i64* %6, align 8
%48 = call {i64, i64} @os-3.write_string(i64 %47, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$50, i64 0, i32 0), i64 2}, %Context* noalias nonnull %8)
%49 = load i64, i64* %6, align 8
%50 = load i64, i64* %4, align 8
%51 = bitcast i64 %50 to i64
call void @__print_i64(i64 %49, i64 %51, %Context* noalias nonnull %8)
; SelectorExpr
%52 = load i64, i64* %6, align 8
%53 = call {i64, i64} @os-3.write_string(i64 %52, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$51, i64 0, i32 0), i64 2}, %Context* noalias nonnull %8)
%54 = load i64, i64* %6, align 8
%55 = load i64, i64* %5, align 8
%56 = bitcast i64 %55 to i64
call void @__print_i64(i64 %54, i64 %56, %Context* noalias nonnull %8)
; SelectorExpr
%57 = load i64, i64* %6, align 8
%58 = call {i64, i64} @os-3.write_byte(i64 %57, i8 10, %Context* noalias nonnull %8)
call ccc void @llvm.debugtrap()
ret void
}
define void @__type_assertion_check(i1 %ok, %..string %file, i64 %line, i64 %column, %Type_Info* %from, %Type_Info* %to) #0 {
decls-0:
%0 = alloca i8, align 16
%1 = alloca %..string, align 16
%2 = alloca i64, align 16
%3 = alloca i64, align 16
%4 = alloca %Type_Info*, align 16
%5 = alloca %Type_Info*, align 16
%6 = alloca i64, align 16
%7 = alloca %Source_Code_Location, align 16
%8 = alloca %Context, align 16
%9 = bitcast %Context* %8 to %..rawptr
%10 = call %..rawptr @__mem_zero(%..rawptr %9, i64 72)
store %Context zeroinitializer, %Context* %8
%11 = load %Context, %Context* @__ggv$0, align 8
store %Context %11, %Context* %8
%12 = getelementptr inbounds %Context, %Context* %8, i64 0, i32 0
%13 = call %Allocator @default_allocator(%Context* noalias nonnull %8)
store %Allocator %13, %Allocator* %12
%14 = alloca %Source_Code_Location, align 16
%15 = zext i1 %ok to i8
store i8 %15, i8* %0
store %..string %file, %..string* %1
store i64 %line, i64* %2
store i64 %column, i64* %3
store %Type_Info* %from, %Type_Info** %4
store %Type_Info* %to, %Type_Info** %5
; IfStmt
%16 = load i8, i8* %0, align 1
%17 = trunc i8 %16 to i1
br i1 %17, label %if.then-1, label %if.done-2
if.then-1:
; ReturnStmt
ret void
if.done-2:
; fd
; SelectorExpr
%18 = load i64, i64* @os_windows-6.stderr, align 8
store i64 %18, i64* %6
%19 = load i64, i64* %6, align 8
; CompoundLit
%20 = bitcast %Source_Code_Location* %7 to %..rawptr
%21 = call %..rawptr @__mem_zero(%..rawptr %20, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %7
store %Source_Code_Location {%..string zeroinitializer, i64 zeroinitializer, i64 zeroinitializer, %..string zeroinitializer}, %Source_Code_Location* %7
%22 = load %..string, %..string* %1, align 8
%23 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %7, i64 0, i32 0
store %..string %22, %..string* %23
%24 = load i64, i64* %2, align 8
%25 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %7, i64 0, i32 1
store i64 %24, i64* %25
%26 = load i64, i64* %3, align 8
%27 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %7, i64 0, i32 2
store i64 %26, i64* %27
%28 = load %Source_Code_Location, %Source_Code_Location* %7, align 8
%29 = bitcast %Source_Code_Location* %14 to %..rawptr
%30 = call %..rawptr @__mem_zero(%..rawptr %29, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %14
store %Source_Code_Location %28, %Source_Code_Location* %14
call void @__print_caller_location(i64 %19, %Source_Code_Location* %14, %Context* noalias nonnull %8)
; SelectorExpr
%31 = load i64, i64* %6, align 8
%32 = call {i64, i64} @os-3.write_string(i64 %31, %..string {i8* getelementptr inbounds ([29 x i8], [29 x i8]* @__str$52, i64 0, i32 0), i64 28}, %Context* noalias nonnull %8)
%33 = load i64, i64* %6, align 8
%34 = load %Type_Info*, %Type_Info** %4, align 8
call void @__print_type(i64 %33, %Type_Info* %34, %Context* noalias nonnull %8)
; SelectorExpr
%35 = load i64, i64* %6, align 8
%36 = call {i64, i64} @os-3.write_string(i64 %35, %..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$53, i64 0, i32 0), i64 4}, %Context* noalias nonnull %8)
%37 = load i64, i64* %6, align 8
%38 = load %Type_Info*, %Type_Info** %5, align 8
call void @__print_type(i64 %37, %Type_Info* %38, %Context* noalias nonnull %8)
; SelectorExpr
%39 = load i64, i64* %6, align 8
%40 = call {i64, i64} @os-3.write_byte(i64 %39, i8 10, %Context* noalias nonnull %8)
call ccc void @llvm.debugtrap()
ret void
}
define {i32, i64} @__string_decode_rune(%..string %s) alwaysinline #1 {
decls-0:
%0 = alloca %..string, align 16
%1 = alloca %Context, align 16
%2 = bitcast %Context* %1 to %..rawptr
%3 = call %..rawptr @__mem_zero(%..rawptr %2, i64 72)
store %Context zeroinitializer, %Context* %1
%4 = load %Context, %Context* @__ggv$0, align 8
store %Context %4, %Context* %1
%5 = getelementptr inbounds %Context, %Context* %1, i64 0, i32 0
%6 = call %Allocator @default_allocator(%Context* noalias nonnull %1)
store %Allocator %6, %Allocator* %5
%7 = alloca {i32, i64}, align 16
store %..string %s, %..string* %0
; ReturnStmt
; SelectorExpr
%8 = load %..string, %..string* %0, align 8
%9 = call {i32, i64} @utf8-4.decode_rune_from_string(%..string %8, %Context* noalias nonnull %1)
%10 = extractvalue {i32, i64} %9, 0
%11 = extractvalue {i32, i64} %9, 1
%12 = bitcast {i32, i64}* %7 to %..rawptr
%13 = call %..rawptr @__mem_zero(%..rawptr %12, i64 16)
store {i32, i64} zeroinitializer, {i32, i64}* %7
%14 = getelementptr inbounds {i32, i64}, {i32, i64}* %7, i64 0, i32 0
store i32 %10, i32* %14
%15 = getelementptr inbounds {i32, i64}, {i32, i64}* %7, i64 0, i32 1
store i64 %11, i64* %15
%16 = load {i32, i64}, {i32, i64}* %7, align 8
ret {i32, i64} %16
}
define void @__bounds_check_error_loc(%Source_Code_Location* %loc, i64 %index, i64 %count) alwaysinline #1 {
decls-0:
%0 = alloca i64, align 16
%1 = alloca i64, align 16
%2 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
store i64 %index, i64* %0
store i64 %count, i64* %1
%3 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %loc, i64 0, i32 0
%4 = load %..string, %..string* %3, align 8
%5 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %loc, i64 0, i32 1
%6 = load i64, i64* %5, align 8
%7 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %loc, i64 0, i32 2
%8 = load i64, i64* %7, align 8
%9 = load i64, i64* %0, align 8
%10 = load i64, i64* %1, align 8
call void @__bounds_check_error(%..string %4, i64 %6, i64 %8, i64 %9, i64 %10)
ret void
}
define void @__slice_expr_error_loc(%Source_Code_Location* %loc, i64 %lo, i64 %hi, i64 %len) alwaysinline #1 {
decls-0:
%0 = alloca i64, align 16
%1 = alloca i64, align 16
%2 = alloca i64, align 16
%3 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
store i64 %lo, i64* %0
store i64 %hi, i64* %1
store i64 %len, i64* %2
%4 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %loc, i64 0, i32 0
%5 = load %..string, %..string* %4, align 8
%6 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %loc, i64 0, i32 1
%7 = load i64, i64* %6, align 8
%8 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %loc, i64 0, i32 2
%9 = load i64, i64* %8, align 8
%10 = load i64, i64* %0, align 8
%11 = load i64, i64* %1, align 8
%12 = load i64, i64* %2, align 8
call void @__slice_expr_error(%..string %5, i64 %7, i64 %9, i64 %10, i64 %11, i64 %12)
ret void
}
define %..rawptr @__mem_set(%..rawptr %data, i32 %value, i64 %len) #0 {
decls-0:
%0 = alloca %..rawptr, align 16
%1 = alloca i32, align 16
%2 = alloca i64, align 16
store %..rawptr %data, %..rawptr* %0
store i32 %value, i32* %1
store i64 %len, i64* %2
; IfStmt
%3 = load %..rawptr, %..rawptr* %0, align 8
%4 = icmp eq %..rawptr %3, zeroinitializer
%5 = zext i1 %4 to i8
%6 = trunc i8 %5 to i1
br i1 %6, label %if.then-1, label %if.done-2
if.then-1:
; ReturnStmt
ret %..rawptr zeroinitializer
if.done-2:
%7 = load %..rawptr, %..rawptr* %0, align 8
%8 = load i32, i32* %1, align 4
%9 = trunc i32 %8 to i8
%10 = load i64, i64* %2, align 8
call ccc void @llvm.memset.p0i8.i64(%..rawptr %7, i8 %9, i64 %10, i32 1, i1 false)
; ReturnStmt
%11 = load %..rawptr, %..rawptr* %0, align 8
ret %..rawptr %11
}
define %..rawptr @__mem_zero(%..rawptr %data, i64 %len) #0 {
decls-0:
%0 = alloca %..rawptr, align 16
%1 = alloca i64, align 16
store %..rawptr %data, %..rawptr* %0
store i64 %len, i64* %1
; ReturnStmt
%2 = load %..rawptr, %..rawptr* %0, align 8
%3 = load i64, i64* %1, align 8
%4 = call %..rawptr @__mem_set(%..rawptr %2, i32 0, i64 %3)
ret %..rawptr %4
}
define %..rawptr @__mem_copy(%..rawptr %dst, %..rawptr %src, i64 %len) #0 {
decls-0:
%0 = alloca %..rawptr, align 16
%1 = alloca %..rawptr, align 16
%2 = alloca i64, align 16
store %..rawptr %dst, %..rawptr* %0
store %..rawptr %src, %..rawptr* %1
store i64 %len, i64* %2
; IfStmt
%3 = load %..rawptr, %..rawptr* %1, align 8
%4 = icmp eq %..rawptr %3, zeroinitializer
%5 = zext i1 %4 to i8
%6 = trunc i8 %5 to i1
br i1 %6, label %if.then-1, label %if.done-2
if.then-1:
; ReturnStmt
%7 = load %..rawptr, %..rawptr* %0, align 8
ret %..rawptr %7
if.done-2:
%8 = load %..rawptr, %..rawptr* %0, align 8
%9 = load %..rawptr, %..rawptr* %1, align 8
%10 = load i64, i64* %2, align 8
call ccc void @llvm.memmove.p0i8.p0i8.i64(%..rawptr %8, %..rawptr %9, i64 %10, i32 1, i1 false)
; ReturnStmt
%11 = load %..rawptr, %..rawptr* %0, align 8
ret %..rawptr %11
}
define %..rawptr @__mem_copy_non_overlapping(%..rawptr %dst, %..rawptr %src, i64 %len) #0 {
decls-0:
%0 = alloca %..rawptr, align 16
%1 = alloca %..rawptr, align 16
%2 = alloca i64, align 16
store %..rawptr %dst, %..rawptr* %0
store %..rawptr %src, %..rawptr* %1
store i64 %len, i64* %2
; IfStmt
%3 = load %..rawptr, %..rawptr* %1, align 8
%4 = icmp eq %..rawptr %3, zeroinitializer
%5 = zext i1 %4 to i8
%6 = trunc i8 %5 to i1
br i1 %6, label %if.then-1, label %if.done-2
if.then-1:
; ReturnStmt
%7 = load %..rawptr, %..rawptr* %0, align 8
ret %..rawptr %7
if.done-2:
%8 = load %..rawptr, %..rawptr* %0, align 8
%9 = load %..rawptr, %..rawptr* %1, align 8
%10 = load i64, i64* %2, align 8
call ccc void @llvm.memcpy.p0i8.p0i8.i64(%..rawptr %8, %..rawptr %9, i64 %10, i32 1, i1 false)
; ReturnStmt
%11 = load %..rawptr, %..rawptr* %0, align 8
ret %..rawptr %11
}
define i64 @__mem_compare(i8* %a, i8* %b, i64 %n) #0 {
decls-0:
%0 = alloca i8*, align 16
%1 = alloca i8*, align 16
%2 = alloca i64, align 16
%3 = alloca i64, align 16
%4 = alloca i64, align 16
%5 = alloca i64, align 16
store i8* %a, i8** %0
store i8* %b, i8** %1
store i64 %n, i64* %2
; RangeStmt
; i
%6 = bitcast i64* %3 to %..rawptr
%7 = call %..rawptr @__mem_zero(%..rawptr %6, i64 8)
store i64 zeroinitializer, i64* %3
%8 = bitcast i64* %4 to %..rawptr
%9 = call %..rawptr @__mem_zero(%..rawptr %8, i64 8)
store i64 zeroinitializer, i64* %4
store i64 0, i64* %4
%10 = bitcast i64* %5 to %..rawptr
%11 = call %..rawptr @__mem_zero(%..rawptr %10, i64 8)
store i64 zeroinitializer, i64* %5
store i64 0, i64* %5
br label %for.interval.loop-1
for.interval.loop-1:
%12 = load i64, i64* %2, align 8
%13 = load i64, i64* %4, align 8
%14 = icmp slt i64 %13, %12
br i1 %14, label %for.interval.body-2, label %for.interval.done-7
for.interval.body-2:
%15 = load i64, i64* %4, align 8
%16 = load i64, i64* %5, align 8
%17 = load i64, i64* %4, align 8
%18 = add i64 %17, 1
store i64 %18, i64* %4
%19 = load i64, i64* %5, align 8
%20 = add i64 %19, 1
store i64 %20, i64* %5
store i64 %15, i64* %3
; SwitchStmt
%21 = load i8*, i8** %0, align 8
%22 = load i64, i64* %3, align 8
%23 = getelementptr inbounds i8, i8* %21, i64 %22
%24 = getelementptr inbounds i8, i8* %23, i64 0
%25 = load i8, i8* %24, align 1
%26 = load i8*, i8** %1, align 8
%27 = load i64, i64* %3, align 8
%28 = getelementptr inbounds i8, i8* %26, i64 %27
%29 = getelementptr inbounds i8, i8* %28, i64 0
%30 = load i8, i8* %29, align 1
%31 = icmp ult i8 %25, %30
%32 = zext i1 %31 to i8
%33 = icmp eq i8 1, %32
br i1 %33, label %switch.case.body-4, label %switch.case.next-3
switch.case.next-3:
%34 = load i8*, i8** %0, align 8
%35 = load i64, i64* %3, align 8
%36 = getelementptr inbounds i8, i8* %34, i64 %35
%37 = getelementptr inbounds i8, i8* %36, i64 0
%38 = load i8, i8* %37, align 1
%39 = load i8*, i8** %1, align 8
%40 = load i64, i64* %3, align 8
%41 = getelementptr inbounds i8, i8* %39, i64 %40
%42 = getelementptr inbounds i8, i8* %41, i64 0
%43 = load i8, i8* %42, align 1
%44 = icmp ugt i8 %38, %43
%45 = zext i1 %44 to i8
%46 = icmp eq i8 1, %45
br i1 %46, label %switch.fall.body-6, label %switch.case.next-5
switch.case.body-4:
; ReturnStmt
ret i64 -1
switch.case.next-5:
br label %for.interval.loop-1
switch.fall.body-6:
; ReturnStmt
ret i64 1
for.interval.done-7:
; ReturnStmt
ret i64 0
}
define float @__abs_f32(float %x) alwaysinline #1 {
decls-0:
%0 = alloca float, align 16
store float %x, float* %0
; ReturnStmt
%1 = load float, float* %0, align 4
%2 = call ccc float @llvm.fabs.f32(float %1)
ret float %2
}
define double @__abs_f64(double %x) alwaysinline #1 {
decls-0:
%0 = alloca double, align 16
store double %x, double* %0
; ReturnStmt
%1 = load double, double* %0, align 8
%2 = call ccc double @llvm.fabs.f64(double %1)
ret double %2
}
define float @__min_f32(float %a, float %b, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca float, align 16
%1 = alloca float, align 16
store float %a, float* %0
store float %b, float* %1
; ReturnStmt
%2 = load float, float* %0, align 4
%3 = load float, float* %1, align 4
%4 = call ccc float @llvm.minnum.f32(float %2, float %3)
ret float %4
}
define double @__min_f64(double %a, double %b, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca double, align 16
%1 = alloca double, align 16
store double %a, double* %0
store double %b, double* %1
; ReturnStmt
%2 = load double, double* %0, align 8
%3 = load double, double* %1, align 8
%4 = call ccc double @llvm.minnum.f64(double %2, double %3)
ret double %4
}
define float @__max_f32(float %a, float %b, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca float, align 16
%1 = alloca float, align 16
store float %a, float* %0
store float %b, float* %1
; ReturnStmt
%2 = load float, float* %0, align 4
%3 = load float, float* %1, align 4
%4 = call ccc float @llvm.maxnum.f32(float %2, float %3)
ret float %4
}
define double @__max_f64(double %a, double %b, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca double, align 16
%1 = alloca double, align 16
store double %a, double* %0
store double %b, double* %1
; ReturnStmt
%2 = load double, double* %0, align 8
%3 = load double, double* %1, align 8
%4 = call ccc double @llvm.maxnum.f64(double %2, double %3)
ret double %4
}
define float @__abs_complex64(%..complex64 %x) alwaysinline #1 {
decls-0:
%0 = alloca %..complex64, align 16
%1 = alloca float, align 16
%2 = alloca float, align 16
store %..complex64 %x, %..complex64* %0
; r
; i
; real
%3 = load %..complex64, %..complex64* %0, align 4
%4 = extractvalue %..complex64 %3, 0
; imag
%5 = load %..complex64, %..complex64* %0, align 4
%6 = extractvalue %..complex64 %5, 1
store float %4, float* %1
store float %6, float* %2
; ReturnStmt
%7 = load float, float* %1, align 4
%8 = load float, float* %1, align 4
%9 = fmul float %7, %8
%10 = load float, float* %2, align 4
%11 = load float, float* %2, align 4
%12 = fmul float %10, %11
%13 = fadd float %9, %12
%14 = call ccc float @llvm.sqrt.f32(float %13)
ret float %14
}
define double @__abs_complex128(%..complex128* %x) alwaysinline #1 {
decls-0:
%0 = alloca double, align 16
%1 = alloca double, align 16
%2 = load %..complex128, %..complex128* %x, align 8
; r
; i
; real
%3 = load %..complex128, %..complex128* %x, align 8
%4 = extractvalue %..complex128 %3, 0
; imag
%5 = load %..complex128, %..complex128* %x, align 8
%6 = extractvalue %..complex128 %5, 1
store double %4, double* %0
store double %6, double* %1
; ReturnStmt
%7 = load double, double* %0, align 8
%8 = load double, double* %0, align 8
%9 = fmul double %7, %8
%10 = load double, double* %1, align 8
%11 = load double, double* %1, align 8
%12 = fmul double %10, %11
%13 = fadd double %9, %12
%14 = call ccc double @llvm.sqrt.f64(double %13)
ret double %14
}
define void @__dynamic_array_make(%..rawptr %array_, i64 %elem_size, i64 %elem_align, i64 %len, i64 %cap, %Source_Code_Location* %loc, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %..rawptr, align 16
%1 = alloca i64, align 16
%2 = alloca i64, align 16
%3 = alloca i64, align 16
%4 = alloca i64, align 16
%5 = alloca %raw-5.Dynamic_Array*, align 16
%6 = alloca %Source_Code_Location, align 16
%7 = alloca %Source_Code_Location, align 16
store %..rawptr %array_, %..rawptr* %0
store i64 %elem_size, i64* %1
store i64 %elem_align, i64* %2
store i64 %len, i64* %3
store i64 %cap, i64* %4
%8 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
; array
%9 = load %..rawptr, %..rawptr* %0, align 8
%10 = bitcast %..rawptr %9 to %raw-5.Dynamic_Array*
store %raw-5.Dynamic_Array* %10, %raw-5.Dynamic_Array** %5
; AssignStmt
; SelectorExpr
%11 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %5, align 8
%12 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %11, i64 0
%13 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %12, i64 0, i32 3
; SelectorExpr
%14 = getelementptr inbounds %Context, %Context* %__.context_ptr, i64 0, i32 0
%15 = load %Allocator, %Allocator* %14, align 8
store %Allocator %15, %Allocator* %13
; SelectorExpr
; SelectorExpr
%16 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %5, align 8
%17 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %16, i64 0
%18 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %17, i64 0, i32 3
%19 = getelementptr inbounds %Allocator, %Allocator* %18, i64 0, i32 0
%20 = load %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)*, %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)** %19, align 8
%21 = icmp ne %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)* %20, zeroinitializer
%22 = zext i1 %21 to i8
%23 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$54, i64 0, i32 0), i64 51}, i64 1068, i64 2, %..string {i8* getelementptr inbounds ([21 x i8], [21 x i8]* @__str$55, i64 0, i32 0), i64 20})
%24 = trunc i8 %22 to i1
%25 = bitcast %Source_Code_Location* %6 to %..rawptr
%26 = call %..rawptr @__mem_zero(%..rawptr %25, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %6
store %Source_Code_Location %23, %Source_Code_Location* %6
%27 = call i8 @assert(i1 %24, %..string zeroinitializer, %Source_Code_Location* %6)
; IfStmt
%28 = load i64, i64* %4, align 8
%29 = icmp sgt i64 %28, 0
%30 = zext i1 %29 to i8
%31 = trunc i8 %30 to i1
br i1 %31, label %if.then-1, label %if.done-2
if.then-1:
%32 = load %..rawptr, %..rawptr* %0, align 8
%33 = load i64, i64* %1, align 8
%34 = load i64, i64* %2, align 8
%35 = load i64, i64* %4, align 8
%36 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
%37 = bitcast %Source_Code_Location* %7 to %..rawptr
%38 = call %..rawptr @__mem_zero(%..rawptr %37, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %7
store %Source_Code_Location %36, %Source_Code_Location* %7
%39 = call i8 @__dynamic_array_reserve(%..rawptr %32, i64 %33, i64 %34, i64 %35, %Source_Code_Location* %7, %Context* noalias nonnull %__.context_ptr)
; AssignStmt
; SelectorExpr
%40 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %5, align 8
%41 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %40, i64 0
%42 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %41, i64 0, i32 1
%43 = load i64, i64* %3, align 8
store i64 %43, i64* %42
br label %if.done-2
if.done-2:
ret void
}
define i8 @__dynamic_array_reserve(%..rawptr %array_, i64 %elem_size, i64 %elem_align, i64 %cap, %Source_Code_Location* %loc, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %..rawptr, align 16
%1 = alloca i64, align 16
%2 = alloca i64, align 16
%3 = alloca i64, align 16
%4 = alloca %raw-5.Dynamic_Array*, align 16
%5 = alloca %Source_Code_Location, align 16
%6 = alloca i64, align 16
%7 = alloca i64, align 16
%8 = alloca %Allocator, align 16
%9 = alloca %..rawptr, align 16
%10 = alloca %Source_Code_Location, align 16
store %..rawptr %array_, %..rawptr* %0
store i64 %elem_size, i64* %1
store i64 %elem_align, i64* %2
store i64 %cap, i64* %3
%11 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
; array
%12 = load %..rawptr, %..rawptr* %0, align 8
%13 = bitcast %..rawptr %12 to %raw-5.Dynamic_Array*
store %raw-5.Dynamic_Array* %13, %raw-5.Dynamic_Array** %4
; IfStmt
%14 = load i64, i64* %3, align 8
; SelectorExpr
%15 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %4, align 8
%16 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %15, i64 0
%17 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %16, i64 0, i32 2
%18 = load i64, i64* %17, align 8
%19 = icmp sle i64 %14, %18
%20 = zext i1 %19 to i8
%21 = trunc i8 %20 to i1
br i1 %21, label %if.then-1, label %if.done-2
if.then-1:
; ReturnStmt
ret i8 1
if.done-2:
; IfStmt
; SelectorExpr
; SelectorExpr
%22 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %4, align 8
%23 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %22, i64 0
%24 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %23, i64 0, i32 3
%25 = getelementptr inbounds %Allocator, %Allocator* %24, i64 0, i32 0
%26 = load %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)*, %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)** %25, align 8
%27 = icmp eq %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)* %26, zeroinitializer
%28 = zext i1 %27 to i8
%29 = trunc i8 %28 to i1
br i1 %29, label %if.then-3, label %if.done-4
if.then-3:
; AssignStmt
; SelectorExpr
%30 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %4, align 8
%31 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %30, i64 0
%32 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %31, i64 0, i32 3
; SelectorExpr
%33 = getelementptr inbounds %Context, %Context* %__.context_ptr, i64 0, i32 0
%34 = load %Allocator, %Allocator* %33, align 8
store %Allocator %34, %Allocator* %32
br label %if.done-4
if.done-4:
; SelectorExpr
; SelectorExpr
%35 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %4, align 8
%36 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %35, i64 0
%37 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %36, i64 0, i32 3
%38 = getelementptr inbounds %Allocator, %Allocator* %37, i64 0, i32 0
%39 = load %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)*, %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)** %38, align 8
%40 = icmp ne %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)* %39, zeroinitializer
%41 = zext i1 %40 to i8
%42 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$56, i64 0, i32 0), i64 51}, i64 1084, i64 2, %..string {i8* getelementptr inbounds ([24 x i8], [24 x i8]* @__str$57, i64 0, i32 0), i64 23})
%43 = trunc i8 %41 to i1
%44 = bitcast %Source_Code_Location* %5 to %..rawptr
%45 = call %..rawptr @__mem_zero(%..rawptr %44, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %5
store %Source_Code_Location %42, %Source_Code_Location* %5
%46 = call i8 @assert(i1 %43, %..string zeroinitializer, %Source_Code_Location* %5)
; old_size
; SelectorExpr
%47 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %4, align 8
%48 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %47, i64 0
%49 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %48, i64 0, i32 2
%50 = load i64, i64* %49, align 8
%51 = load i64, i64* %1, align 8
%52 = mul i64 %50, %51
store i64 %52, i64* %6
; new_size
%53 = load i64, i64* %3, align 8
%54 = load i64, i64* %1, align 8
%55 = mul i64 %53, %54
store i64 %55, i64* %7
; allocator
; SelectorExpr
%56 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %4, align 8
%57 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %56, i64 0
%58 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %57, i64 0, i32 3
%59 = load %Allocator, %Allocator* %58, align 8
store %Allocator %59, %Allocator* %8
; new_data
; SelectorExpr
%60 = getelementptr inbounds %Allocator, %Allocator* %8, i64 0, i32 0
%61 = load %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)*, %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)** %60, align 8
; SelectorExpr
%62 = getelementptr inbounds %Allocator, %Allocator* %8, i64 0, i32 1
%63 = load %..rawptr, %..rawptr* %62, align 8
%64 = load i64, i64* %7, align 8
%65 = load i64, i64* %2, align 8
; SelectorExpr
%66 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %4, align 8
%67 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %66, i64 0
%68 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %67, i64 0, i32 0
%69 = load %..rawptr, %..rawptr* %68, align 8
%70 = load i64, i64* %6, align 8
%71 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
%72 = bitcast %Source_Code_Location* %10 to %..rawptr
%73 = call %..rawptr @__mem_zero(%..rawptr %72, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %10
store %Source_Code_Location %71, %Source_Code_Location* %10
%74 = call %..rawptr %61(%..rawptr %63, i8 3, i64 %64, i64 %65, %..rawptr %69, i64 %70, i64 0, %Source_Code_Location* %10, %Context* noalias nonnull %__.context_ptr)
store %..rawptr %74, %..rawptr* %9
; IfStmt
%75 = load %..rawptr, %..rawptr* %9, align 8
%76 = icmp eq %..rawptr %75, zeroinitializer
%77 = zext i1 %76 to i8
%78 = trunc i8 %77 to i1
br i1 %78, label %if.then-5, label %if.done-6
if.then-5:
; ReturnStmt
ret i8 0
if.done-6:
; AssignStmt
; SelectorExpr
%79 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %4, align 8
%80 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %79, i64 0
%81 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %80, i64 0, i32 0
%82 = load %..rawptr, %..rawptr* %9, align 8
store %..rawptr %82, %..rawptr* %81
; AssignStmt
; SelectorExpr
%83 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %4, align 8
%84 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %83, i64 0
%85 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %84, i64 0, i32 2
%86 = load i64, i64* %3, align 8
store i64 %86, i64* %85
; ReturnStmt
ret i8 1
}
define i8 @__dynamic_array_resize(%..rawptr %array_, i64 %elem_size, i64 %elem_align, i64 %len, %Source_Code_Location* %loc, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %..rawptr, align 16
%1 = alloca i64, align 16
%2 = alloca i64, align 16
%3 = alloca i64, align 16
%4 = alloca %raw-5.Dynamic_Array*, align 16
%5 = alloca i8, align 16
%6 = alloca %Source_Code_Location, align 16
store %..rawptr %array_, %..rawptr* %0
store i64 %elem_size, i64* %1
store i64 %elem_align, i64* %2
store i64 %len, i64* %3
%7 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
; array
%8 = load %..rawptr, %..rawptr* %0, align 8
%9 = bitcast %..rawptr %8 to %raw-5.Dynamic_Array*
store %raw-5.Dynamic_Array* %9, %raw-5.Dynamic_Array** %4
; ok
%10 = load %..rawptr, %..rawptr* %0, align 8
%11 = load i64, i64* %1, align 8
%12 = load i64, i64* %2, align 8
%13 = load i64, i64* %3, align 8
%14 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
%15 = bitcast %Source_Code_Location* %6 to %..rawptr
%16 = call %..rawptr @__mem_zero(%..rawptr %15, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %6
store %Source_Code_Location %14, %Source_Code_Location* %6
%17 = call i8 @__dynamic_array_reserve(%..rawptr %10, i64 %11, i64 %12, i64 %13, %Source_Code_Location* %6, %Context* noalias nonnull %__.context_ptr)
store i8 %17, i8* %5
; IfStmt
%18 = load i8, i8* %5, align 1
%19 = trunc i8 %18 to i1
br i1 %19, label %if.then-1, label %if.done-2
if.then-1:
; AssignStmt
; SelectorExpr
%20 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %4, align 8
%21 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %20, i64 0
%22 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %21, i64 0, i32 1
%23 = load i64, i64* %3, align 8
store i64 %23, i64* %22
br label %if.done-2
if.done-2:
; ReturnStmt
%24 = load i8, i8* %5, align 1
ret i8 %24
}
define i64 @__dynamic_array_append(%..rawptr %array_, i64 %elem_size, i64 %elem_align, %..rawptr %items, i64 %item_count, %Source_Code_Location* %loc, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %..rawptr, align 16
%1 = alloca i64, align 16
%2 = alloca i64, align 16
%3 = alloca %..rawptr, align 16
%4 = alloca i64, align 16
%5 = alloca %raw-5.Dynamic_Array*, align 16
%6 = alloca i8, align 16
%7 = alloca i64, align 16
%8 = alloca %Source_Code_Location, align 16
%9 = alloca i8*, align 16
%10 = alloca %Source_Code_Location, align 16
store %..rawptr %array_, %..rawptr* %0
store i64 %elem_size, i64* %1
store i64 %elem_align, i64* %2
store %..rawptr %items, %..rawptr* %3
store i64 %item_count, i64* %4
%11 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
; array
%12 = load %..rawptr, %..rawptr* %0, align 8
%13 = bitcast %..rawptr %12 to %raw-5.Dynamic_Array*
store %raw-5.Dynamic_Array* %13, %raw-5.Dynamic_Array** %5
; IfStmt
%14 = load %..rawptr, %..rawptr* %3, align 8
%15 = icmp eq %..rawptr %14, zeroinitializer
%16 = zext i1 %15 to i8
%17 = trunc i8 %16 to i1
br i1 %17, label %if.then-1, label %if.done-2
if.then-1:
; ReturnStmt
ret i64 0
if.done-2:
; IfStmt
%18 = load i64, i64* %4, align 8
%19 = icmp sle i64 %18, 0
%20 = zext i1 %19 to i8
%21 = trunc i8 %20 to i1
br i1 %21, label %if.then-3, label %if.done-4
if.then-3:
; ReturnStmt
ret i64 0
if.done-4:
; ok
store i8 1, i8* %6
; IfStmt
; SelectorExpr
%22 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %5, align 8
%23 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %22, i64 0
%24 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %23, i64 0, i32 2
%25 = load i64, i64* %24, align 8
; SelectorExpr
%26 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %5, align 8
%27 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %26, i64 0
%28 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %27, i64 0, i32 1
%29 = load i64, i64* %28, align 8
%30 = load i64, i64* %4, align 8
%31 = add i64 %29, %30
%32 = icmp sle i64 %25, %31
%33 = zext i1 %32 to i8
%34 = trunc i8 %33 to i1
br i1 %34, label %if.then-5, label %if.done-6
if.then-5:
; cap
; SelectorExpr
%35 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %5, align 8
%36 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %35, i64 0
%37 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %36, i64 0, i32 2
%38 = load i64, i64* %37, align 8
%39 = mul i64 2, %38
; max
%40 = load i64, i64* %4, align 8
%41 = icmp sgt i64 8, %40
%42 = select i1 %41, i64 8, i64 %40
%43 = add i64 %39, %42
store i64 %43, i64* %7
; AssignStmt
%44 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %5, align 8
%45 = load i64, i64* %1, align 8
%46 = load i64, i64* %2, align 8
%47 = load i64, i64* %7, align 8
%48 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
%49 = bitcast %raw-5.Dynamic_Array* %44 to %..rawptr
%50 = bitcast %Source_Code_Location* %8 to %..rawptr
%51 = call %..rawptr @__mem_zero(%..rawptr %50, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %8
store %Source_Code_Location %48, %Source_Code_Location* %8
%52 = call i8 @__dynamic_array_reserve(%..rawptr %49, i64 %45, i64 %46, i64 %47, %Source_Code_Location* %8, %Context* noalias nonnull %__.context_ptr)
store i8 %52, i8* %6
br label %if.done-6
if.done-6:
; IfStmt
%53 = load i8, i8* %6, align 1
%54 = trunc i8 %53 to i1
br i1 %54, label %if.done-8, label %if.then-7
if.then-7:
; ReturnStmt
; SelectorExpr
%55 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %5, align 8
%56 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %55, i64 0
%57 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %56, i64 0, i32 1
%58 = load i64, i64* %57, align 8
ret i64 %58
if.done-8:
; data
; SelectorExpr
%59 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %5, align 8
%60 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %59, i64 0
%61 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %60, i64 0, i32 0
%62 = load %..rawptr, %..rawptr* %61, align 8
%63 = bitcast %..rawptr %62 to i8*
store i8* %63, i8** %9
%64 = load i8*, i8** %9, align 8
%65 = icmp ne i8* %64, zeroinitializer
%66 = zext i1 %65 to i8
%67 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$58, i64 0, i32 0), i64 51}, i64 1124, i64 2, %..string {i8* getelementptr inbounds ([23 x i8], [23 x i8]* @__str$59, i64 0, i32 0), i64 22})
%68 = trunc i8 %66 to i1
%69 = bitcast %Source_Code_Location* %10 to %..rawptr
%70 = call %..rawptr @__mem_zero(%..rawptr %69, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %10
store %Source_Code_Location %67, %Source_Code_Location* %10
%71 = call i8 @assert(i1 %68, %..string zeroinitializer, %Source_Code_Location* %10)
%72 = load i8*, i8** %9, align 8
%73 = load i64, i64* %1, align 8
; SelectorExpr
%74 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %5, align 8
%75 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %74, i64 0
%76 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %75, i64 0, i32 1
%77 = load i64, i64* %76, align 8
%78 = mul i64 %73, %77
%79 = getelementptr inbounds i8, i8* %72, i64 %78
%80 = load %..rawptr, %..rawptr* %3, align 8
%81 = load i64, i64* %1, align 8
%82 = load i64, i64* %4, align 8
%83 = mul i64 %81, %82
%84 = bitcast i8* %79 to %..rawptr
%85 = call %..rawptr @__mem_copy(%..rawptr %84, %..rawptr %80, i64 %83)
; AssignStmt
; SelectorExpr
%86 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %5, align 8
%87 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %86, i64 0
%88 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %87, i64 0, i32 1
%89 = load i64, i64* %4, align 8
%90 = load i64, i64* %88, align 8
%91 = add i64 %90, %89
store i64 %91, i64* %88
; ReturnStmt
; SelectorExpr
%92 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %5, align 8
%93 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %92, i64 0
%94 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %93, i64 0, i32 1
%95 = load i64, i64* %94, align 8
ret i64 %95
}
define i64 @__dynamic_array_append_nothing(%..rawptr %array_, i64 %elem_size, i64 %elem_align, %Source_Code_Location* %loc, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %..rawptr, align 16
%1 = alloca i64, align 16
%2 = alloca i64, align 16
%3 = alloca %raw-5.Dynamic_Array*, align 16
%4 = alloca i8, align 16
%5 = alloca i64, align 16
%6 = alloca %Source_Code_Location, align 16
%7 = alloca i8*, align 16
%8 = alloca %Source_Code_Location, align 16
store %..rawptr %array_, %..rawptr* %0
store i64 %elem_size, i64* %1
store i64 %elem_align, i64* %2
%9 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
; array
%10 = load %..rawptr, %..rawptr* %0, align 8
%11 = bitcast %..rawptr %10 to %raw-5.Dynamic_Array*
store %raw-5.Dynamic_Array* %11, %raw-5.Dynamic_Array** %3
; ok
store i8 1, i8* %4
; IfStmt
; SelectorExpr
%12 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %3, align 8
%13 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %12, i64 0
%14 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %13, i64 0, i32 2
%15 = load i64, i64* %14, align 8
; SelectorExpr
%16 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %3, align 8
%17 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %16, i64 0
%18 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %17, i64 0, i32 1
%19 = load i64, i64* %18, align 8
%20 = add i64 %19, 1
%21 = icmp sle i64 %15, %20
%22 = zext i1 %21 to i8
%23 = trunc i8 %22 to i1
br i1 %23, label %if.then-1, label %if.done-2
if.then-1:
; cap
; SelectorExpr
%24 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %3, align 8
%25 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %24, i64 0
%26 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %25, i64 0, i32 2
%27 = load i64, i64* %26, align 8
%28 = mul i64 2, %27
%29 = add i64 %28, 8
store i64 %29, i64* %5
; AssignStmt
%30 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %3, align 8
%31 = load i64, i64* %1, align 8
%32 = load i64, i64* %2, align 8
%33 = load i64, i64* %5, align 8
%34 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
%35 = bitcast %raw-5.Dynamic_Array* %30 to %..rawptr
%36 = bitcast %Source_Code_Location* %6 to %..rawptr
%37 = call %..rawptr @__mem_zero(%..rawptr %36, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %6
store %Source_Code_Location %34, %Source_Code_Location* %6
%38 = call i8 @__dynamic_array_reserve(%..rawptr %35, i64 %31, i64 %32, i64 %33, %Source_Code_Location* %6, %Context* noalias nonnull %__.context_ptr)
store i8 %38, i8* %4
br label %if.done-2
if.done-2:
; IfStmt
%39 = load i8, i8* %4, align 1
%40 = trunc i8 %39 to i1
br i1 %40, label %if.done-4, label %if.then-3
if.then-3:
; ReturnStmt
; SelectorExpr
%41 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %3, align 8
%42 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %41, i64 0
%43 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %42, i64 0, i32 1
%44 = load i64, i64* %43, align 8
ret i64 %44
if.done-4:
; data
; SelectorExpr
%45 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %3, align 8
%46 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %45, i64 0
%47 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %46, i64 0, i32 0
%48 = load %..rawptr, %..rawptr* %47, align 8
%49 = bitcast %..rawptr %48 to i8*
store i8* %49, i8** %7
%50 = load i8*, i8** %7, align 8
%51 = icmp ne i8* %50, zeroinitializer
%52 = zext i1 %51 to i8
%53 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$5a, i64 0, i32 0), i64 51}, i64 1142, i64 2, %..string {i8* getelementptr inbounds ([31 x i8], [31 x i8]* @__str$5b, i64 0, i32 0), i64 30})
%54 = trunc i8 %52 to i1
%55 = bitcast %Source_Code_Location* %8 to %..rawptr
%56 = call %..rawptr @__mem_zero(%..rawptr %55, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %8
store %Source_Code_Location %53, %Source_Code_Location* %8
%57 = call i8 @assert(i1 %54, %..string zeroinitializer, %Source_Code_Location* %8)
%58 = load i8*, i8** %7, align 8
%59 = load i64, i64* %1, align 8
; SelectorExpr
%60 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %3, align 8
%61 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %60, i64 0
%62 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %61, i64 0, i32 1
%63 = load i64, i64* %62, align 8
%64 = mul i64 %59, %63
%65 = getelementptr inbounds i8, i8* %58, i64 %64
%66 = load i64, i64* %1, align 8
%67 = bitcast i8* %65 to %..rawptr
%68 = call %..rawptr @__mem_zero(%..rawptr %67, i64 %66)
; AssignStmt
; SelectorExpr
%69 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %3, align 8
%70 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %69, i64 0
%71 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %70, i64 0, i32 1
%72 = load i64, i64* %71, align 8
%73 = add i64 %72, 1
store i64 %73, i64* %71
; ReturnStmt
; SelectorExpr
%74 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %3, align 8
%75 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %74, i64 0
%76 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %75, i64 0, i32 1
%77 = load i64, i64* %76, align 8
ret i64 %77
}
define i64 @__default_hash({i8*, i64}* %data, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca {i8*, i64}, align 16
%1 = load {i8*, i64}, {i8*, i64}* %data, align 8
; ReturnStmt
%2 = load {i8*, i64}, {i8*, i64}* %data, align 8
%3 = bitcast {i8*, i64}* %0 to %..rawptr
%4 = call %..rawptr @__mem_zero(%..rawptr %3, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %0
store {i8*, i64} %2, {i8*, i64}* %0
%5 = call i64 @__default_hash.fnv64a-0({i8*, i64}* %0, %Context* noalias nonnull %__.context_ptr)
ret i64 %5
}
define i64 @__default_hash.fnv64a-0({i8*, i64}* %data, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca i64, align 16
%1 = alloca i8, align 16
%2 = alloca i64, align 16
%3 = alloca i64, align 16
%4 = load {i8*, i64}, {i8*, i64}* %data, align 8
; h
store i64 -3750763034362895579, i64* %0
; RangeStmt
; b
%5 = bitcast i8* %1 to %..rawptr
%6 = call %..rawptr @__mem_zero(%..rawptr %5, i64 1)
store i8 zeroinitializer, i8* %1
%7 = load {i8*, i64}, {i8*, i64}* %data, align 8
%8 = bitcast i64* %2 to %..rawptr
%9 = call %..rawptr @__mem_zero(%..rawptr %8, i64 8)
store i64 zeroinitializer, i64* %2
%10 = extractvalue {i8*, i64} %7, 1
store i64 %10, i64* %2
%11 = bitcast i64* %3 to %..rawptr
%12 = call %..rawptr @__mem_zero(%..rawptr %11, i64 8)
store i64 zeroinitializer, i64* %3
store i64 -1, i64* %3
br label %for.index.loop-1
for.index.loop-1:
%13 = load i64, i64* %3, align 8
%14 = add i64 %13, 1
store i64 %14, i64* %3
%15 = load i64, i64* %2, align 8
%16 = icmp slt i64 %14, %15
br i1 %16, label %for.index.body-2, label %for.index.done-3
for.index.body-2:
%17 = load i64, i64* %3, align 8
%18 = extractvalue {i8*, i64} %7, 0
%19 = getelementptr inbounds i8, i8* %18, i64 %17
%20 = load i8, i8* %19, align 1
store i8 %20, i8* %1
; AssignStmt
%21 = load i64, i64* %0, align 8
%22 = load i8, i8* %1, align 1
%23 = zext i8 %22 to i64
%24 = xor i64 %21, %23
%25 = mul i64 %24, 1099511628211
store i64 %25, i64* %0
br label %for.index.loop-1
for.index.done-3:
; ReturnStmt
%26 = load i64, i64* %0, align 8
ret i64 %26
}
define i64 @__default_hash_string(%..string %s, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %..string, align 16
%1 = alloca i8*, align 16
%2 = alloca {i8*, i64}, align 16
%3 = alloca {i8*, i64}, align 16
store %..string %s, %..string* %0
; ReturnStmt
%4 = load %..string, %..string* %0, align 8
%5 = extractvalue %..string %4, 0
%6 = bitcast i8** %1 to %..rawptr
%7 = call %..rawptr @__mem_zero(%..rawptr %6, i64 8)
store i8* zeroinitializer, i8** %1
store i8* %5, i8** %1
%8 = extractvalue %..string %4, 1
%9 = sub i64 %8, 0
%10 = load i8*, i8** %1, align 8
%11 = getelementptr inbounds i8, i8* %10, i64 0
%12 = bitcast {i8*, i64}* %2 to %..rawptr
%13 = call %..rawptr @__mem_zero(%..rawptr %12, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %2
%14 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %2, i64 0, i32 0
store i8* %11, i8** %14
%15 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %2, i64 0, i32 1
store i64 %9, i64* %15
%16 = load {i8*, i64}, {i8*, i64}* %2, align 8
%17 = bitcast {i8*, i64}* %3 to %..rawptr
%18 = call %..rawptr @__mem_zero(%..rawptr %17, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %3
store {i8*, i64} %16, {i8*, i64}* %3
%19 = call i64 @__default_hash({i8*, i64}* %3, %Context* noalias nonnull %__.context_ptr)
ret i64 %19
}
define void @__dynamic_map_reserve(%__Map_Header* %header, i64 %cap, %Source_Code_Location* %loc, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca i64, align 16
%1 = alloca %Source_Code_Location, align 16
%2 = alloca %Source_Code_Location, align 16
%3 = load %__Map_Header, %__Map_Header* %header, align 8
store i64 %cap, i64* %0
%4 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
; SelectorExpr
%5 = getelementptr inbounds %__Map_Header, %__Map_Header* %header, i64 0, i32 0
%6 = load %raw-5.Map*, %raw-5.Map** %5, align 8
%7 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %6, i64 0
%8 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %7, i64 0, i32 0
%9 = getelementptr inbounds {i64*, i64, i64, %Allocator}, {i64*, i64, i64, %Allocator}* %8, i64 0
%10 = load i64, i64* %0, align 8
%11 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
%12 = bitcast {i64*, i64, i64, %Allocator}* %9 to %..rawptr
%13 = bitcast %Source_Code_Location* %1 to %..rawptr
%14 = call %..rawptr @__mem_zero(%..rawptr %13, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %1
store %Source_Code_Location %11, %Source_Code_Location* %1
%15 = call i8 @__dynamic_array_reserve(%..rawptr %12, i64 8, i64 8, i64 %10, %Source_Code_Location* %1, %Context* noalias nonnull %__.context_ptr)
; SelectorExpr
%16 = getelementptr inbounds %__Map_Header, %__Map_Header* %header, i64 0, i32 0
%17 = load %raw-5.Map*, %raw-5.Map** %16, align 8
%18 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %17, i64 0
%19 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %18, i64 0, i32 1
%20 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %19, i64 0
%21 = getelementptr inbounds %__Map_Header, %__Map_Header* %header, i64 0, i32 2
%22 = load i64, i64* %21, align 8
%23 = getelementptr inbounds %__Map_Header, %__Map_Header* %header, i64 0, i32 3
%24 = load i64, i64* %23, align 8
%25 = load i64, i64* %0, align 8
%26 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
%27 = bitcast %raw-5.Dynamic_Array* %20 to %..rawptr
%28 = bitcast %Source_Code_Location* %2 to %..rawptr
%29 = call %..rawptr @__mem_zero(%..rawptr %28, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %2
store %Source_Code_Location %26, %Source_Code_Location* %2
%30 = call i8 @__dynamic_array_reserve(%..rawptr %27, i64 %22, i64 %24, i64 %25, %Source_Code_Location* %2, %Context* noalias nonnull %__.context_ptr)
ret void
}
define void @__dynamic_map_rehash(%__Map_Header* %header, i64 %new_count, %Source_Code_Location* %loc, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca i64, align 16
%1 = alloca %__Map_Header, align 16
%2 = alloca %raw-5.Map, align 16
%3 = alloca %raw-5.Dynamic_Array*, align 16
%4 = alloca %raw-5.Dynamic_Array*, align 16
%5 = alloca %Source_Code_Location, align 16
%6 = alloca %Source_Code_Location, align 16
%7 = alloca i64, align 16
%8 = alloca i64, align 16
%9 = alloca i64, align 16
%10 = alloca i64, align 16
%11 = alloca i64, align 16
%12 = alloca i64, align 16
%13 = alloca %__Map_Header, align 16
%14 = alloca %Source_Code_Location, align 16
%15 = alloca %__Map_Entry_Header*, align 16
%16 = alloca %__Map_Header, align 16
%17 = alloca i8*, align 16
%18 = alloca %__Map_Find_Result, align 16
%19 = alloca %__Map_Header, align 16
%20 = alloca %__Map_Key, align 16
%21 = alloca i64, align 16
%22 = alloca %__Map_Header, align 16
%23 = alloca %__Map_Key, align 16
%24 = alloca %Source_Code_Location, align 16
%25 = alloca %__Map_Entry_Header*, align 16
%26 = alloca %__Map_Header, align 16
%27 = alloca %__Map_Entry_Header*, align 16
%28 = alloca %__Map_Header, align 16
%29 = alloca i8*, align 16
%30 = alloca %__Map_Header, align 16
%31 = alloca %__Map_Header, align 16
%32 = alloca %Source_Code_Location, align 16
%33 = alloca %Allocator, align 16
%34 = alloca %Source_Code_Location, align 16
%35 = alloca %Allocator, align 16
%36 = alloca %Source_Code_Location, align 16
%37 = load %__Map_Header, %__Map_Header* %header, align 8
store i64 %new_count, i64* %0
%38 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
; new_header
%39 = load %__Map_Header, %__Map_Header* %header, align 8
store %__Map_Header %39, %__Map_Header* %1
; nm
%40 = bitcast %raw-5.Map* %2 to %..rawptr
%41 = call %..rawptr @__mem_zero(%..rawptr %40, i64 80)
store %raw-5.Map zeroinitializer, %raw-5.Map* %2
; AssignStmt
; SelectorExpr
%42 = getelementptr inbounds %__Map_Header, %__Map_Header* %1, i64 0, i32 0
%43 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %2, i64 0
store %raw-5.Map* %43, %raw-5.Map** %42
; header_hashes
; SelectorExpr
; SelectorExpr
%44 = getelementptr inbounds %__Map_Header, %__Map_Header* %header, i64 0, i32 0
%45 = load %raw-5.Map*, %raw-5.Map** %44, align 8
%46 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %45, i64 0
%47 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %46, i64 0, i32 0
%48 = getelementptr inbounds {i64*, i64, i64, %Allocator}, {i64*, i64, i64, %Allocator}* %47, i64 0
%49 = bitcast {i64*, i64, i64, %Allocator}* %48 to %raw-5.Dynamic_Array*
store %raw-5.Dynamic_Array* %49, %raw-5.Dynamic_Array** %3
; nm_hashes
; SelectorExpr
%50 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %2, i64 0, i32 0
%51 = getelementptr inbounds {i64*, i64, i64, %Allocator}, {i64*, i64, i64, %Allocator}* %50, i64 0
%52 = bitcast {i64*, i64, i64, %Allocator}* %51 to %raw-5.Dynamic_Array*
store %raw-5.Dynamic_Array* %52, %raw-5.Dynamic_Array** %4
%53 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %4, align 8
%54 = load i64, i64* %0, align 8
%55 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
%56 = bitcast %raw-5.Dynamic_Array* %53 to %..rawptr
%57 = bitcast %Source_Code_Location* %5 to %..rawptr
%58 = call %..rawptr @__mem_zero(%..rawptr %57, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %5
store %Source_Code_Location %55, %Source_Code_Location* %5
%59 = call i8 @__dynamic_array_resize(%..rawptr %56, i64 8, i64 8, i64 %54, %Source_Code_Location* %5, %Context* noalias nonnull %__.context_ptr)
; SelectorExpr
%60 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %2, i64 0, i32 1
%61 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %60, i64 0
%62 = getelementptr inbounds %__Map_Header, %__Map_Header* %header, i64 0, i32 2
%63 = load i64, i64* %62, align 8
%64 = getelementptr inbounds %__Map_Header, %__Map_Header* %header, i64 0, i32 3
%65 = load i64, i64* %64, align 8
; SelectorExpr
; SelectorExpr
%66 = getelementptr inbounds %__Map_Header, %__Map_Header* %header, i64 0, i32 0
%67 = load %raw-5.Map*, %raw-5.Map** %66, align 8
%68 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %67, i64 0
%69 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %68, i64 0, i32 1
%70 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %69, i64 0, i32 1
%71 = load i64, i64* %70, align 8
%72 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
%73 = bitcast %raw-5.Dynamic_Array* %61 to %..rawptr
%74 = bitcast %Source_Code_Location* %6 to %..rawptr
%75 = call %..rawptr @__mem_zero(%..rawptr %74, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %6
store %Source_Code_Location %72, %Source_Code_Location* %6
%76 = call i8 @__dynamic_array_reserve(%..rawptr %73, i64 %63, i64 %65, i64 %71, %Source_Code_Location* %6, %Context* noalias nonnull %__.context_ptr)
; RangeStmt
; i
%77 = bitcast i64* %7 to %..rawptr
%78 = call %..rawptr @__mem_zero(%..rawptr %77, i64 8)
store i64 zeroinitializer, i64* %7
%79 = bitcast i64* %8 to %..rawptr
%80 = call %..rawptr @__mem_zero(%..rawptr %79, i64 8)
store i64 zeroinitializer, i64* %8
store i64 0, i64* %8
%81 = bitcast i64* %9 to %..rawptr
%82 = call %..rawptr @__mem_zero(%..rawptr %81, i64 8)
store i64 zeroinitializer, i64* %9
store i64 0, i64* %9
br label %for.interval.loop-1
for.interval.loop-1:
%83 = load i64, i64* %0, align 8
%84 = load i64, i64* %8, align 8
%85 = icmp slt i64 %84, %83
br i1 %85, label %for.interval.body-2, label %for.interval.done-3
for.interval.body-2:
%86 = load i64, i64* %8, align 8
%87 = load i64, i64* %9, align 8
%88 = load i64, i64* %8, align 8
%89 = add i64 %88, 1
store i64 %89, i64* %8
%90 = load i64, i64* %9, align 8
%91 = add i64 %90, 1
store i64 %91, i64* %9
store i64 %86, i64* %7
; AssignStmt
; IndexExpr
; SelectorExpr
%92 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %2, i64 0, i32 0
%93 = load {i64*, i64, i64, %Allocator}, {i64*, i64, i64, %Allocator}* %92, align 8
%94 = extractvalue {i64*, i64, i64, %Allocator} %93, 0
%95 = extractvalue {i64*, i64, i64, %Allocator} %93, 1
%96 = load i64, i64* %7, align 8
%97 = getelementptr inbounds i64, i64* %94, i64 %96
store i64 -1, i64* %97
br label %for.interval.loop-1
for.interval.done-3:
; RangeStmt
; i
%98 = bitcast i64* %10 to %..rawptr
%99 = call %..rawptr @__mem_zero(%..rawptr %98, i64 8)
store i64 zeroinitializer, i64* %10
%100 = bitcast i64* %11 to %..rawptr
%101 = call %..rawptr @__mem_zero(%..rawptr %100, i64 8)
store i64 zeroinitializer, i64* %11
store i64 0, i64* %11
%102 = bitcast i64* %12 to %..rawptr
%103 = call %..rawptr @__mem_zero(%..rawptr %102, i64 8)
store i64 zeroinitializer, i64* %12
store i64 0, i64* %12
br label %for.interval.loop-4
for.interval.loop-4:
; SelectorExpr
; SelectorExpr
%104 = getelementptr inbounds %__Map_Header, %__Map_Header* %header, i64 0, i32 0
%105 = load %raw-5.Map*, %raw-5.Map** %104, align 8
%106 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %105, i64 0
%107 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %106, i64 0, i32 1
%108 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %107, i64 0, i32 1
%109 = load i64, i64* %108, align 8
%110 = load i64, i64* %11, align 8
%111 = icmp slt i64 %110, %109
br i1 %111, label %for.interval.body-5, label %for.interval.done-13
for.interval.body-5:
%112 = load i64, i64* %11, align 8
%113 = load i64, i64* %12, align 8
%114 = load i64, i64* %11, align 8
%115 = add i64 %114, 1
store i64 %115, i64* %11
%116 = load i64, i64* %12, align 8
%117 = add i64 %116, 1
store i64 %117, i64* %12
store i64 %112, i64* %10
; IfStmt
; SelectorExpr
%118 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %2, i64 0, i32 0
%119 = load {i64*, i64, i64, %Allocator}, {i64*, i64, i64, %Allocator}* %118, align 8
%120 = extractvalue {i64*, i64, i64, %Allocator} %119, 1
%121 = icmp eq i64 %120, 0
%122 = zext i1 %121 to i8
%123 = trunc i8 %122 to i1
br i1 %123, label %if.then-6, label %if.done-7
if.then-6:
%124 = load %__Map_Header, %__Map_Header* %1, align 8
%125 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
%126 = bitcast %__Map_Header* %13 to %..rawptr
%127 = call %..rawptr @__mem_zero(%..rawptr %126, i64 48)
store %__Map_Header zeroinitializer, %__Map_Header* %13
store %__Map_Header %124, %__Map_Header* %13
%128 = bitcast %Source_Code_Location* %14 to %..rawptr
%129 = call %..rawptr @__mem_zero(%..rawptr %128, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %14
store %Source_Code_Location %125, %Source_Code_Location* %14
call void @__dynamic_map_grow(%__Map_Header* %13, %Source_Code_Location* %14, %Context* noalias nonnull %__.context_ptr)
br label %if.done-7
if.done-7:
; entry_header
%130 = load %__Map_Header, %__Map_Header* %header, align 8
%131 = load i64, i64* %10, align 8
%132 = bitcast %__Map_Header* %16 to %..rawptr
%133 = call %..rawptr @__mem_zero(%..rawptr %132, i64 48)
store %__Map_Header zeroinitializer, %__Map_Header* %16
store %__Map_Header %130, %__Map_Header* %16
%134 = call %__Map_Entry_Header* @__dynamic_map_get_entry(%__Map_Header* %16, i64 %131, %Context* noalias nonnull %__.context_ptr)
store %__Map_Entry_Header* %134, %__Map_Entry_Header** %15
; data
%135 = load %__Map_Entry_Header*, %__Map_Entry_Header** %15, align 8
%136 = bitcast %__Map_Entry_Header* %135 to i8*
store i8* %136, i8** %17
; fr
%137 = load %__Map_Header, %__Map_Header* %1, align 8
; SelectorExpr
%138 = load %__Map_Entry_Header*, %__Map_Entry_Header** %15, align 8
%139 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %138, i64 0
%140 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %139, i64 0, i32 0
%141 = load %__Map_Key, %__Map_Key* %140, align 8
%142 = bitcast %__Map_Header* %19 to %..rawptr
%143 = call %..rawptr @__mem_zero(%..rawptr %142, i64 48)
store %__Map_Header zeroinitializer, %__Map_Header* %19
store %__Map_Header %137, %__Map_Header* %19
%144 = bitcast %__Map_Key* %20 to %..rawptr
%145 = call %..rawptr @__mem_zero(%..rawptr %144, i64 24)
store %__Map_Key zeroinitializer, %__Map_Key* %20
store %__Map_Key %141, %__Map_Key* %20
%146 = call %__Map_Find_Result @__dynamic_map_find(%__Map_Header* %19, %__Map_Key* %20, %Context* noalias nonnull %__.context_ptr)
store %__Map_Find_Result %146, %__Map_Find_Result* %18
; j
%147 = load %__Map_Header, %__Map_Header* %1, align 8
; SelectorExpr
%148 = load %__Map_Entry_Header*, %__Map_Entry_Header** %15, align 8
%149 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %148, i64 0
%150 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %149, i64 0, i32 0
%151 = load %__Map_Key, %__Map_Key* %150, align 8
%152 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
%153 = bitcast %__Map_Header* %22 to %..rawptr
%154 = call %..rawptr @__mem_zero(%..rawptr %153, i64 48)
store %__Map_Header zeroinitializer, %__Map_Header* %22
store %__Map_Header %147, %__Map_Header* %22
%155 = bitcast %__Map_Key* %23 to %..rawptr
%156 = call %..rawptr @__mem_zero(%..rawptr %155, i64 24)
store %__Map_Key zeroinitializer, %__Map_Key* %23
store %__Map_Key %151, %__Map_Key* %23
%157 = bitcast %Source_Code_Location* %24 to %..rawptr
%158 = call %..rawptr @__mem_zero(%..rawptr %157, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %24
store %Source_Code_Location %152, %Source_Code_Location* %24
%159 = call i64 @__dynamic_map_add_entry(%__Map_Header* %22, %__Map_Key* %23, %Source_Code_Location* %24, %Context* noalias nonnull %__.context_ptr)
store i64 %159, i64* %21
; IfStmt
; SelectorExpr
%160 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %18, i64 0, i32 1
%161 = load i64, i64* %160, align 8
%162 = icmp slt i64 %161, 0
%163 = zext i1 %162 to i8
%164 = trunc i8 %163 to i1
br i1 %164, label %if.then-8, label %if.else-9
if.then-8:
; AssignStmt
; IndexExpr
; SelectorExpr
%165 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %2, i64 0, i32 0
%166 = load {i64*, i64, i64, %Allocator}, {i64*, i64, i64, %Allocator}* %165, align 8
%167 = extractvalue {i64*, i64, i64, %Allocator} %166, 0
%168 = extractvalue {i64*, i64, i64, %Allocator} %166, 1
; SelectorExpr
%169 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %18, i64 0, i32 0
%170 = load i64, i64* %169, align 8
%171 = getelementptr inbounds i64, i64* %167, i64 %170
%172 = load i64, i64* %21, align 8
store i64 %172, i64* %171
br label %if.done-10
if.else-9:
; e
%173 = load %__Map_Header, %__Map_Header* %1, align 8
; SelectorExpr
%174 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %18, i64 0, i32 1
%175 = load i64, i64* %174, align 8
%176 = bitcast %__Map_Header* %26 to %..rawptr
%177 = call %..rawptr @__mem_zero(%..rawptr %176, i64 48)
store %__Map_Header zeroinitializer, %__Map_Header* %26
store %__Map_Header %173, %__Map_Header* %26
%178 = call %__Map_Entry_Header* @__dynamic_map_get_entry(%__Map_Header* %26, i64 %175, %Context* noalias nonnull %__.context_ptr)
store %__Map_Entry_Header* %178, %__Map_Entry_Header** %25
; AssignStmt
; SelectorExpr
%179 = load %__Map_Entry_Header*, %__Map_Entry_Header** %25, align 8
%180 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %179, i64 0
%181 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %180, i64 0, i32 1
%182 = load i64, i64* %21, align 8
store i64 %182, i64* %181
br label %if.done-10
if.done-10:
; e
%183 = load %__Map_Header, %__Map_Header* %1, align 8
%184 = load i64, i64* %21, align 8
%185 = bitcast %__Map_Header* %28 to %..rawptr
%186 = call %..rawptr @__mem_zero(%..rawptr %185, i64 48)
store %__Map_Header zeroinitializer, %__Map_Header* %28
store %__Map_Header %183, %__Map_Header* %28
%187 = call %__Map_Entry_Header* @__dynamic_map_get_entry(%__Map_Header* %28, i64 %184, %Context* noalias nonnull %__.context_ptr)
store %__Map_Entry_Header* %187, %__Map_Entry_Header** %27
; AssignStmt
; SelectorExpr
%188 = load %__Map_Entry_Header*, %__Map_Entry_Header** %27, align 8
%189 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %188, i64 0
%190 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %189, i64 0, i32 1
; SelectorExpr
%191 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %18, i64 0, i32 2
%192 = load i64, i64* %191, align 8
store i64 %192, i64* %190
; ndata
%193 = load %__Map_Entry_Header*, %__Map_Entry_Header** %27, align 8
%194 = bitcast %__Map_Entry_Header* %193 to i8*
store i8* %194, i8** %29
%195 = load i8*, i8** %29, align 8
%196 = getelementptr inbounds %__Map_Header, %__Map_Header* %header, i64 0, i32 4
%197 = load i64, i64* %196, align 8
%198 = bitcast i64 %197 to i64
%199 = getelementptr inbounds i8, i8* %195, i64 %198
%200 = load i8*, i8** %17, align 8
%201 = getelementptr inbounds %__Map_Header, %__Map_Header* %header, i64 0, i32 4
%202 = load i64, i64* %201, align 8
%203 = bitcast i64 %202 to i64
%204 = getelementptr inbounds i8, i8* %200, i64 %203
%205 = getelementptr inbounds %__Map_Header, %__Map_Header* %header, i64 0, i32 5
%206 = load i64, i64* %205, align 8
%207 = bitcast i8* %199 to %..rawptr
%208 = bitcast i8* %204 to %..rawptr
%209 = call %..rawptr @__mem_copy(%..rawptr %207, %..rawptr %208, i64 %206)
; IfStmt
%210 = load %__Map_Header, %__Map_Header* %1, align 8
%211 = bitcast %__Map_Header* %30 to %..rawptr
%212 = call %..rawptr @__mem_zero(%..rawptr %211, i64 48)
store %__Map_Header zeroinitializer, %__Map_Header* %30
store %__Map_Header %210, %__Map_Header* %30
%213 = call i8 @__dynamic_map_full(%__Map_Header* %30, %Context* noalias nonnull %__.context_ptr)
%214 = trunc i8 %213 to i1
br i1 %214, label %if.then-11, label %if.done-12
if.then-11:
%215 = load %__Map_Header, %__Map_Header* %1, align 8
%216 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
%217 = bitcast %__Map_Header* %31 to %..rawptr
%218 = call %..rawptr @__mem_zero(%..rawptr %217, i64 48)
store %__Map_Header zeroinitializer, %__Map_Header* %31
store %__Map_Header %215, %__Map_Header* %31
%219 = bitcast %Source_Code_Location* %32 to %..rawptr
%220 = call %..rawptr @__mem_zero(%..rawptr %219, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %32
store %Source_Code_Location %216, %Source_Code_Location* %32
call void @__dynamic_map_grow(%__Map_Header* %31, %Source_Code_Location* %32, %Context* noalias nonnull %__.context_ptr)
br label %if.done-12
if.done-12:
br label %for.interval.loop-4
for.interval.done-13:
; SelectorExpr
%221 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %3, align 8
%222 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %221, i64 0
%223 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %222, i64 0, i32 3
%224 = load %Allocator, %Allocator* %223, align 8
; SelectorExpr
%225 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %3, align 8
%226 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %225, i64 0
%227 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %226, i64 0, i32 0
%228 = load %..rawptr, %..rawptr* %227, align 8
%229 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
%230 = bitcast %Allocator* %33 to %..rawptr
%231 = call %..rawptr @__mem_zero(%..rawptr %230, i64 16)
store %Allocator zeroinitializer, %Allocator* %33
store %Allocator %224, %Allocator* %33
%232 = bitcast %Source_Code_Location* %34 to %..rawptr
%233 = call %..rawptr @__mem_zero(%..rawptr %232, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %34
store %Source_Code_Location %229, %Source_Code_Location* %34
call void @free_ptr_with_allocator(%Allocator* %33, %..rawptr %228, %Source_Code_Location* %34, %Context* noalias nonnull %__.context_ptr)
; SelectorExpr
; SelectorExpr
; SelectorExpr
%234 = getelementptr inbounds %__Map_Header, %__Map_Header* %header, i64 0, i32 0
%235 = load %raw-5.Map*, %raw-5.Map** %234, align 8
%236 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %235, i64 0
%237 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %236, i64 0, i32 1
%238 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %237, i64 0, i32 3
%239 = load %Allocator, %Allocator* %238, align 8
; SelectorExpr
; SelectorExpr
; SelectorExpr
%240 = getelementptr inbounds %__Map_Header, %__Map_Header* %header, i64 0, i32 0
%241 = load %raw-5.Map*, %raw-5.Map** %240, align 8
%242 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %241, i64 0
%243 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %242, i64 0, i32 1
%244 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %243, i64 0, i32 0
%245 = load %..rawptr, %..rawptr* %244, align 8
%246 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
%247 = bitcast %Allocator* %35 to %..rawptr
%248 = call %..rawptr @__mem_zero(%..rawptr %247, i64 16)
store %Allocator zeroinitializer, %Allocator* %35
store %Allocator %239, %Allocator* %35
%249 = bitcast %Source_Code_Location* %36 to %..rawptr
%250 = call %..rawptr @__mem_zero(%..rawptr %249, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %36
store %Source_Code_Location %246, %Source_Code_Location* %36
call void @free_ptr_with_allocator(%Allocator* %35, %..rawptr %245, %Source_Code_Location* %36, %Context* noalias nonnull %__.context_ptr)
; AssignStmt
; SelectorExpr
%251 = getelementptr inbounds %__Map_Header, %__Map_Header* %header, i64 0, i32 0
%252 = load %raw-5.Map*, %raw-5.Map** %251, align 8
%253 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %252, i64 0
%254 = load %raw-5.Map, %raw-5.Map* %2, align 8
store %raw-5.Map %254, %raw-5.Map* %253
ret void
}
define %..rawptr @__dynamic_map_get(%__Map_Header* %h, %__Map_Key* %key, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca i64, align 16
%1 = alloca %__Map_Header, align 16
%2 = alloca %__Map_Key, align 16
%3 = alloca %__Map_Find_Result, align 16
%4 = alloca i8*, align 16
%5 = alloca %__Map_Header, align 16
%6 = load %__Map_Header, %__Map_Header* %h, align 8
%7 = load %__Map_Key, %__Map_Key* %key, align 8
; index
; SelectorExpr
%8 = load %__Map_Header, %__Map_Header* %h, align 8
%9 = load %__Map_Key, %__Map_Key* %key, align 8
%10 = bitcast %__Map_Header* %1 to %..rawptr
%11 = call %..rawptr @__mem_zero(%..rawptr %10, i64 48)
store %__Map_Header zeroinitializer, %__Map_Header* %1
store %__Map_Header %8, %__Map_Header* %1
%12 = bitcast %__Map_Key* %2 to %..rawptr
%13 = call %..rawptr @__mem_zero(%..rawptr %12, i64 24)
store %__Map_Key zeroinitializer, %__Map_Key* %2
store %__Map_Key %9, %__Map_Key* %2
%14 = call %__Map_Find_Result @__dynamic_map_find(%__Map_Header* %1, %__Map_Key* %2, %Context* noalias nonnull %__.context_ptr)
%15 = bitcast %__Map_Find_Result* %3 to %..rawptr
%16 = call %..rawptr @__mem_zero(%..rawptr %15, i64 24)
store %__Map_Find_Result zeroinitializer, %__Map_Find_Result* %3
store %__Map_Find_Result %14, %__Map_Find_Result* %3
%17 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %3, i64 0, i32 2
%18 = load i64, i64* %17, align 8
store i64 %18, i64* %0
; IfStmt
%19 = load i64, i64* %0, align 8
%20 = icmp sge i64 %19, 0
%21 = zext i1 %20 to i8
%22 = trunc i8 %21 to i1
br i1 %22, label %if.then-1, label %if.done-2
if.then-1:
; data
%23 = load %__Map_Header, %__Map_Header* %h, align 8
%24 = load i64, i64* %0, align 8
%25 = bitcast %__Map_Header* %5 to %..rawptr
%26 = call %..rawptr @__mem_zero(%..rawptr %25, i64 48)
store %__Map_Header zeroinitializer, %__Map_Header* %5
store %__Map_Header %23, %__Map_Header* %5
%27 = call %__Map_Entry_Header* @__dynamic_map_get_entry(%__Map_Header* %5, i64 %24, %Context* noalias nonnull %__.context_ptr)
%28 = bitcast %__Map_Entry_Header* %27 to i8*
store i8* %28, i8** %4
; ReturnStmt
%29 = load i8*, i8** %4, align 8
; SelectorExpr
%30 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 4
%31 = load i64, i64* %30, align 8
%32 = bitcast i64 %31 to i64
%33 = getelementptr inbounds i8, i8* %29, i64 %32
%34 = bitcast i8* %33 to %..rawptr
ret %..rawptr %34
if.done-2:
; ReturnStmt
ret %..rawptr zeroinitializer
}
define void @__dynamic_map_set(%__Map_Header* %h, %__Map_Key* %key, %..rawptr %value, %Source_Code_Location* %loc, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %..rawptr, align 16
%1 = alloca i64, align 16
%2 = alloca %Source_Code_Location, align 16
%3 = alloca %__Map_Header, align 16
%4 = alloca %Source_Code_Location, align 16
%5 = alloca %__Map_Header, align 16
%6 = alloca %Source_Code_Location, align 16
%7 = alloca %__Map_Find_Result, align 16
%8 = alloca %__Map_Header, align 16
%9 = alloca %__Map_Key, align 16
%10 = alloca %__Map_Header, align 16
%11 = alloca %__Map_Key, align 16
%12 = alloca %Source_Code_Location, align 16
%13 = alloca %__Map_Entry_Header*, align 16
%14 = alloca %__Map_Header, align 16
%15 = alloca %__Map_Entry_Header*, align 16
%16 = alloca %__Map_Header, align 16
%17 = alloca i8*, align 16
%18 = alloca %__Map_Header, align 16
%19 = alloca %__Map_Header, align 16
%20 = alloca %Source_Code_Location, align 16
%21 = load %__Map_Header, %__Map_Header* %h, align 8
%22 = load %__Map_Key, %__Map_Key* %key, align 8
store %..rawptr %value, %..rawptr* %0
%23 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
; index
%24 = bitcast i64* %1 to %..rawptr
%25 = call %..rawptr @__mem_zero(%..rawptr %24, i64 8)
store i64 zeroinitializer, i64* %1
%26 = load %..rawptr, %..rawptr* %0, align 8
%27 = icmp ne %..rawptr %26, zeroinitializer
%28 = zext i1 %27 to i8
%29 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$5c, i64 0, i32 0), i64 51}, i64 1217, i64 2, %..string {i8* getelementptr inbounds ([18 x i8], [18 x i8]* @__str$5d, i64 0, i32 0), i64 17})
%30 = trunc i8 %28 to i1
%31 = bitcast %Source_Code_Location* %2 to %..rawptr
%32 = call %..rawptr @__mem_zero(%..rawptr %31, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %2
store %Source_Code_Location %29, %Source_Code_Location* %2
%33 = call i8 @assert(i1 %30, %..string zeroinitializer, %Source_Code_Location* %2)
; IfStmt
; SelectorExpr
; SelectorExpr
%34 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 0
%35 = load %raw-5.Map*, %raw-5.Map** %34, align 8
%36 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %35, i64 0
%37 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %36, i64 0, i32 0
%38 = load {i64*, i64, i64, %Allocator}, {i64*, i64, i64, %Allocator}* %37, align 8
%39 = extractvalue {i64*, i64, i64, %Allocator} %38, 1
%40 = icmp eq i64 %39, 0
%41 = zext i1 %40 to i8
%42 = trunc i8 %41 to i1
br i1 %42, label %if.then-1, label %if.done-2
if.then-1:
%43 = load %__Map_Header, %__Map_Header* %h, align 8
%44 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
%45 = bitcast %__Map_Header* %3 to %..rawptr
%46 = call %..rawptr @__mem_zero(%..rawptr %45, i64 48)
store %__Map_Header zeroinitializer, %__Map_Header* %3
store %__Map_Header %43, %__Map_Header* %3
%47 = bitcast %Source_Code_Location* %4 to %..rawptr
%48 = call %..rawptr @__mem_zero(%..rawptr %47, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %4
store %Source_Code_Location %44, %Source_Code_Location* %4
call void @__dynamic_map_reserve(%__Map_Header* %3, i64 16, %Source_Code_Location* %4, %Context* noalias nonnull %__.context_ptr)
%49 = load %__Map_Header, %__Map_Header* %h, align 8
%50 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
%51 = bitcast %__Map_Header* %5 to %..rawptr
%52 = call %..rawptr @__mem_zero(%..rawptr %51, i64 48)
store %__Map_Header zeroinitializer, %__Map_Header* %5
store %__Map_Header %49, %__Map_Header* %5
%53 = bitcast %Source_Code_Location* %6 to %..rawptr
%54 = call %..rawptr @__mem_zero(%..rawptr %53, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %6
store %Source_Code_Location %50, %Source_Code_Location* %6
call void @__dynamic_map_grow(%__Map_Header* %5, %Source_Code_Location* %6, %Context* noalias nonnull %__.context_ptr)
br label %if.done-2
if.done-2:
; fr
%55 = load %__Map_Header, %__Map_Header* %h, align 8
%56 = load %__Map_Key, %__Map_Key* %key, align 8
%57 = bitcast %__Map_Header* %8 to %..rawptr
%58 = call %..rawptr @__mem_zero(%..rawptr %57, i64 48)
store %__Map_Header zeroinitializer, %__Map_Header* %8
store %__Map_Header %55, %__Map_Header* %8
%59 = bitcast %__Map_Key* %9 to %..rawptr
%60 = call %..rawptr @__mem_zero(%..rawptr %59, i64 24)
store %__Map_Key zeroinitializer, %__Map_Key* %9
store %__Map_Key %56, %__Map_Key* %9
%61 = call %__Map_Find_Result @__dynamic_map_find(%__Map_Header* %8, %__Map_Key* %9, %Context* noalias nonnull %__.context_ptr)
store %__Map_Find_Result %61, %__Map_Find_Result* %7
; IfStmt
; SelectorExpr
%62 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %7, i64 0, i32 2
%63 = load i64, i64* %62, align 8
%64 = icmp sge i64 %63, 0
%65 = zext i1 %64 to i8
%66 = trunc i8 %65 to i1
br i1 %66, label %if.then-3, label %if.else-4
if.then-3:
; AssignStmt
; SelectorExpr
%67 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %7, i64 0, i32 2
%68 = load i64, i64* %67, align 8
store i64 %68, i64* %1
br label %if.done-8
if.else-4:
; AssignStmt
%69 = load %__Map_Header, %__Map_Header* %h, align 8
%70 = load %__Map_Key, %__Map_Key* %key, align 8
%71 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
%72 = bitcast %__Map_Header* %10 to %..rawptr
%73 = call %..rawptr @__mem_zero(%..rawptr %72, i64 48)
store %__Map_Header zeroinitializer, %__Map_Header* %10
store %__Map_Header %69, %__Map_Header* %10
%74 = bitcast %__Map_Key* %11 to %..rawptr
%75 = call %..rawptr @__mem_zero(%..rawptr %74, i64 24)
store %__Map_Key zeroinitializer, %__Map_Key* %11
store %__Map_Key %70, %__Map_Key* %11
%76 = bitcast %Source_Code_Location* %12 to %..rawptr
%77 = call %..rawptr @__mem_zero(%..rawptr %76, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %12
store %Source_Code_Location %71, %Source_Code_Location* %12
%78 = call i64 @__dynamic_map_add_entry(%__Map_Header* %10, %__Map_Key* %11, %Source_Code_Location* %12, %Context* noalias nonnull %__.context_ptr)
store i64 %78, i64* %1
; IfStmt
; SelectorExpr
%79 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %7, i64 0, i32 1
%80 = load i64, i64* %79, align 8
%81 = icmp sge i64 %80, 0
%82 = zext i1 %81 to i8
%83 = trunc i8 %82 to i1
br i1 %83, label %if.then-5, label %if.else-6
if.then-5:
; entry
%84 = load %__Map_Header, %__Map_Header* %h, align 8
; SelectorExpr
%85 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %7, i64 0, i32 1
%86 = load i64, i64* %85, align 8
%87 = bitcast %__Map_Header* %14 to %..rawptr
%88 = call %..rawptr @__mem_zero(%..rawptr %87, i64 48)
store %__Map_Header zeroinitializer, %__Map_Header* %14
store %__Map_Header %84, %__Map_Header* %14
%89 = call %__Map_Entry_Header* @__dynamic_map_get_entry(%__Map_Header* %14, i64 %86, %Context* noalias nonnull %__.context_ptr)
store %__Map_Entry_Header* %89, %__Map_Entry_Header** %13
; AssignStmt
; SelectorExpr
%90 = load %__Map_Entry_Header*, %__Map_Entry_Header** %13, align 8
%91 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %90, i64 0
%92 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %91, i64 0, i32 1
%93 = load i64, i64* %1, align 8
store i64 %93, i64* %92
br label %if.done-7
if.else-6:
; AssignStmt
; IndexExpr
; SelectorExpr
; SelectorExpr
%94 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 0
%95 = load %raw-5.Map*, %raw-5.Map** %94, align 8
%96 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %95, i64 0
%97 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %96, i64 0, i32 0
%98 = load {i64*, i64, i64, %Allocator}, {i64*, i64, i64, %Allocator}* %97, align 8
%99 = extractvalue {i64*, i64, i64, %Allocator} %98, 0
%100 = extractvalue {i64*, i64, i64, %Allocator} %98, 1
; SelectorExpr
%101 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %7, i64 0, i32 0
%102 = load i64, i64* %101, align 8
%103 = getelementptr inbounds i64, i64* %99, i64 %102
%104 = load i64, i64* %1, align 8
store i64 %104, i64* %103
br label %if.done-7
if.done-7:
br label %if.done-8
if.done-8:
; e
%105 = load %__Map_Header, %__Map_Header* %h, align 8
%106 = load i64, i64* %1, align 8
%107 = bitcast %__Map_Header* %16 to %..rawptr
%108 = call %..rawptr @__mem_zero(%..rawptr %107, i64 48)
store %__Map_Header zeroinitializer, %__Map_Header* %16
store %__Map_Header %105, %__Map_Header* %16
%109 = call %__Map_Entry_Header* @__dynamic_map_get_entry(%__Map_Header* %16, i64 %106, %Context* noalias nonnull %__.context_ptr)
store %__Map_Entry_Header* %109, %__Map_Entry_Header** %15
; AssignStmt
; SelectorExpr
%110 = load %__Map_Entry_Header*, %__Map_Entry_Header** %15, align 8
%111 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %110, i64 0
%112 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %111, i64 0, i32 0
%113 = load %__Map_Key, %__Map_Key* %key, align 8
store %__Map_Key %113, %__Map_Key* %112
; val
%114 = load %__Map_Entry_Header*, %__Map_Entry_Header** %15, align 8
%115 = ptrtoint %__Map_Entry_Header* %114 to i64
; SelectorExpr
%116 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 4
%117 = load i64, i64* %116, align 8
%118 = add i64 %115, %117
%119 = inttoptr i64 %118 to i8*
store i8* %119, i8** %17
%120 = load i8*, i8** %17, align 8
%121 = load %..rawptr, %..rawptr* %0, align 8
; SelectorExpr
%122 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 5
%123 = load i64, i64* %122, align 8
%124 = bitcast i8* %120 to %..rawptr
%125 = call %..rawptr @__mem_copy(%..rawptr %124, %..rawptr %121, i64 %123)
; IfStmt
%126 = load %__Map_Header, %__Map_Header* %h, align 8
%127 = bitcast %__Map_Header* %18 to %..rawptr
%128 = call %..rawptr @__mem_zero(%..rawptr %127, i64 48)
store %__Map_Header zeroinitializer, %__Map_Header* %18
store %__Map_Header %126, %__Map_Header* %18
%129 = call i8 @__dynamic_map_full(%__Map_Header* %18, %Context* noalias nonnull %__.context_ptr)
%130 = trunc i8 %129 to i1
br i1 %130, label %if.then-9, label %if.done-10
if.then-9:
%131 = load %__Map_Header, %__Map_Header* %h, align 8
%132 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
%133 = bitcast %__Map_Header* %19 to %..rawptr
%134 = call %..rawptr @__mem_zero(%..rawptr %133, i64 48)
store %__Map_Header zeroinitializer, %__Map_Header* %19
store %__Map_Header %131, %__Map_Header* %19
%135 = bitcast %Source_Code_Location* %20 to %..rawptr
%136 = call %..rawptr @__mem_zero(%..rawptr %135, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %20
store %Source_Code_Location %132, %Source_Code_Location* %20
call void @__dynamic_map_grow(%__Map_Header* %19, %Source_Code_Location* %20, %Context* noalias nonnull %__.context_ptr)
br label %if.done-10
if.done-10:
ret void
}
define void @__dynamic_map_grow(%__Map_Header* %h, %Source_Code_Location* %loc, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca i64, align 16
%1 = alloca %__Map_Header, align 16
%2 = alloca %Source_Code_Location, align 16
%3 = load %__Map_Header, %__Map_Header* %h, align 8
%4 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
; new_count
; max
; SelectorExpr
; SelectorExpr
%5 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 0
%6 = load %raw-5.Map*, %raw-5.Map** %5, align 8
%7 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %6, i64 0
%8 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %7, i64 0, i32 1
%9 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %8, i64 0, i32 2
%10 = load i64, i64* %9, align 8
%11 = mul i64 4, %10
%12 = add i64 %11, 7
%13 = icmp sgt i64 %12, 16
%14 = select i1 %13, i64 %12, i64 16
store i64 %14, i64* %0
%15 = load %__Map_Header, %__Map_Header* %h, align 8
%16 = load i64, i64* %0, align 8
%17 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
%18 = bitcast %__Map_Header* %1 to %..rawptr
%19 = call %..rawptr @__mem_zero(%..rawptr %18, i64 48)
store %__Map_Header zeroinitializer, %__Map_Header* %1
store %__Map_Header %15, %__Map_Header* %1
%20 = bitcast %Source_Code_Location* %2 to %..rawptr
%21 = call %..rawptr @__mem_zero(%..rawptr %20, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %2
store %Source_Code_Location %17, %Source_Code_Location* %2
call void @__dynamic_map_rehash(%__Map_Header* %1, i64 %16, %Source_Code_Location* %2, %Context* noalias nonnull %__.context_ptr)
ret void
}
define i8 @__dynamic_map_full(%__Map_Header* %h, %Context* noalias nonnull %__.context_ptr) alwaysinline #1 {
decls-0:
%0 = load %__Map_Header, %__Map_Header* %h, align 8
; ReturnStmt
; SelectorExpr
%1 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 0
%2 = load %raw-5.Map*, %raw-5.Map** %1, align 8
%3 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %2, i64 0
%4 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %3, i64 0, i32 0
%5 = load {i64*, i64, i64, %Allocator}, {i64*, i64, i64, %Allocator}* %4, align 8
%6 = extractvalue {i64*, i64, i64, %Allocator} %5, 1
%7 = sitofp i64 %6 to double
%8 = fmul double 0x3fe8000000000000, %7
%9 = fptosi double %8 to i64
; SelectorExpr
; SelectorExpr
%10 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 0
%11 = load %raw-5.Map*, %raw-5.Map** %10, align 8
%12 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %11, i64 0
%13 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %12, i64 0, i32 1
%14 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %13, i64 0, i32 2
%15 = load i64, i64* %14, align 8
%16 = icmp sle i64 %9, %15
%17 = zext i1 %16 to i8
ret i8 %17
}
define i8 @__dynamic_map_hash_equal(%__Map_Header* %h, %__Map_Key* %a, %__Map_Key* %b, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = load %__Map_Header, %__Map_Header* %h, align 8
%1 = load %__Map_Key, %__Map_Key* %a, align 8
%2 = load %__Map_Key, %__Map_Key* %b, align 8
; IfStmt
; SelectorExpr
%3 = getelementptr inbounds %__Map_Key, %__Map_Key* %a, i64 0, i32 0
%4 = load i64, i64* %3, align 8
; SelectorExpr
%5 = getelementptr inbounds %__Map_Key, %__Map_Key* %b, i64 0, i32 0
%6 = load i64, i64* %5, align 8
%7 = icmp eq i64 %4, %6
%8 = zext i1 %7 to i8
%9 = trunc i8 %8 to i1
br i1 %9, label %if.then-1, label %if.done-4
if.then-1:
; IfStmt
; SelectorExpr
%10 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 1
%11 = load i8, i8* %10, align 1
%12 = trunc i8 %11 to i1
br i1 %12, label %if.then-2, label %if.done-3
if.then-2:
; ReturnStmt
; SelectorExpr
%13 = getelementptr inbounds %__Map_Key, %__Map_Key* %a, i64 0, i32 1
%14 = load %..string, %..string* %13, align 8
; SelectorExpr
%15 = getelementptr inbounds %__Map_Key, %__Map_Key* %b, i64 0, i32 1
%16 = load %..string, %..string* %15, align 8
%17 = call i8 @__string_eq(%..string %14, %..string %16)
ret i8 %17
if.done-3:
; ReturnStmt
ret i8 1
if.done-4:
; ReturnStmt
ret i8 0
}
define %__Map_Find_Result @__dynamic_map_find(%__Map_Header* %h, %__Map_Key* %key, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %__Map_Find_Result, align 16
%1 = alloca %__Map_Entry_Header*, align 16
%2 = alloca %__Map_Header, align 16
%3 = alloca %__Map_Header, align 16
%4 = alloca %__Map_Key, align 16
%5 = alloca %__Map_Key, align 16
%6 = load %__Map_Header, %__Map_Header* %h, align 8
%7 = load %__Map_Key, %__Map_Key* %key, align 8
; fr
store %__Map_Find_Result {i64 -1, i64 -1, i64 -1}, %__Map_Find_Result* %0
; IfStmt
; SelectorExpr
%8 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 0
%9 = load %raw-5.Map*, %raw-5.Map** %8, align 8
%10 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %9, i64 0
%11 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %10, i64 0, i32 0
%12 = load {i64*, i64, i64, %Allocator}, {i64*, i64, i64, %Allocator}* %11, align 8
%13 = extractvalue {i64*, i64, i64, %Allocator} %12, 1
%14 = icmp sgt i64 %13, 0
%15 = zext i1 %14 to i8
%16 = trunc i8 %15 to i1
br i1 %16, label %if.then-1, label %if.done-7
if.then-1:
; AssignStmt
; SelectorExpr
%17 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %0, i64 0, i32 0
; SelectorExpr
%18 = getelementptr inbounds %__Map_Key, %__Map_Key* %key, i64 0, i32 0
%19 = load i64, i64* %18, align 8
; SelectorExpr
%20 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 0
%21 = load %raw-5.Map*, %raw-5.Map** %20, align 8
%22 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %21, i64 0
%23 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %22, i64 0, i32 0
%24 = load {i64*, i64, i64, %Allocator}, {i64*, i64, i64, %Allocator}* %23, align 8
%25 = extractvalue {i64*, i64, i64, %Allocator} %24, 1
%26 = bitcast i64 %25 to i64
%27 = urem i64 %19, %26
%28 = bitcast i64 %27 to i64
store i64 %28, i64* %17
; AssignStmt
; SelectorExpr
%29 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %0, i64 0, i32 2
; IndexExpr
; SelectorExpr
%30 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 0
%31 = load %raw-5.Map*, %raw-5.Map** %30, align 8
%32 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %31, i64 0
%33 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %32, i64 0, i32 0
%34 = load {i64*, i64, i64, %Allocator}, {i64*, i64, i64, %Allocator}* %33, align 8
%35 = extractvalue {i64*, i64, i64, %Allocator} %34, 0
%36 = extractvalue {i64*, i64, i64, %Allocator} %34, 1
; SelectorExpr
%37 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %0, i64 0, i32 0
%38 = load i64, i64* %37, align 8
%39 = getelementptr inbounds i64, i64* %35, i64 %38
%40 = load i64, i64* %39, align 8
store i64 %40, i64* %29
; ForStmt
br label %for.loop-2
for.loop-2:
; SelectorExpr
%41 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %0, i64 0, i32 2
%42 = load i64, i64* %41, align 8
%43 = icmp sge i64 %42, 0
%44 = zext i1 %43 to i8
%45 = trunc i8 %44 to i1
br i1 %45, label %for.body-3, label %for.done-6
for.body-3:
; entry
%46 = load %__Map_Header, %__Map_Header* %h, align 8
; SelectorExpr
%47 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %0, i64 0, i32 2
%48 = load i64, i64* %47, align 8
%49 = bitcast %__Map_Header* %2 to %..rawptr
%50 = call %..rawptr @__mem_zero(%..rawptr %49, i64 48)
store %__Map_Header zeroinitializer, %__Map_Header* %2
store %__Map_Header %46, %__Map_Header* %2
%51 = call %__Map_Entry_Header* @__dynamic_map_get_entry(%__Map_Header* %2, i64 %48, %Context* noalias nonnull %__.context_ptr)
store %__Map_Entry_Header* %51, %__Map_Entry_Header** %1
; IfStmt
%52 = load %__Map_Header, %__Map_Header* %h, align 8
; SelectorExpr
%53 = load %__Map_Entry_Header*, %__Map_Entry_Header** %1, align 8
%54 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %53, i64 0
%55 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %54, i64 0, i32 0
%56 = load %__Map_Key, %__Map_Key* %55, align 8
%57 = load %__Map_Key, %__Map_Key* %key, align 8
%58 = bitcast %__Map_Header* %3 to %..rawptr
%59 = call %..rawptr @__mem_zero(%..rawptr %58, i64 48)
store %__Map_Header zeroinitializer, %__Map_Header* %3
store %__Map_Header %52, %__Map_Header* %3
%60 = bitcast %__Map_Key* %4 to %..rawptr
%61 = call %..rawptr @__mem_zero(%..rawptr %60, i64 24)
store %__Map_Key zeroinitializer, %__Map_Key* %4
store %__Map_Key %56, %__Map_Key* %4
%62 = bitcast %__Map_Key* %5 to %..rawptr
%63 = call %..rawptr @__mem_zero(%..rawptr %62, i64 24)
store %__Map_Key zeroinitializer, %__Map_Key* %5
store %__Map_Key %57, %__Map_Key* %5
%64 = call i8 @__dynamic_map_hash_equal(%__Map_Header* %3, %__Map_Key* %4, %__Map_Key* %5, %Context* noalias nonnull %__.context_ptr)
%65 = trunc i8 %64 to i1
br i1 %65, label %if.then-4, label %if.done-5
if.then-4:
; ReturnStmt
%66 = load %__Map_Find_Result, %__Map_Find_Result* %0, align 8
ret %__Map_Find_Result %66
if.done-5:
; AssignStmt
; SelectorExpr
%67 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %0, i64 0, i32 1
; SelectorExpr
%68 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %0, i64 0, i32 2
%69 = load i64, i64* %68, align 8
store i64 %69, i64* %67
; AssignStmt
; SelectorExpr
%70 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %0, i64 0, i32 2
; SelectorExpr
%71 = load %__Map_Entry_Header*, %__Map_Entry_Header** %1, align 8
%72 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %71, i64 0
%73 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %72, i64 0, i32 1
%74 = load i64, i64* %73, align 8
store i64 %74, i64* %70
br label %for.loop-2
for.done-6:
br label %if.done-7
if.done-7:
; ReturnStmt
%75 = load %__Map_Find_Result, %__Map_Find_Result* %0, align 8
ret %__Map_Find_Result %75
}
define i64 @__dynamic_map_add_entry(%__Map_Header* %h, %__Map_Key* %key, %Source_Code_Location* %loc, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca i64, align 16
%1 = alloca i64, align 16
%2 = alloca %Source_Code_Location, align 16
%3 = alloca %__Map_Entry_Header*, align 16
%4 = alloca %__Map_Header, align 16
%5 = load %__Map_Header, %__Map_Header* %h, align 8
%6 = load %__Map_Key, %__Map_Key* %key, align 8
%7 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
; prev
; SelectorExpr
; SelectorExpr
%8 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 0
%9 = load %raw-5.Map*, %raw-5.Map** %8, align 8
%10 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %9, i64 0
%11 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %10, i64 0, i32 1
%12 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %11, i64 0, i32 1
%13 = load i64, i64* %12, align 8
store i64 %13, i64* %0
; c
; SelectorExpr
%14 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 0
%15 = load %raw-5.Map*, %raw-5.Map** %14, align 8
%16 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %15, i64 0
%17 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %16, i64 0, i32 1
%18 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %17, i64 0
%19 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 2
%20 = load i64, i64* %19, align 8
%21 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 3
%22 = load i64, i64* %21, align 8
%23 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8
%24 = bitcast %raw-5.Dynamic_Array* %18 to %..rawptr
%25 = bitcast %Source_Code_Location* %2 to %..rawptr
%26 = call %..rawptr @__mem_zero(%..rawptr %25, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %2
store %Source_Code_Location %23, %Source_Code_Location* %2
%27 = call i64 @__dynamic_array_append_nothing(%..rawptr %24, i64 %20, i64 %22, %Source_Code_Location* %2, %Context* noalias nonnull %__.context_ptr)
store i64 %27, i64* %1
; IfStmt
%28 = load i64, i64* %1, align 8
%29 = load i64, i64* %0, align 8
%30 = icmp ne i64 %28, %29
%31 = zext i1 %30 to i8
%32 = trunc i8 %31 to i1
br i1 %32, label %if.then-1, label %if.done-2
if.then-1:
; end
%33 = load %__Map_Header, %__Map_Header* %h, align 8
%34 = load i64, i64* %1, align 8
%35 = sub i64 %34, 1
%36 = bitcast %__Map_Header* %4 to %..rawptr
%37 = call %..rawptr @__mem_zero(%..rawptr %36, i64 48)
store %__Map_Header zeroinitializer, %__Map_Header* %4
store %__Map_Header %33, %__Map_Header* %4
%38 = call %__Map_Entry_Header* @__dynamic_map_get_entry(%__Map_Header* %4, i64 %35, %Context* noalias nonnull %__.context_ptr)
store %__Map_Entry_Header* %38, %__Map_Entry_Header** %3
; AssignStmt
; SelectorExpr
%39 = load %__Map_Entry_Header*, %__Map_Entry_Header** %3, align 8
%40 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %39, i64 0
%41 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %40, i64 0, i32 0
%42 = load %__Map_Key, %__Map_Key* %key, align 8
store %__Map_Key %42, %__Map_Key* %41
; AssignStmt
; SelectorExpr
%43 = load %__Map_Entry_Header*, %__Map_Entry_Header** %3, align 8
%44 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %43, i64 0
%45 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %44, i64 0, i32 1
store i64 -1, i64* %45
br label %if.done-2
if.done-2:
; ReturnStmt
%46 = load i64, i64* %0, align 8
ret i64 %46
}
define void @__dynamic_map_delete(%__Map_Header* %h, %__Map_Key* %key, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %__Map_Find_Result, align 16
%1 = alloca %__Map_Header, align 16
%2 = alloca %__Map_Key, align 16
%3 = alloca %__Map_Header, align 16
%4 = alloca %__Map_Find_Result, align 16
%5 = load %__Map_Header, %__Map_Header* %h, align 8
%6 = load %__Map_Key, %__Map_Key* %key, align 8
; fr
%7 = load %__Map_Header, %__Map_Header* %h, align 8
%8 = load %__Map_Key, %__Map_Key* %key, align 8
%9 = bitcast %__Map_Header* %1 to %..rawptr
%10 = call %..rawptr @__mem_zero(%..rawptr %9, i64 48)
store %__Map_Header zeroinitializer, %__Map_Header* %1
store %__Map_Header %7, %__Map_Header* %1
%11 = bitcast %__Map_Key* %2 to %..rawptr
%12 = call %..rawptr @__mem_zero(%..rawptr %11, i64 24)
store %__Map_Key zeroinitializer, %__Map_Key* %2
store %__Map_Key %8, %__Map_Key* %2
%13 = call %__Map_Find_Result @__dynamic_map_find(%__Map_Header* %1, %__Map_Key* %2, %Context* noalias nonnull %__.context_ptr)
store %__Map_Find_Result %13, %__Map_Find_Result* %0
; IfStmt
; SelectorExpr
%14 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %0, i64 0, i32 2
%15 = load i64, i64* %14, align 8
%16 = icmp sge i64 %15, 0
%17 = zext i1 %16 to i8
%18 = trunc i8 %17 to i1
br i1 %18, label %if.then-1, label %if.done-2
if.then-1:
%19 = load %__Map_Header, %__Map_Header* %h, align 8
%20 = load %__Map_Find_Result, %__Map_Find_Result* %0, align 8
%21 = bitcast %__Map_Header* %3 to %..rawptr
%22 = call %..rawptr @__mem_zero(%..rawptr %21, i64 48)
store %__Map_Header zeroinitializer, %__Map_Header* %3
store %__Map_Header %19, %__Map_Header* %3
%23 = bitcast %__Map_Find_Result* %4 to %..rawptr
%24 = call %..rawptr @__mem_zero(%..rawptr %23, i64 24)
store %__Map_Find_Result zeroinitializer, %__Map_Find_Result* %4
store %__Map_Find_Result %20, %__Map_Find_Result* %4
call void @__dynamic_map_erase(%__Map_Header* %3, %__Map_Find_Result* %4, %Context* noalias nonnull %__.context_ptr)
br label %if.done-2
if.done-2:
ret void
}
define %__Map_Entry_Header* @__dynamic_map_get_entry(%__Map_Header* %h, i64 %index, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca i64, align 16
%1 = alloca %Source_Code_Location, align 16
%2 = load %__Map_Header, %__Map_Header* %h, align 8
store i64 %index, i64* %0
%3 = load i64, i64* %0, align 8
%4 = icmp sle i64 0, %3
%5 = zext i1 %4 to i8
%6 = load i64, i64* %0, align 8
%7 = icmp sle i64 0, %6
%8 = zext i1 %7 to i8
%9 = trunc i8 %8 to i1
br i1 %9, label %logical.cmp.rhs-1, label %logical.cmp.done-2
logical.cmp.rhs-1:
%10 = load i64, i64* %0, align 8
; SelectorExpr
; SelectorExpr
%11 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 0
%12 = load %raw-5.Map*, %raw-5.Map** %11, align 8
%13 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %12, i64 0
%14 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %13, i64 0, i32 1
%15 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %14, i64 0, i32 1
%16 = load i64, i64* %15, align 8
%17 = icmp slt i64 %10, %16
%18 = zext i1 %17 to i8
br label %logical.cmp.done-2
logical.cmp.done-2:
%19 = phi i8 [ 0, %decls-0 ], [ %18, %logical.cmp.rhs-1 ]
%20 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$5e, i64 0, i32 0), i64 51}, i64 1302, i64 2, %..string {i8* getelementptr inbounds ([24 x i8], [24 x i8]* @__str$5f, i64 0, i32 0), i64 23})
%21 = trunc i8 %19 to i1
%22 = bitcast %Source_Code_Location* %1 to %..rawptr
%23 = call %..rawptr @__mem_zero(%..rawptr %22, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %1
store %Source_Code_Location %20, %Source_Code_Location* %1
%24 = call i8 @assert(i1 %21, %..string zeroinitializer, %Source_Code_Location* %1)
; ReturnStmt
; SelectorExpr
; SelectorExpr
%25 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 0
%26 = load %raw-5.Map*, %raw-5.Map** %25, align 8
%27 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %26, i64 0
%28 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %27, i64 0, i32 1
%29 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %28, i64 0, i32 0
%30 = load %..rawptr, %..rawptr* %29, align 8
%31 = ptrtoint %..rawptr %30 to i64
%32 = load i64, i64* %0, align 8
%33 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 2
%34 = load i64, i64* %33, align 8
%35 = mul i64 %32, %34
%36 = bitcast i64 %35 to i64
%37 = add i64 %31, %36
%38 = inttoptr i64 %37 to %__Map_Entry_Header*
ret %__Map_Entry_Header* %38
}
define void @__dynamic_map_erase(%__Map_Header* %h, %__Map_Find_Result* %fr, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %__Map_Header, align 16
%1 = alloca %__Map_Entry_Header*, align 16
%2 = alloca %__Map_Header, align 16
%3 = alloca %__Map_Entry_Header*, align 16
%4 = alloca %__Map_Header, align 16
%5 = alloca %__Map_Entry_Header*, align 16
%6 = alloca %__Map_Header, align 16
%7 = alloca %__Map_Header, align 16
%8 = alloca %__Map_Find_Result, align 16
%9 = alloca %__Map_Header, align 16
%10 = alloca %__Map_Entry_Header*, align 16
%11 = alloca %__Map_Header, align 16
%12 = alloca %__Map_Key, align 16
%13 = alloca %__Map_Header, align 16
%14 = alloca %__Map_Entry_Header*, align 16
%15 = load %__Map_Header, %__Map_Header* %h, align 8
%16 = load %__Map_Find_Result, %__Map_Find_Result* %fr, align 8
; IfStmt
; SelectorExpr
%17 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %fr, i64 0, i32 1
%18 = load i64, i64* %17, align 8
%19 = icmp slt i64 %18, 0
%20 = zext i1 %19 to i8
%21 = trunc i8 %20 to i1
br i1 %21, label %if.then-1, label %if.else-2
if.then-1:
; AssignStmt
; IndexExpr
; SelectorExpr
%22 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 0
%23 = load %raw-5.Map*, %raw-5.Map** %22, align 8
%24 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %23, i64 0
%25 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %24, i64 0, i32 0
%26 = load {i64*, i64, i64, %Allocator}, {i64*, i64, i64, %Allocator}* %25, align 8
%27 = extractvalue {i64*, i64, i64, %Allocator} %26, 0
%28 = extractvalue {i64*, i64, i64, %Allocator} %26, 1
; SelectorExpr
%29 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %fr, i64 0, i32 0
%30 = load i64, i64* %29, align 8
%31 = getelementptr inbounds i64, i64* %27, i64 %30
; SelectorExpr
%32 = load %__Map_Header, %__Map_Header* %h, align 8
; SelectorExpr
%33 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %fr, i64 0, i32 2
%34 = load i64, i64* %33, align 8
%35 = bitcast %__Map_Header* %0 to %..rawptr
%36 = call %..rawptr @__mem_zero(%..rawptr %35, i64 48)
store %__Map_Header zeroinitializer, %__Map_Header* %0
store %__Map_Header %32, %__Map_Header* %0
%37 = call %__Map_Entry_Header* @__dynamic_map_get_entry(%__Map_Header* %0, i64 %34, %Context* noalias nonnull %__.context_ptr)
%38 = bitcast %__Map_Entry_Header** %1 to %..rawptr
%39 = call %..rawptr @__mem_zero(%..rawptr %38, i64 8)
store %__Map_Entry_Header* zeroinitializer, %__Map_Entry_Header** %1
store %__Map_Entry_Header* %37, %__Map_Entry_Header** %1
%40 = load %__Map_Entry_Header*, %__Map_Entry_Header** %1, align 8
%41 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %40, i64 0
%42 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %41, i64 0, i32 1
%43 = load i64, i64* %42, align 8
store i64 %43, i64* %31
br label %if.done-3
if.else-2:
; AssignStmt
; SelectorExpr
%44 = load %__Map_Header, %__Map_Header* %h, align 8
; SelectorExpr
%45 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %fr, i64 0, i32 1
%46 = load i64, i64* %45, align 8
%47 = bitcast %__Map_Header* %2 to %..rawptr
%48 = call %..rawptr @__mem_zero(%..rawptr %47, i64 48)
store %__Map_Header zeroinitializer, %__Map_Header* %2
store %__Map_Header %44, %__Map_Header* %2
%49 = call %__Map_Entry_Header* @__dynamic_map_get_entry(%__Map_Header* %2, i64 %46, %Context* noalias nonnull %__.context_ptr)
%50 = bitcast %__Map_Entry_Header** %3 to %..rawptr
%51 = call %..rawptr @__mem_zero(%..rawptr %50, i64 8)
store %__Map_Entry_Header* zeroinitializer, %__Map_Entry_Header** %3
store %__Map_Entry_Header* %49, %__Map_Entry_Header** %3
%52 = load %__Map_Entry_Header*, %__Map_Entry_Header** %3, align 8
%53 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %52, i64 0
%54 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %53, i64 0, i32 1
; SelectorExpr
%55 = load %__Map_Header, %__Map_Header* %h, align 8
; SelectorExpr
%56 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %fr, i64 0, i32 2
%57 = load i64, i64* %56, align 8
%58 = bitcast %__Map_Header* %4 to %..rawptr
%59 = call %..rawptr @__mem_zero(%..rawptr %58, i64 48)
store %__Map_Header zeroinitializer, %__Map_Header* %4
store %__Map_Header %55, %__Map_Header* %4
%60 = call %__Map_Entry_Header* @__dynamic_map_get_entry(%__Map_Header* %4, i64 %57, %Context* noalias nonnull %__.context_ptr)
%61 = bitcast %__Map_Entry_Header** %5 to %..rawptr
%62 = call %..rawptr @__mem_zero(%..rawptr %61, i64 8)
store %__Map_Entry_Header* zeroinitializer, %__Map_Entry_Header** %5
store %__Map_Entry_Header* %60, %__Map_Entry_Header** %5
%63 = load %__Map_Entry_Header*, %__Map_Entry_Header** %5, align 8
%64 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %63, i64 0
%65 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %64, i64 0, i32 1
%66 = load i64, i64* %65, align 8
store i64 %66, i64* %54
br label %if.done-3
if.done-3:
%67 = load %__Map_Header, %__Map_Header* %h, align 8
; SelectorExpr
%68 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %fr, i64 0, i32 2
%69 = load i64, i64* %68, align 8
%70 = bitcast %__Map_Header* %6 to %..rawptr
%71 = call %..rawptr @__mem_zero(%..rawptr %70, i64 48)
store %__Map_Header zeroinitializer, %__Map_Header* %6
store %__Map_Header %67, %__Map_Header* %6
%72 = call %__Map_Entry_Header* @__dynamic_map_get_entry(%__Map_Header* %6, i64 %69, %Context* noalias nonnull %__.context_ptr)
%73 = load %__Map_Header, %__Map_Header* %h, align 8
; SelectorExpr
; SelectorExpr
%74 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 0
%75 = load %raw-5.Map*, %raw-5.Map** %74, align 8
%76 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %75, i64 0
%77 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %76, i64 0, i32 1
%78 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %77, i64 0, i32 1
%79 = load i64, i64* %78, align 8
%80 = sub i64 %79, 1
%81 = bitcast %__Map_Header* %7 to %..rawptr
%82 = call %..rawptr @__mem_zero(%..rawptr %81, i64 48)
store %__Map_Header zeroinitializer, %__Map_Header* %7
store %__Map_Header %73, %__Map_Header* %7
%83 = call %__Map_Entry_Header* @__dynamic_map_get_entry(%__Map_Header* %7, i64 %80, %Context* noalias nonnull %__.context_ptr)
%84 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 2
%85 = load i64, i64* %84, align 8
%86 = bitcast %__Map_Entry_Header* %72 to %..rawptr
%87 = bitcast %__Map_Entry_Header* %83 to %..rawptr
%88 = call %..rawptr @__mem_copy(%..rawptr %86, %..rawptr %87, i64 %85)
; last
%89 = load %__Map_Header, %__Map_Header* %h, align 8
; SelectorExpr
%90 = load %__Map_Header, %__Map_Header* %h, align 8
; SelectorExpr
%91 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %fr, i64 0, i32 2
%92 = load i64, i64* %91, align 8
%93 = bitcast %__Map_Header* %9 to %..rawptr
%94 = call %..rawptr @__mem_zero(%..rawptr %93, i64 48)
store %__Map_Header zeroinitializer, %__Map_Header* %9
store %__Map_Header %90, %__Map_Header* %9
%95 = call %__Map_Entry_Header* @__dynamic_map_get_entry(%__Map_Header* %9, i64 %92, %Context* noalias nonnull %__.context_ptr)
%96 = bitcast %__Map_Entry_Header** %10 to %..rawptr
%97 = call %..rawptr @__mem_zero(%..rawptr %96, i64 8)
store %__Map_Entry_Header* zeroinitializer, %__Map_Entry_Header** %10
store %__Map_Entry_Header* %95, %__Map_Entry_Header** %10
%98 = load %__Map_Entry_Header*, %__Map_Entry_Header** %10, align 8
%99 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %98, i64 0
%100 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %99, i64 0, i32 0
%101 = load %__Map_Key, %__Map_Key* %100, align 8
%102 = bitcast %__Map_Header* %11 to %..rawptr
%103 = call %..rawptr @__mem_zero(%..rawptr %102, i64 48)
store %__Map_Header zeroinitializer, %__Map_Header* %11
store %__Map_Header %89, %__Map_Header* %11
%104 = bitcast %__Map_Key* %12 to %..rawptr
%105 = call %..rawptr @__mem_zero(%..rawptr %104, i64 24)
store %__Map_Key zeroinitializer, %__Map_Key* %12
store %__Map_Key %101, %__Map_Key* %12
%106 = call %__Map_Find_Result @__dynamic_map_find(%__Map_Header* %11, %__Map_Key* %12, %Context* noalias nonnull %__.context_ptr)
store %__Map_Find_Result %106, %__Map_Find_Result* %8
; IfStmt
; SelectorExpr
%107 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %8, i64 0, i32 1
%108 = load i64, i64* %107, align 8
%109 = icmp sge i64 %108, 0
%110 = zext i1 %109 to i8
%111 = trunc i8 %110 to i1
br i1 %111, label %if.then-4, label %if.else-5
if.then-4:
; AssignStmt
; SelectorExpr
%112 = load %__Map_Header, %__Map_Header* %h, align 8
; SelectorExpr
%113 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %8, i64 0, i32 1
%114 = load i64, i64* %113, align 8
%115 = bitcast %__Map_Header* %13 to %..rawptr
%116 = call %..rawptr @__mem_zero(%..rawptr %115, i64 48)
store %__Map_Header zeroinitializer, %__Map_Header* %13
store %__Map_Header %112, %__Map_Header* %13
%117 = call %__Map_Entry_Header* @__dynamic_map_get_entry(%__Map_Header* %13, i64 %114, %Context* noalias nonnull %__.context_ptr)
%118 = bitcast %__Map_Entry_Header** %14 to %..rawptr
%119 = call %..rawptr @__mem_zero(%..rawptr %118, i64 8)
store %__Map_Entry_Header* zeroinitializer, %__Map_Entry_Header** %14
store %__Map_Entry_Header* %117, %__Map_Entry_Header** %14
%120 = load %__Map_Entry_Header*, %__Map_Entry_Header** %14, align 8
%121 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %120, i64 0
%122 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %121, i64 0, i32 1
; SelectorExpr
%123 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %fr, i64 0, i32 2
%124 = load i64, i64* %123, align 8
store i64 %124, i64* %122
br label %if.done-6
if.else-5:
; AssignStmt
; IndexExpr
; SelectorExpr
%125 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 0
%126 = load %raw-5.Map*, %raw-5.Map** %125, align 8
%127 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %126, i64 0
%128 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %127, i64 0, i32 0
%129 = load {i64*, i64, i64, %Allocator}, {i64*, i64, i64, %Allocator}* %128, align 8
%130 = extractvalue {i64*, i64, i64, %Allocator} %129, 0
%131 = extractvalue {i64*, i64, i64, %Allocator} %129, 1
; SelectorExpr
%132 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %8, i64 0, i32 0
%133 = load i64, i64* %132, align 8
%134 = getelementptr inbounds i64, i64* %130, i64 %133
; SelectorExpr
%135 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %fr, i64 0, i32 2
%136 = load i64, i64* %135, align 8
store i64 %136, i64* %134
br label %if.done-6
if.done-6:
; IfStmt
; SelectorExpr
%137 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %fr, i64 0, i32 2
%138 = load i64, i64* %137, align 8
; SelectorExpr
; SelectorExpr
%139 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 0
%140 = load %raw-5.Map*, %raw-5.Map** %139, align 8
%141 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %140, i64 0
%142 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %141, i64 0, i32 1
%143 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %142, i64 0, i32 1
%144 = load i64, i64* %143, align 8
%145 = sub i64 %144, 1
%146 = icmp eq i64 %138, %145
%147 = zext i1 %146 to i8
%148 = trunc i8 %147 to i1
br i1 %148, label %if.then-7, label %if.done-8
if.then-7:
; AssignStmt
; SelectorExpr
; SelectorExpr
%149 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 0
%150 = load %raw-5.Map*, %raw-5.Map** %149, align 8
%151 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %150, i64 0
%152 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %151, i64 0, i32 1
%153 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %152, i64 0, i32 1
%154 = load i64, i64* %153, align 8
%155 = sub i64 %154, 1
store i64 %155, i64* %153
br label %if.done-8
if.done-8:
ret void
}
define {[4 x i8], i64} @utf8-4.encode_rune(i32 %r, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca i32, align 16
%1 = alloca [4 x i8], align 16
%2 = alloca i32, align 16
%3 = alloca {[4 x i8], i64}, align 16
%4 = alloca {[4 x i8], i64}, align 16
%5 = alloca {[4 x i8], i64}, align 16
%6 = alloca {[4 x i8], i64}, align 16
store i32 %r, i32* %0
; buf
%7 = bitcast [4 x i8]* %1 to %..rawptr
%8 = call %..rawptr @__mem_zero(%..rawptr %7, i64 4)
store [4 x i8] zeroinitializer, [4 x i8]* %1
; i
%9 = load i32, i32* %0, align 4
%10 = bitcast i32 %9 to i32
store i32 %10, i32* %2
; IfStmt
%11 = load i32, i32* %2, align 4
%12 = icmp ule i32 %11, 127
%13 = zext i1 %12 to i8
%14 = trunc i8 %13 to i1
br i1 %14, label %if.then-1, label %if.done-2
if.then-1:
; AssignStmt
; IndexExpr
%15 = getelementptr inbounds [4 x i8], [4 x i8]* %1, i64 0, i32 0
%16 = load i32, i32* %0, align 4
%17 = trunc i32 %16 to i8
store i8 %17, i8* %15
; ReturnStmt
%18 = load [4 x i8], [4 x i8]* %1, align 1
%19 = bitcast {[4 x i8], i64}* %3 to %..rawptr
%20 = call %..rawptr @__mem_zero(%..rawptr %19, i64 16)
store {[4 x i8], i64} zeroinitializer, {[4 x i8], i64}* %3
%21 = getelementptr inbounds {[4 x i8], i64}, {[4 x i8], i64}* %3, i64 0, i32 0
store [4 x i8] %18, [4 x i8]* %21
%22 = getelementptr inbounds {[4 x i8], i64}, {[4 x i8], i64}* %3, i64 0, i32 1
store i64 1, i64* %22
%23 = load {[4 x i8], i64}, {[4 x i8], i64}* %3, align 8
ret {[4 x i8], i64} %23
if.done-2:
; IfStmt
%24 = load i32, i32* %2, align 4
%25 = icmp ule i32 %24, 2047
%26 = zext i1 %25 to i8
%27 = trunc i8 %26 to i1
br i1 %27, label %if.then-3, label %if.done-4
if.then-3:
; AssignStmt
; IndexExpr
%28 = getelementptr inbounds [4 x i8], [4 x i8]* %1, i64 0, i32 0
%29 = load i32, i32* %0, align 4
%30 = lshr i32 %29, 6
%31 = trunc i32 %30 to i8
%32 = or i8 192, %31
store i8 %32, i8* %28
; AssignStmt
; IndexExpr
%33 = getelementptr inbounds [4 x i8], [4 x i8]* %1, i64 0, i32 1
%34 = load i32, i32* %0, align 4
%35 = trunc i32 %34 to i8
%36 = and i8 %35, 63
%37 = or i8 128, %36
store i8 %37, i8* %33
; ReturnStmt
%38 = load [4 x i8], [4 x i8]* %1, align 1
%39 = bitcast {[4 x i8], i64}* %4 to %..rawptr
%40 = call %..rawptr @__mem_zero(%..rawptr %39, i64 16)
store {[4 x i8], i64} zeroinitializer, {[4 x i8], i64}* %4
%41 = getelementptr inbounds {[4 x i8], i64}, {[4 x i8], i64}* %4, i64 0, i32 0
store [4 x i8] %38, [4 x i8]* %41
%42 = getelementptr inbounds {[4 x i8], i64}, {[4 x i8], i64}* %4, i64 0, i32 1
store i64 2, i64* %42
%43 = load {[4 x i8], i64}, {[4 x i8], i64}* %4, align 8
ret {[4 x i8], i64} %43
if.done-4:
; IfStmt
%44 = load i32, i32* %2, align 4
%45 = icmp ugt i32 %44, 1114111
%46 = zext i1 %45 to i8
%47 = trunc i8 %46 to i1
br i1 %47, label %if.then-7, label %cmp.or-5
cmp.or-5:
%48 = load i32, i32* %2, align 4
%49 = icmp ule i32 55296, %48
%50 = zext i1 %49 to i8
%51 = trunc i8 %50 to i1
br i1 %51, label %cmp.and-6, label %if.done-8
cmp.and-6:
%52 = load i32, i32* %2, align 4
%53 = icmp ule i32 %52, 57343
%54 = zext i1 %53 to i8
%55 = trunc i8 %54 to i1
br i1 %55, label %if.then-7, label %if.done-8
if.then-7:
; AssignStmt
store i32 65533, i32* %0
br label %if.done-8
if.done-8:
; IfStmt
%56 = load i32, i32* %2, align 4
%57 = icmp ule i32 %56, 65535
%58 = zext i1 %57 to i8
%59 = trunc i8 %58 to i1
br i1 %59, label %if.then-9, label %if.done-10
if.then-9:
; AssignStmt
; IndexExpr
%60 = getelementptr inbounds [4 x i8], [4 x i8]* %1, i64 0, i32 0
%61 = load i32, i32* %0, align 4
%62 = lshr i32 %61, 12
%63 = trunc i32 %62 to i8
%64 = or i8 224, %63
store i8 %64, i8* %60
; AssignStmt
; IndexExpr
%65 = getelementptr inbounds [4 x i8], [4 x i8]* %1, i64 0, i32 1
%66 = load i32, i32* %0, align 4
%67 = lshr i32 %66, 6
%68 = trunc i32 %67 to i8
%69 = and i8 %68, 63
%70 = or i8 128, %69
store i8 %70, i8* %65
; AssignStmt
; IndexExpr
%71 = getelementptr inbounds [4 x i8], [4 x i8]* %1, i64 0, i32 2
%72 = load i32, i32* %0, align 4
%73 = trunc i32 %72 to i8
%74 = and i8 %73, 63
%75 = or i8 128, %74
store i8 %75, i8* %71
; ReturnStmt
%76 = load [4 x i8], [4 x i8]* %1, align 1
%77 = bitcast {[4 x i8], i64}* %5 to %..rawptr
%78 = call %..rawptr @__mem_zero(%..rawptr %77, i64 16)
store {[4 x i8], i64} zeroinitializer, {[4 x i8], i64}* %5
%79 = getelementptr inbounds {[4 x i8], i64}, {[4 x i8], i64}* %5, i64 0, i32 0
store [4 x i8] %76, [4 x i8]* %79
%80 = getelementptr inbounds {[4 x i8], i64}, {[4 x i8], i64}* %5, i64 0, i32 1
store i64 3, i64* %80
%81 = load {[4 x i8], i64}, {[4 x i8], i64}* %5, align 8
ret {[4 x i8], i64} %81
if.done-10:
; AssignStmt
; IndexExpr
%82 = getelementptr inbounds [4 x i8], [4 x i8]* %1, i64 0, i32 0
%83 = load i32, i32* %0, align 4
%84 = lshr i32 %83, 18
%85 = trunc i32 %84 to i8
%86 = or i8 240, %85
store i8 %86, i8* %82
; AssignStmt
; IndexExpr
%87 = getelementptr inbounds [4 x i8], [4 x i8]* %1, i64 0, i32 1
%88 = load i32, i32* %0, align 4
%89 = lshr i32 %88, 12
%90 = trunc i32 %89 to i8
%91 = and i8 %90, 63
%92 = or i8 128, %91
store i8 %92, i8* %87
; AssignStmt
; IndexExpr
%93 = getelementptr inbounds [4 x i8], [4 x i8]* %1, i64 0, i32 2
%94 = load i32, i32* %0, align 4
%95 = lshr i32 %94, 6
%96 = trunc i32 %95 to i8
%97 = and i8 %96, 63
%98 = or i8 128, %97
store i8 %98, i8* %93
; AssignStmt
; IndexExpr
%99 = getelementptr inbounds [4 x i8], [4 x i8]* %1, i64 0, i32 3
%100 = load i32, i32* %0, align 4
%101 = trunc i32 %100 to i8
%102 = and i8 %101, 63
%103 = or i8 128, %102
store i8 %103, i8* %99
; ReturnStmt
%104 = load [4 x i8], [4 x i8]* %1, align 1
%105 = bitcast {[4 x i8], i64}* %6 to %..rawptr
%106 = call %..rawptr @__mem_zero(%..rawptr %105, i64 16)
store {[4 x i8], i64} zeroinitializer, {[4 x i8], i64}* %6
%107 = getelementptr inbounds {[4 x i8], i64}, {[4 x i8], i64}* %6, i64 0, i32 0
store [4 x i8] %104, [4 x i8]* %107
%108 = getelementptr inbounds {[4 x i8], i64}, {[4 x i8], i64}* %6, i64 0, i32 1
store i64 4, i64* %108
%109 = load {[4 x i8], i64}, {[4 x i8], i64}* %6, align 8
ret {[4 x i8], i64} %109
}
define {i32, i64} @utf8-4.decode_rune_from_string(%..string %s, %Context* noalias nonnull %__.context_ptr) alwaysinline #1 {
decls-0:
%0 = alloca %..string, align 16
%1 = alloca i8*, align 16
%2 = alloca {i8*, i64}, align 16
%3 = alloca {i8*, i64}, align 16
%4 = alloca {i32, i64}, align 16
store %..string %s, %..string* %0
; ReturnStmt
%5 = load %..string, %..string* %0, align 8
%6 = extractvalue %..string %5, 0
%7 = bitcast i8** %1 to %..rawptr
%8 = call %..rawptr @__mem_zero(%..rawptr %7, i64 8)
store i8* zeroinitializer, i8** %1
store i8* %6, i8** %1
%9 = extractvalue %..string %5, 1
%10 = sub i64 %9, 0
%11 = load i8*, i8** %1, align 8
%12 = getelementptr inbounds i8, i8* %11, i64 0
%13 = bitcast {i8*, i64}* %2 to %..rawptr
%14 = call %..rawptr @__mem_zero(%..rawptr %13, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %2
%15 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %2, i64 0, i32 0
store i8* %12, i8** %15
%16 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %2, i64 0, i32 1
store i64 %10, i64* %16
%17 = load {i8*, i64}, {i8*, i64}* %2, align 8
%18 = bitcast {i8*, i64}* %3 to %..rawptr
%19 = call %..rawptr @__mem_zero(%..rawptr %18, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %3
store {i8*, i64} %17, {i8*, i64}* %3
%20 = call {i32, i64} @utf8-4.decode_rune({i8*, i64}* %3, %Context* noalias nonnull %__.context_ptr)
%21 = extractvalue {i32, i64} %20, 0
%22 = extractvalue {i32, i64} %20, 1
%23 = bitcast {i32, i64}* %4 to %..rawptr
%24 = call %..rawptr @__mem_zero(%..rawptr %23, i64 16)
store {i32, i64} zeroinitializer, {i32, i64}* %4
%25 = getelementptr inbounds {i32, i64}, {i32, i64}* %4, i64 0, i32 0
store i32 %21, i32* %25
%26 = getelementptr inbounds {i32, i64}, {i32, i64}* %4, i64 0, i32 1
store i64 %22, i64* %26
%27 = load {i32, i64}, {i32, i64}* %4, align 8
ret {i32, i64} %27
}
define {i32, i64} @utf8-4.decode_rune({i8*, i64}* %s, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca i64, align 16
%1 = alloca {i32, i64}, align 16
%2 = alloca i8, align 16
%3 = alloca i8, align 16
%4 = alloca i32, align 16
%5 = alloca {i32, i64}, align 16
%6 = alloca i8, align 16
%7 = alloca %utf8-4.Accept_Range, align 16
%8 = alloca {i32, i64}, align 16
%9 = alloca i8, align 16
%10 = alloca {i32, i64}, align 16
%11 = alloca {i32, i64}, align 16
%12 = alloca i8, align 16
%13 = alloca {i32, i64}, align 16
%14 = alloca {i32, i64}, align 16
%15 = alloca i8, align 16
%16 = alloca {i32, i64}, align 16
%17 = alloca {i32, i64}, align 16
%18 = load {i8*, i64}, {i8*, i64}* %s, align 8
; n
%19 = load {i8*, i64}, {i8*, i64}* %s, align 8
%20 = extractvalue {i8*, i64} %19, 1
store i64 %20, i64* %0
; IfStmt
%21 = load i64, i64* %0, align 8
%22 = icmp slt i64 %21, 1
%23 = zext i1 %22 to i8
%24 = trunc i8 %23 to i1
br i1 %24, label %if.then-1, label %if.done-2
if.then-1:
; ReturnStmt
%25 = bitcast {i32, i64}* %1 to %..rawptr
%26 = call %..rawptr @__mem_zero(%..rawptr %25, i64 16)
store {i32, i64} zeroinitializer, {i32, i64}* %1
%27 = getelementptr inbounds {i32, i64}, {i32, i64}* %1, i64 0, i32 0
store i32 65533, i32* %27
%28 = getelementptr inbounds {i32, i64}, {i32, i64}* %1, i64 0, i32 1
store i64 0, i64* %28
%29 = load {i32, i64}, {i32, i64}* %1, align 8
ret {i32, i64} %29
if.done-2:
; s0
; IndexExpr
%30 = load {i8*, i64}, {i8*, i64}* %s, align 8
%31 = extractvalue {i8*, i64} %30, 0
%32 = extractvalue {i8*, i64} %30, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([48 x i8], [48 x i8]* @__str$60, i64 0, i32 0), i64 47}, i64 101, i64 10, i64 0, i64 %32)
%33 = getelementptr inbounds i8, i8* %31, i64 0
%34 = load i8, i8* %33, align 1
store i8 %34, i8* %2
; x
; IndexExpr
%35 = load i8, i8* %2, align 1
%36 = zext i8 %35 to i64
%37 = trunc i64 %36 to i32
%38 = getelementptr inbounds [256 x i8], [256 x i8]* @utf8-4.accept_sizes, i64 0, i32 %37
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([48 x i8], [48 x i8]* @__str$61, i64 0, i32 0), i64 47}, i64 102, i64 20, i64 %36, i64 256)
%39 = load i8, i8* %38, align 1
store i8 %39, i8* %3
; IfStmt
%40 = load i8, i8* %3, align 1
%41 = icmp uge i8 %40, 240
%42 = zext i1 %41 to i8
%43 = trunc i8 %42 to i1
br i1 %43, label %if.then-3, label %if.done-4
if.then-3:
; mask
%44 = load i8, i8* %3, align 1
%45 = zext i8 %44 to i32
%46 = shl i32 %45, 31
%47 = lshr i32 %46, 31
store i32 %47, i32* %4
; ReturnStmt
; IndexExpr
%48 = load {i8*, i64}, {i8*, i64}* %s, align 8
%49 = extractvalue {i8*, i64} %48, 0
%50 = extractvalue {i8*, i64} %48, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([48 x i8], [48 x i8]* @__str$62, i64 0, i32 0), i64 47}, i64 105, i64 17, i64 0, i64 %50)
%51 = getelementptr inbounds i8, i8* %49, i64 0
%52 = load i8, i8* %51, align 1
%53 = zext i8 %52 to i32
%54 = load i32, i32* %4, align 4
%55 = xor i32 %54, -1
%56 = and i32 %53, %55
%57 = load i32, i32* %4, align 4
%58 = and i32 65533, %57
%59 = or i32 %56, %58
%60 = bitcast {i32, i64}* %5 to %..rawptr
%61 = call %..rawptr @__mem_zero(%..rawptr %60, i64 16)
store {i32, i64} zeroinitializer, {i32, i64}* %5
%62 = getelementptr inbounds {i32, i64}, {i32, i64}* %5, i64 0, i32 0
store i32 %59, i32* %62
%63 = getelementptr inbounds {i32, i64}, {i32, i64}* %5, i64 0, i32 1
store i64 1, i64* %63
%64 = load {i32, i64}, {i32, i64}* %5, align 8
ret {i32, i64} %64
if.done-4:
; sz
%65 = load i8, i8* %3, align 1
%66 = and i8 %65, 7
store i8 %66, i8* %6
; accept
; IndexExpr
%67 = load i8, i8* %3, align 1
%68 = lshr i8 %67, 4
%69 = zext i8 %68 to i64
%70 = trunc i64 %69 to i32
%71 = getelementptr inbounds [5 x %utf8-4.Accept_Range], [5 x %utf8-4.Accept_Range]* @utf8-4.accept_ranges, i64 0, i32 %70
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([48 x i8], [48 x i8]* @__str$63, i64 0, i32 0), i64 47}, i64 108, i64 26, i64 %69, i64 5)
%72 = load %utf8-4.Accept_Range, %utf8-4.Accept_Range* %71, align 1
store %utf8-4.Accept_Range %72, %utf8-4.Accept_Range* %7
; IfStmt
%73 = load i64, i64* %0, align 8
%74 = load i8, i8* %6, align 1
%75 = zext i8 %74 to i64
%76 = icmp slt i64 %73, %75
%77 = zext i1 %76 to i8
%78 = trunc i8 %77 to i1
br i1 %78, label %if.then-5, label %if.done-6
if.then-5:
; ReturnStmt
%79 = bitcast {i32, i64}* %8 to %..rawptr
%80 = call %..rawptr @__mem_zero(%..rawptr %79, i64 16)
store {i32, i64} zeroinitializer, {i32, i64}* %8
%81 = getelementptr inbounds {i32, i64}, {i32, i64}* %8, i64 0, i32 0
store i32 65533, i32* %81
%82 = getelementptr inbounds {i32, i64}, {i32, i64}* %8, i64 0, i32 1
store i64 1, i64* %82
%83 = load {i32, i64}, {i32, i64}* %8, align 8
ret {i32, i64} %83
if.done-6:
; b1
; IndexExpr
%84 = load {i8*, i64}, {i8*, i64}* %s, align 8
%85 = extractvalue {i8*, i64} %84, 0
%86 = extractvalue {i8*, i64} %84, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([48 x i8], [48 x i8]* @__str$64, i64 0, i32 0), i64 47}, i64 112, i64 10, i64 1, i64 %86)
%87 = getelementptr inbounds i8, i8* %85, i64 1
%88 = load i8, i8* %87, align 1
store i8 %88, i8* %9
; IfStmt
%89 = load i8, i8* %9, align 1
; SelectorExpr
%90 = getelementptr inbounds %utf8-4.Accept_Range, %utf8-4.Accept_Range* %7, i64 0, i32 0
%91 = load i8, i8* %90, align 1
%92 = icmp ult i8 %89, %91
%93 = zext i1 %92 to i8
%94 = trunc i8 %93 to i1
br i1 %94, label %if.then-8, label %cmp.or-7
cmp.or-7:
; SelectorExpr
%95 = getelementptr inbounds %utf8-4.Accept_Range, %utf8-4.Accept_Range* %7, i64 0, i32 1
%96 = load i8, i8* %95, align 1
%97 = load i8, i8* %9, align 1
%98 = icmp ult i8 %96, %97
%99 = zext i1 %98 to i8
%100 = trunc i8 %99 to i1
br i1 %100, label %if.then-8, label %if.done-9
if.then-8:
; ReturnStmt
%101 = bitcast {i32, i64}* %10 to %..rawptr
%102 = call %..rawptr @__mem_zero(%..rawptr %101, i64 16)
store {i32, i64} zeroinitializer, {i32, i64}* %10
%103 = getelementptr inbounds {i32, i64}, {i32, i64}* %10, i64 0, i32 0
store i32 65533, i32* %103
%104 = getelementptr inbounds {i32, i64}, {i32, i64}* %10, i64 0, i32 1
store i64 1, i64* %104
%105 = load {i32, i64}, {i32, i64}* %10, align 8
ret {i32, i64} %105
if.done-9:
; IfStmt
%106 = load i8, i8* %6, align 1
%107 = icmp eq i8 %106, 2
%108 = zext i1 %107 to i8
%109 = trunc i8 %108 to i1
br i1 %109, label %if.then-10, label %if.done-11
if.then-10:
; ReturnStmt
%110 = load i8, i8* %2, align 1
%111 = and i8 %110, 31
%112 = zext i8 %111 to i32
%113 = shl i32 %112, 6
%114 = load i8, i8* %9, align 1
%115 = and i8 %114, 63
%116 = zext i8 %115 to i32
%117 = or i32 %113, %116
%118 = bitcast {i32, i64}* %11 to %..rawptr
%119 = call %..rawptr @__mem_zero(%..rawptr %118, i64 16)
store {i32, i64} zeroinitializer, {i32, i64}* %11
%120 = getelementptr inbounds {i32, i64}, {i32, i64}* %11, i64 0, i32 0
store i32 %117, i32* %120
%121 = getelementptr inbounds {i32, i64}, {i32, i64}* %11, i64 0, i32 1
store i64 2, i64* %121
%122 = load {i32, i64}, {i32, i64}* %11, align 8
ret {i32, i64} %122
if.done-11:
; b2
; IndexExpr
%123 = load {i8*, i64}, {i8*, i64}* %s, align 8
%124 = extractvalue {i8*, i64} %123, 0
%125 = extractvalue {i8*, i64} %123, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([48 x i8], [48 x i8]* @__str$65, i64 0, i32 0), i64 47}, i64 119, i64 10, i64 2, i64 %125)
%126 = getelementptr inbounds i8, i8* %124, i64 2
%127 = load i8, i8* %126, align 1
store i8 %127, i8* %12
; IfStmt
%128 = load i8, i8* %12, align 1
%129 = icmp ult i8 %128, 128
%130 = zext i1 %129 to i8
%131 = trunc i8 %130 to i1
br i1 %131, label %if.then-13, label %cmp.or-12
cmp.or-12:
%132 = load i8, i8* %12, align 1
%133 = icmp ult i8 191, %132
%134 = zext i1 %133 to i8
%135 = trunc i8 %134 to i1
br i1 %135, label %if.then-13, label %if.done-14
if.then-13:
; ReturnStmt
%136 = bitcast {i32, i64}* %13 to %..rawptr
%137 = call %..rawptr @__mem_zero(%..rawptr %136, i64 16)
store {i32, i64} zeroinitializer, {i32, i64}* %13
%138 = getelementptr inbounds {i32, i64}, {i32, i64}* %13, i64 0, i32 0
store i32 65533, i32* %138
%139 = getelementptr inbounds {i32, i64}, {i32, i64}* %13, i64 0, i32 1
store i64 1, i64* %139
%140 = load {i32, i64}, {i32, i64}* %13, align 8
ret {i32, i64} %140
if.done-14:
; IfStmt
%141 = load i8, i8* %6, align 1
%142 = icmp eq i8 %141, 3
%143 = zext i1 %142 to i8
%144 = trunc i8 %143 to i1
br i1 %144, label %if.then-15, label %if.done-16
if.then-15:
; ReturnStmt
%145 = load i8, i8* %2, align 1
%146 = and i8 %145, 15
%147 = zext i8 %146 to i32
%148 = shl i32 %147, 12
%149 = load i8, i8* %9, align 1
%150 = and i8 %149, 63
%151 = zext i8 %150 to i32
%152 = shl i32 %151, 6
%153 = or i32 %148, %152
%154 = load i8, i8* %12, align 1
%155 = and i8 %154, 63
%156 = zext i8 %155 to i32
%157 = or i32 %153, %156
%158 = bitcast {i32, i64}* %14 to %..rawptr
%159 = call %..rawptr @__mem_zero(%..rawptr %158, i64 16)
store {i32, i64} zeroinitializer, {i32, i64}* %14
%160 = getelementptr inbounds {i32, i64}, {i32, i64}* %14, i64 0, i32 0
store i32 %157, i32* %160
%161 = getelementptr inbounds {i32, i64}, {i32, i64}* %14, i64 0, i32 1
store i64 3, i64* %161
%162 = load {i32, i64}, {i32, i64}* %14, align 8
ret {i32, i64} %162
if.done-16:
; b3
; IndexExpr
%163 = load {i8*, i64}, {i8*, i64}* %s, align 8
%164 = extractvalue {i8*, i64} %163, 0
%165 = extractvalue {i8*, i64} %163, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([48 x i8], [48 x i8]* @__str$66, i64 0, i32 0), i64 47}, i64 126, i64 10, i64 3, i64 %165)
%166 = getelementptr inbounds i8, i8* %164, i64 3
%167 = load i8, i8* %166, align 1
store i8 %167, i8* %15
; IfStmt
%168 = load i8, i8* %15, align 1
%169 = icmp ult i8 %168, 128
%170 = zext i1 %169 to i8
%171 = trunc i8 %170 to i1
br i1 %171, label %if.then-18, label %cmp.or-17
cmp.or-17:
%172 = load i8, i8* %15, align 1
%173 = icmp ult i8 191, %172
%174 = zext i1 %173 to i8
%175 = trunc i8 %174 to i1
br i1 %175, label %if.then-18, label %if.done-19
if.then-18:
; ReturnStmt
%176 = bitcast {i32, i64}* %16 to %..rawptr
%177 = call %..rawptr @__mem_zero(%..rawptr %176, i64 16)
store {i32, i64} zeroinitializer, {i32, i64}* %16
%178 = getelementptr inbounds {i32, i64}, {i32, i64}* %16, i64 0, i32 0
store i32 65533, i32* %178
%179 = getelementptr inbounds {i32, i64}, {i32, i64}* %16, i64 0, i32 1
store i64 1, i64* %179
%180 = load {i32, i64}, {i32, i64}* %16, align 8
ret {i32, i64} %180
if.done-19:
; ReturnStmt
%181 = load i8, i8* %2, align 1
%182 = and i8 %181, 7
%183 = zext i8 %182 to i32
%184 = shl i32 %183, 18
%185 = load i8, i8* %9, align 1
%186 = and i8 %185, 63
%187 = zext i8 %186 to i32
%188 = shl i32 %187, 12
%189 = or i32 %184, %188
%190 = load i8, i8* %12, align 1
%191 = and i8 %190, 63
%192 = zext i8 %191 to i32
%193 = shl i32 %192, 6
%194 = or i32 %189, %193
%195 = load i8, i8* %15, align 1
%196 = and i8 %195, 63
%197 = zext i8 %196 to i32
%198 = or i32 %194, %197
%199 = bitcast {i32, i64}* %17 to %..rawptr
%200 = call %..rawptr @__mem_zero(%..rawptr %199, i64 16)
store {i32, i64} zeroinitializer, {i32, i64}* %17
%201 = getelementptr inbounds {i32, i64}, {i32, i64}* %17, i64 0, i32 0
store i32 %198, i32* %201
%202 = getelementptr inbounds {i32, i64}, {i32, i64}* %17, i64 0, i32 1
store i64 4, i64* %202
%203 = load {i32, i64}, {i32, i64}* %17, align 8
ret {i32, i64} %203
}
define i8 @utf8-4.valid_rune(i32 %r, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca i32, align 16
store i32 %r, i32* %0
; IfStmt
%1 = load i32, i32* %0, align 4
%2 = icmp slt i32 %1, 0
%3 = zext i1 %2 to i8
%4 = trunc i8 %3 to i1
br i1 %4, label %if.then-1, label %if.else-2
if.then-1:
; ReturnStmt
ret i8 0
if.else-2:
; IfStmt
%5 = load i32, i32* %0, align 4
%6 = icmp sle i32 55296, %5
%7 = zext i1 %6 to i8
%8 = trunc i8 %7 to i1
br i1 %8, label %cmp.and-3, label %if.else-5
cmp.and-3:
%9 = load i32, i32* %0, align 4
%10 = icmp sle i32 %9, 57343
%11 = zext i1 %10 to i8
%12 = trunc i8 %11 to i1
br i1 %12, label %if.then-4, label %if.else-5
if.then-4:
; ReturnStmt
ret i8 0
if.else-5:
; IfStmt
%13 = load i32, i32* %0, align 4
%14 = icmp sgt i32 %13, 1114111
%15 = zext i1 %14 to i8
%16 = trunc i8 %15 to i1
br i1 %16, label %if.then-6, label %if.done-7
if.then-6:
; ReturnStmt
ret i8 0
if.done-7:
; ReturnStmt
ret i8 1
}
define i64 @utf8-4.rune_count_from_string(%..string %s, %Context* noalias nonnull %__.context_ptr) alwaysinline #1 {
decls-0:
%0 = alloca %..string, align 16
%1 = alloca i8*, align 16
%2 = alloca {i8*, i64}, align 16
%3 = alloca {i8*, i64}, align 16
store %..string %s, %..string* %0
; ReturnStmt
%4 = load %..string, %..string* %0, align 8
%5 = extractvalue %..string %4, 0
%6 = bitcast i8** %1 to %..rawptr
%7 = call %..rawptr @__mem_zero(%..rawptr %6, i64 8)
store i8* zeroinitializer, i8** %1
store i8* %5, i8** %1
%8 = extractvalue %..string %4, 1
%9 = sub i64 %8, 0
%10 = load i8*, i8** %1, align 8
%11 = getelementptr inbounds i8, i8* %10, i64 0
%12 = bitcast {i8*, i64}* %2 to %..rawptr
%13 = call %..rawptr @__mem_zero(%..rawptr %12, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %2
%14 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %2, i64 0, i32 0
store i8* %11, i8** %14
%15 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %2, i64 0, i32 1
store i64 %9, i64* %15
%16 = load {i8*, i64}, {i8*, i64}* %2, align 8
%17 = bitcast {i8*, i64}* %3 to %..rawptr
%18 = call %..rawptr @__mem_zero(%..rawptr %17, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %3
store {i8*, i64} %16, {i8*, i64}* %3
%19 = call i64 @utf8-4.rune_count({i8*, i64}* %3, %Context* noalias nonnull %__.context_ptr)
ret i64 %19
}
define i64 @utf8-4.rune_count({i8*, i64}* %s, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca i64, align 16
%1 = alloca i64, align 16
%2 = alloca i64, align 16
%3 = alloca i8, align 16
%4 = alloca i8, align 16
%5 = alloca i64, align 16
%6 = alloca %utf8-4.Accept_Range, align 16
%7 = alloca i8, align 16
%8 = alloca i8, align 16
%9 = alloca i8, align 16
%10 = load {i8*, i64}, {i8*, i64}* %s, align 8
; count
store i64 0, i64* %0
; n
%11 = load {i8*, i64}, {i8*, i64}* %s, align 8
%12 = extractvalue {i8*, i64} %11, 1
store i64 %12, i64* %1
; ForStmt
; i
store i64 0, i64* %2
br label %for.loop-1
for.loop-1:
%13 = load i64, i64* %2, align 8
%14 = load i64, i64* %1, align 8
%15 = icmp slt i64 %13, %14
%16 = zext i1 %15 to i8
%17 = trunc i8 %16 to i1
br i1 %17, label %for.body-2, label %for.done-26
for.body-2:
; DeferStmt
; si
; IndexExpr
%18 = load {i8*, i64}, {i8*, i64}* %s, align 8
%19 = extractvalue {i8*, i64} %18, 0
%20 = load i64, i64* %2, align 8
%21 = extractvalue {i8*, i64} %18, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([48 x i8], [48 x i8]* @__str$67, i64 0, i32 0), i64 47}, i64 223, i64 11, i64 %20, i64 %21)
%22 = getelementptr inbounds i8, i8* %19, i64 %20
%23 = load i8, i8* %22, align 1
store i8 %23, i8* %3
; IfStmt
%24 = load i8, i8* %3, align 1
%25 = icmp ult i8 %24, 128
%26 = zext i1 %25 to i8
%27 = trunc i8 %26 to i1
br i1 %27, label %if.then-3, label %if.done-4
if.then-3:
; AssignStmt
%28 = load i64, i64* %2, align 8
%29 = add i64 %28, 1
store i64 %29, i64* %2
; defer
; AssignStmt
%30 = load i64, i64* %0, align 8
%31 = add i64 %30, 1
store i64 %31, i64* %0
; continue
br label %for.loop-1
if.done-4:
; x
; IndexExpr
%32 = load i8, i8* %3, align 1
%33 = zext i8 %32 to i64
%34 = trunc i64 %33 to i32
%35 = getelementptr inbounds [256 x i8], [256 x i8]* @utf8-4.accept_sizes, i64 0, i32 %34
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([48 x i8], [48 x i8]* @__str$68, i64 0, i32 0), i64 47}, i64 228, i64 21, i64 %33, i64 256)
%36 = load i8, i8* %35, align 1
store i8 %36, i8* %4
; IfStmt
%37 = load i8, i8* %4, align 1
%38 = icmp eq i8 %37, 241
%39 = zext i1 %38 to i8
%40 = trunc i8 %39 to i1
br i1 %40, label %if.then-5, label %if.done-6
if.then-5:
; AssignStmt
%41 = load i64, i64* %2, align 8
%42 = add i64 %41, 1
store i64 %42, i64* %2
; defer
; AssignStmt
%43 = load i64, i64* %0, align 8
%44 = add i64 %43, 1
store i64 %44, i64* %0
; continue
br label %for.loop-1
if.done-6:
; size
%45 = load i8, i8* %4, align 1
%46 = and i8 %45, 7
%47 = zext i8 %46 to i64
store i64 %47, i64* %5
; IfStmt
%48 = load i64, i64* %2, align 8
%49 = load i64, i64* %5, align 8
%50 = add i64 %48, %49
%51 = load i64, i64* %1, align 8
%52 = icmp sgt i64 %50, %51
%53 = zext i1 %52 to i8
%54 = trunc i8 %53 to i1
br i1 %54, label %if.then-7, label %if.done-8
if.then-7:
; AssignStmt
%55 = load i64, i64* %2, align 8
%56 = add i64 %55, 1
store i64 %56, i64* %2
; defer
; AssignStmt
%57 = load i64, i64* %0, align 8
%58 = add i64 %57, 1
store i64 %58, i64* %0
; continue
br label %for.loop-1
if.done-8:
; ar
; IndexExpr
%59 = load i8, i8* %4, align 1
%60 = lshr i8 %59, 4
%61 = zext i8 %60 to i64
%62 = trunc i64 %61 to i32
%63 = getelementptr inbounds [5 x %utf8-4.Accept_Range], [5 x %utf8-4.Accept_Range]* @utf8-4.accept_ranges, i64 0, i32 %62
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([48 x i8], [48 x i8]* @__str$69, i64 0, i32 0), i64 47}, i64 238, i64 23, i64 %61, i64 5)
%64 = load %utf8-4.Accept_Range, %utf8-4.Accept_Range* %63, align 1
store %utf8-4.Accept_Range %64, %utf8-4.Accept_Range* %6
; IfStmt
; b
; IndexExpr
%65 = load {i8*, i64}, {i8*, i64}* %s, align 8
%66 = extractvalue {i8*, i64} %65, 0
%67 = load i64, i64* %2, align 8
%68 = add i64 %67, 1
%69 = extractvalue {i8*, i64} %65, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([48 x i8], [48 x i8]* @__str$6a, i64 0, i32 0), i64 47}, i64 239, i64 13, i64 %68, i64 %69)
%70 = getelementptr inbounds i8, i8* %66, i64 %68
%71 = load i8, i8* %70, align 1
store i8 %71, i8* %7
%72 = load i8, i8* %7, align 1
; SelectorExpr
%73 = getelementptr inbounds %utf8-4.Accept_Range, %utf8-4.Accept_Range* %6, i64 0, i32 0
%74 = load i8, i8* %73, align 1
%75 = icmp ult i8 %72, %74
%76 = zext i1 %75 to i8
%77 = trunc i8 %76 to i1
br i1 %77, label %if.then-10, label %cmp.or-9
cmp.or-9:
; SelectorExpr
%78 = getelementptr inbounds %utf8-4.Accept_Range, %utf8-4.Accept_Range* %6, i64 0, i32 1
%79 = load i8, i8* %78, align 1
%80 = load i8, i8* %7, align 1
%81 = icmp ult i8 %79, %80
%82 = zext i1 %81 to i8
%83 = trunc i8 %82 to i1
br i1 %83, label %if.then-10, label %if.else-11
if.then-10:
; AssignStmt
store i64 1, i64* %5
br label %if.done-25
if.else-11:
; IfStmt
%84 = load i64, i64* %5, align 8
%85 = icmp eq i64 %84, 2
%86 = zext i1 %85 to i8
%87 = trunc i8 %86 to i1
br i1 %87, label %if.then-12, label %if.else-13
if.then-12:
br label %if.done-24
if.else-13:
; IfStmt
; b
; IndexExpr
%88 = load {i8*, i64}, {i8*, i64}* %s, align 8
%89 = extractvalue {i8*, i64} %88, 0
%90 = load i64, i64* %2, align 8
%91 = add i64 %90, 2
%92 = extractvalue {i8*, i64} %88, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([48 x i8], [48 x i8]* @__str$6b, i64 0, i32 0), i64 47}, i64 243, i64 20, i64 %91, i64 %92)
%93 = getelementptr inbounds i8, i8* %89, i64 %91
%94 = load i8, i8* %93, align 1
store i8 %94, i8* %8
%95 = load i8, i8* %8, align 1
%96 = icmp ult i8 %95, 128
%97 = zext i1 %96 to i8
%98 = trunc i8 %97 to i1
br i1 %98, label %if.then-15, label %cmp.or-14
cmp.or-14:
%99 = load i8, i8* %8, align 1
%100 = icmp ult i8 191, %99
%101 = zext i1 %100 to i8
%102 = trunc i8 %101 to i1
br i1 %102, label %if.then-15, label %if.else-16
if.then-15:
; AssignStmt
store i64 1, i64* %5
br label %if.done-23
if.else-16:
; IfStmt
%103 = load i64, i64* %5, align 8
%104 = icmp eq i64 %103, 3
%105 = zext i1 %104 to i8
%106 = trunc i8 %105 to i1
br i1 %106, label %if.then-17, label %if.else-18
if.then-17:
br label %if.done-22
if.else-18:
; IfStmt
; b
; IndexExpr
%107 = load {i8*, i64}, {i8*, i64}* %s, align 8
%108 = extractvalue {i8*, i64} %107, 0
%109 = load i64, i64* %2, align 8
%110 = add i64 %109, 3
%111 = extractvalue {i8*, i64} %107, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([48 x i8], [48 x i8]* @__str$6c, i64 0, i32 0), i64 47}, i64 247, i64 20, i64 %110, i64 %111)
%112 = getelementptr inbounds i8, i8* %108, i64 %110
%113 = load i8, i8* %112, align 1
store i8 %113, i8* %9
%114 = load i8, i8* %9, align 1
%115 = icmp ult i8 %114, 128
%116 = zext i1 %115 to i8
%117 = trunc i8 %116 to i1
br i1 %117, label %if.then-20, label %cmp.or-19
cmp.or-19:
%118 = load i8, i8* %9, align 1
%119 = icmp ult i8 191, %118
%120 = zext i1 %119 to i8
%121 = trunc i8 %120 to i1
br i1 %121, label %if.then-20, label %if.done-21
if.then-20:
; AssignStmt
store i64 1, i64* %5
br label %if.done-21
if.done-21:
br label %if.done-22
if.done-22:
br label %if.done-23
if.done-23:
br label %if.done-24
if.done-24:
br label %if.done-25
if.done-25:
; AssignStmt
%122 = load i64, i64* %5, align 8
%123 = load i64, i64* %2, align 8
%124 = add i64 %123, %122
store i64 %124, i64* %2
; defer
; AssignStmt
%125 = load i64, i64* %0, align 8
%126 = add i64 %125, 1
store i64 %126, i64* %0
br label %for.loop-1
for.done-26:
; ReturnStmt
%127 = load i64, i64* %0, align 8
ret i64 %127
}
define {i64, i64} @os-3.write_string(i64 %fd, %..string %str, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca i64, align 16
%1 = alloca %..string, align 16
%2 = alloca i8*, align 16
%3 = alloca {i8*, i64}, align 16
%4 = alloca {i8*, i64}, align 16
%5 = alloca {i64, i64}, align 16
store i64 %fd, i64* %0
store %..string %str, %..string* %1
; ReturnStmt
%6 = load i64, i64* %0, align 8
%7 = load %..string, %..string* %1, align 8
%8 = extractvalue %..string %7, 0
%9 = bitcast i8** %2 to %..rawptr
%10 = call %..rawptr @__mem_zero(%..rawptr %9, i64 8)
store i8* zeroinitializer, i8** %2
store i8* %8, i8** %2
%11 = extractvalue %..string %7, 1
%12 = sub i64 %11, 0
%13 = load i8*, i8** %2, align 8
%14 = getelementptr inbounds i8, i8* %13, i64 0
%15 = bitcast {i8*, i64}* %3 to %..rawptr
%16 = call %..rawptr @__mem_zero(%..rawptr %15, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %3
%17 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %3, i64 0, i32 0
store i8* %14, i8** %17
%18 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %3, i64 0, i32 1
store i64 %12, i64* %18
%19 = load {i8*, i64}, {i8*, i64}* %3, align 8
%20 = bitcast {i8*, i64}* %4 to %..rawptr
%21 = call %..rawptr @__mem_zero(%..rawptr %20, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %4
store {i8*, i64} %19, {i8*, i64}* %4
%22 = call {i64, i64} @os_windows-6.write(i64 %6, {i8*, i64}* %4, %Context* noalias nonnull %__.context_ptr)
%23 = extractvalue {i64, i64} %22, 0
%24 = extractvalue {i64, i64} %22, 1
%25 = bitcast {i64, i64}* %5 to %..rawptr
%26 = call %..rawptr @__mem_zero(%..rawptr %25, i64 16)
store {i64, i64} zeroinitializer, {i64, i64}* %5
%27 = getelementptr inbounds {i64, i64}, {i64, i64}* %5, i64 0, i32 0
store i64 %23, i64* %27
%28 = getelementptr inbounds {i64, i64}, {i64, i64}* %5, i64 0, i32 1
store i64 %24, i64* %28
%29 = load {i64, i64}, {i64, i64}* %5, align 8
ret {i64, i64} %29
}
define {i64, i64} @os-3.write_byte(i64 %fd, i8 %b, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca i64, align 16
%1 = alloca i8, align 16
%2 = alloca {i8*, i64}, align 16
%3 = alloca {i8*, i64}, align 16
%4 = alloca {i64, i64}, align 16
store i64 %fd, i64* %0
store i8 %b, i8* %1
; ReturnStmt
%5 = load i64, i64* %0, align 8
; CompoundLit
%6 = bitcast {i8*, i64}* %2 to %..rawptr
%7 = call %..rawptr @__mem_zero(%..rawptr %6, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %2
%8 = getelementptr inbounds [1 x i8], [1 x i8]* @__csba$1, i64 0, i32 0
%9 = load i8, i8* %1, align 1
%10 = getelementptr inbounds i8, i8* %8, i64 0
store i8 %9, i8* %10
%11 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %2, i64 0, i32 0
store i8* %8, i8** %11
%12 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %2, i64 0, i32 1
store i64 1, i64* %12
%13 = load {i8*, i64}, {i8*, i64}* %2, align 8
%14 = bitcast {i8*, i64}* %3 to %..rawptr
%15 = call %..rawptr @__mem_zero(%..rawptr %14, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %3
store {i8*, i64} %13, {i8*, i64}* %3
%16 = call {i64, i64} @os_windows-6.write(i64 %5, {i8*, i64}* %3, %Context* noalias nonnull %__.context_ptr)
%17 = extractvalue {i64, i64} %16, 0
%18 = extractvalue {i64, i64} %16, 1
%19 = bitcast {i64, i64}* %4 to %..rawptr
%20 = call %..rawptr @__mem_zero(%..rawptr %19, i64 16)
store {i64, i64} zeroinitializer, {i64, i64}* %4
%21 = getelementptr inbounds {i64, i64}, {i64, i64}* %4, i64 0, i32 0
store i64 %17, i64* %21
%22 = getelementptr inbounds {i64, i64}, {i64, i64}* %4, i64 0, i32 1
store i64 %18, i64* %22
%23 = load {i64, i64}, {i64, i64}* %4, align 8
ret {i64, i64} %23
}
define {{i8*, i64}, i8} @os-3.read_entire_file(%..string %name, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %..string, align 16
%1 = alloca {i8*, i64}, align 16
%2 = alloca i8, align 16
%3 = alloca i64, align 16
%4 = alloca i64, align 16
%5 = alloca {{i8*, i64}, i8}, align 16
%6 = alloca i64, align 16
%7 = alloca {{i8*, i64}, i8}, align 16
%8 = alloca {{i8*, i64}, i8}, align 16
%9 = alloca %Source_Code_Location, align 16
%10 = alloca {i8*, i64}, align 16
%11 = alloca {{i8*, i64}, i8}, align 16
%12 = alloca i64, align 16
%13 = alloca i64, align 16
%14 = alloca {i8*, i64}, align 16
%15 = alloca {i8*, i64}, align 16
%16 = alloca %Source_Code_Location, align 16
%17 = alloca {{i8*, i64}, i8}, align 16
%18 = alloca {i8*, i64}, align 16
%19 = alloca {{i8*, i64}, i8}, align 16
store %..string %name, %..string* %0
%20 = bitcast {i8*, i64}* %1 to %..rawptr
%21 = call %..rawptr @__mem_zero(%..rawptr %20, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %1
%22 = bitcast i8* %2 to %..rawptr
%23 = call %..rawptr @__mem_zero(%..rawptr %22, i64 1)
store i8 zeroinitializer, i8* %2
; fd
; err
%24 = load %..string, %..string* %0, align 8
%25 = call {i64, i64} @os_windows-6.open(%..string %24, i64 0, i32 0, %Context* noalias nonnull %__.context_ptr)
%26 = extractvalue {i64, i64} %25, 0
%27 = extractvalue {i64, i64} %25, 1
store i64 %26, i64* %3
store i64 %27, i64* %4
; IfStmt
%28 = load i64, i64* %4, align 8
%29 = icmp ne i64 %28, 0
%30 = zext i1 %29 to i8
%31 = trunc i8 %30 to i1
br i1 %31, label %if.then-1, label %if.done-2
if.then-1:
; ReturnStmt
%32 = bitcast {{i8*, i64}, i8}* %5 to %..rawptr
%33 = call %..rawptr @__mem_zero(%..rawptr %32, i64 24)
store {{i8*, i64}, i8} zeroinitializer, {{i8*, i64}, i8}* %5
%34 = getelementptr inbounds {{i8*, i64}, i8}, {{i8*, i64}, i8}* %5, i64 0, i32 0
store {i8*, i64} zeroinitializer, {i8*, i64}* %34
%35 = getelementptr inbounds {{i8*, i64}, i8}, {{i8*, i64}, i8}* %5, i64 0, i32 1
store i8 0, i8* %35
%36 = load {{i8*, i64}, i8}, {{i8*, i64}, i8}* %5, align 8
ret {{i8*, i64}, i8} %36
if.done-2:
; DeferStmt
; length
%37 = bitcast i64* %6 to %..rawptr
%38 = call %..rawptr @__mem_zero(%..rawptr %37, i64 8)
store i64 zeroinitializer, i64* %6
; IfStmt
; AssignStmt
%39 = load i64, i64* %3, align 8
%40 = call {i64, i64} @os_windows-6.file_size(i64 %39, %Context* noalias nonnull %__.context_ptr)
%41 = extractvalue {i64, i64} %40, 0
%42 = extractvalue {i64, i64} %40, 1
store i64 %41, i64* %6
store i64 %42, i64* %4
%43 = load i64, i64* %4, align 8
%44 = icmp ne i64 %43, 0
%45 = zext i1 %44 to i8
%46 = trunc i8 %45 to i1
br i1 %46, label %if.then-3, label %if.done-4
if.then-3:
; ReturnStmt
%47 = bitcast {{i8*, i64}, i8}* %7 to %..rawptr
%48 = call %..rawptr @__mem_zero(%..rawptr %47, i64 24)
store {{i8*, i64}, i8} zeroinitializer, {{i8*, i64}, i8}* %7
%49 = getelementptr inbounds {{i8*, i64}, i8}, {{i8*, i64}, i8}* %7, i64 0, i32 0
store {i8*, i64} zeroinitializer, {i8*, i64}* %49
%50 = getelementptr inbounds {{i8*, i64}, i8}, {{i8*, i64}, i8}* %7, i64 0, i32 1
store i8 0, i8* %50
%51 = load {{i8*, i64}, i8}, {{i8*, i64}, i8}* %7, align 8
; defer
%52 = load i64, i64* %3, align 8
call void @os_windows-6.close(i64 %52, %Context* noalias nonnull %__.context_ptr)
ret {{i8*, i64}, i8} %51
if.done-4:
; IfStmt
%53 = load i64, i64* %6, align 8
%54 = icmp sle i64 %53, 0
%55 = zext i1 %54 to i8
%56 = trunc i8 %55 to i1
br i1 %56, label %if.then-5, label %if.done-6
if.then-5:
; ReturnStmt
%57 = bitcast {{i8*, i64}, i8}* %8 to %..rawptr
%58 = call %..rawptr @__mem_zero(%..rawptr %57, i64 24)
store {{i8*, i64}, i8} zeroinitializer, {{i8*, i64}, i8}* %8
%59 = getelementptr inbounds {{i8*, i64}, i8}, {{i8*, i64}, i8}* %8, i64 0, i32 0
store {i8*, i64} zeroinitializer, {i8*, i64}* %59
%60 = getelementptr inbounds {{i8*, i64}, i8}, {{i8*, i64}, i8}* %8, i64 0, i32 1
store i8 1, i8* %60
%61 = load {{i8*, i64}, i8}, {{i8*, i64}, i8}* %8, align 8
; defer
%62 = load i64, i64* %3, align 8
call void @os_windows-6.close(i64 %62, %Context* noalias nonnull %__.context_ptr)
ret {{i8*, i64}, i8} %61
if.done-6:
; AssignStmt
; make
%63 = load i64, i64* %6, align 8
%64 = bitcast i64 %63 to i64
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([46 x i8], [46 x i8]* @__str$6d, i64 0, i32 0), i64 45}, i64 33, i64 22, i64 0, i64 %64, i64 %64)
%65 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([46 x i8], [46 x i8]* @__str$6e, i64 0, i32 0), i64 45}, i64 33, i64 14, %..string {i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__str$6f, i64 0, i32 0), i64 16})
%66 = bitcast %Source_Code_Location* %9 to %..rawptr
%67 = call %..rawptr @__mem_zero(%..rawptr %66, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %9
store %Source_Code_Location %65, %Source_Code_Location* %9
%68 = call %..rawptr @alloc(i64 %64, i64 1, %Source_Code_Location* %9, %Context* noalias nonnull %__.context_ptr)
%69 = bitcast %..rawptr %68 to i8*
%70 = bitcast {i8*, i64}* %10 to %..rawptr
%71 = call %..rawptr @__mem_zero(%..rawptr %70, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %10
%72 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %10, i64 0, i32 0
store i8* %69, i8** %72
%73 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %10, i64 0, i32 1
store i64 %64, i64* %73
%74 = load {i8*, i64}, {i8*, i64}* %10, align 8
store {i8*, i64} %74, {i8*, i64}* %1
; IfStmt
%75 = load {i8*, i64}, {i8*, i64}* %1, align 8
%76 = extractvalue {i8*, i64} %75, 0
%77 = extractvalue {i8*, i64} %75, 1
%78 = bitcast %..rawptr null to i8*
%79 = icmp eq i8* %76, %78
%80 = icmp eq i64 %77, 0
%81 = zext i1 %79 to i8
%82 = zext i1 %80 to i8
%83 = or i8 %81, %82
%84 = trunc i8 %83 to i1
br i1 %84, label %if.then-7, label %if.done-8
if.then-7:
; ReturnStmt
%85 = bitcast {{i8*, i64}, i8}* %11 to %..rawptr
%86 = call %..rawptr @__mem_zero(%..rawptr %85, i64 24)
store {{i8*, i64}, i8} zeroinitializer, {{i8*, i64}, i8}* %11
%87 = getelementptr inbounds {{i8*, i64}, i8}, {{i8*, i64}, i8}* %11, i64 0, i32 0
store {i8*, i64} zeroinitializer, {i8*, i64}* %87
%88 = getelementptr inbounds {{i8*, i64}, i8}, {{i8*, i64}, i8}* %11, i64 0, i32 1
store i8 0, i8* %88
%89 = load {{i8*, i64}, i8}, {{i8*, i64}, i8}* %11, align 8
; defer
%90 = load i64, i64* %3, align 8
call void @os_windows-6.close(i64 %90, %Context* noalias nonnull %__.context_ptr)
ret {{i8*, i64}, i8} %89
if.done-8:
; bytes_read
; read_err
%91 = load i64, i64* %3, align 8
%92 = load {i8*, i64}, {i8*, i64}* %1, align 8
%93 = bitcast {i8*, i64}* %14 to %..rawptr
%94 = call %..rawptr @__mem_zero(%..rawptr %93, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %14
store {i8*, i64} %92, {i8*, i64}* %14
%95 = call {i64, i64} @os_windows-6.read(i64 %91, {i8*, i64}* %14, %Context* noalias nonnull %__.context_ptr)
%96 = extractvalue {i64, i64} %95, 0
%97 = extractvalue {i64, i64} %95, 1
store i64 %96, i64* %12
store i64 %97, i64* %13
; IfStmt
%98 = load i64, i64* %13, align 8
%99 = icmp ne i64 %98, 0
%100 = zext i1 %99 to i8
%101 = trunc i8 %100 to i1
br i1 %101, label %if.then-9, label %if.done-10
if.then-9:
%102 = load {i8*, i64}, {i8*, i64}* %1, align 8
%103 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([46 x i8], [46 x i8]* @__str$70, i64 0, i32 0), i64 45}, i64 40, i64 3, %..string {i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__str$71, i64 0, i32 0), i64 16})
%104 = bitcast {i8*, i64}* %15 to %..rawptr
%105 = call %..rawptr @__mem_zero(%..rawptr %104, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %15
store {i8*, i64} %102, {i8*, i64}* %15
%106 = bitcast %Source_Code_Location* %16 to %..rawptr
%107 = call %..rawptr @__mem_zero(%..rawptr %106, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %16
store %Source_Code_Location %103, %Source_Code_Location* %16
call void @_preload-0.free_slice-19009({i8*, i64}* %15, %Source_Code_Location* %16, %Context* noalias nonnull %__.context_ptr)
; ReturnStmt
%108 = bitcast {{i8*, i64}, i8}* %17 to %..rawptr
%109 = call %..rawptr @__mem_zero(%..rawptr %108, i64 24)
store {{i8*, i64}, i8} zeroinitializer, {{i8*, i64}, i8}* %17
%110 = getelementptr inbounds {{i8*, i64}, i8}, {{i8*, i64}, i8}* %17, i64 0, i32 0
store {i8*, i64} zeroinitializer, {i8*, i64}* %110
%111 = getelementptr inbounds {{i8*, i64}, i8}, {{i8*, i64}, i8}* %17, i64 0, i32 1
store i8 0, i8* %111
%112 = load {{i8*, i64}, i8}, {{i8*, i64}, i8}* %17, align 8
; defer
%113 = load i64, i64* %3, align 8
call void @os_windows-6.close(i64 %113, %Context* noalias nonnull %__.context_ptr)
ret {{i8*, i64}, i8} %112
if.done-10:
; ReturnStmt
; SliceExpr
%114 = load i64, i64* %12, align 8
%115 = load {i8*, i64}, {i8*, i64}* %1, align 8
%116 = extractvalue {i8*, i64} %115, 1
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([46 x i8], [46 x i8]* @__str$72, i64 0, i32 0), i64 45}, i64 43, i64 13, i64 0, i64 %114, i64 %116)
%117 = extractvalue {i8*, i64} %115, 0
%118 = getelementptr inbounds i8, i8* %117, i64 0
%119 = sub i64 %114, 0
%120 = bitcast {i8*, i64}* %18 to %..rawptr
%121 = call %..rawptr @__mem_zero(%..rawptr %120, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %18
%122 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %18, i64 0, i32 0
store i8* %118, i8** %122
%123 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %18, i64 0, i32 1
store i64 %119, i64* %123
%124 = load {i8*, i64}, {i8*, i64}* %18, align 8
%125 = bitcast {{i8*, i64}, i8}* %19 to %..rawptr
%126 = call %..rawptr @__mem_zero(%..rawptr %125, i64 24)
store {{i8*, i64}, i8} zeroinitializer, {{i8*, i64}, i8}* %19
%127 = getelementptr inbounds {{i8*, i64}, i8}, {{i8*, i64}, i8}* %19, i64 0, i32 0
store {i8*, i64} %124, {i8*, i64}* %127
%128 = getelementptr inbounds {{i8*, i64}, i8}, {{i8*, i64}, i8}* %19, i64 0, i32 1
store i8 1, i8* %128
%129 = load {{i8*, i64}, i8}, {{i8*, i64}, i8}* %19, align 8
; defer
%130 = load i64, i64* %3, align 8
call void @os_windows-6.close(i64 %130, %Context* noalias nonnull %__.context_ptr)
ret {{i8*, i64}, i8} %129
}
define i8 @os-3.write_entire_file(%..string %name, {i8*, i64}* %data, i1 %truncate, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %..string, align 16
%1 = alloca i8, align 16
%2 = alloca i8, align 16
%3 = alloca i64, align 16
%4 = alloca i64, align 16
%5 = alloca i64, align 16
%6 = alloca i64, align 16
%7 = alloca {i8*, i64}, align 16
store %..string %name, %..string* %0
%8 = load {i8*, i64}, {i8*, i64}* %data, align 8
%9 = zext i1 %truncate to i8
store i8 %9, i8* %1
%10 = bitcast i8* %2 to %..rawptr
%11 = call %..rawptr @__mem_zero(%..rawptr %10, i64 1)
store i8 zeroinitializer, i8* %2
; flags
store i64 65, i64* %3
; IfStmt
%12 = load i8, i8* %1, align 1
%13 = trunc i8 %12 to i1
br i1 %13, label %if.then-1, label %if.done-2
if.then-1:
; AssignStmt
%14 = load i64, i64* %3, align 8
%15 = or i64 %14, 512
store i64 %15, i64* %3
br label %if.done-2
if.done-2:
; fd
; err
%16 = load %..string, %..string* %0, align 8
%17 = load i64, i64* %3, align 8
%18 = call {i64, i64} @os_windows-6.open(%..string %16, i64 %17, i32 0, %Context* noalias nonnull %__.context_ptr)
%19 = extractvalue {i64, i64} %18, 0
%20 = extractvalue {i64, i64} %18, 1
store i64 %19, i64* %4
store i64 %20, i64* %5
; IfStmt
%21 = load i64, i64* %5, align 8
%22 = icmp ne i64 %21, 0
%23 = zext i1 %22 to i8
%24 = trunc i8 %23 to i1
br i1 %24, label %if.then-3, label %if.done-4
if.then-3:
; ReturnStmt
ret i8 0
if.done-4:
; DeferStmt
; write_err
%25 = load i64, i64* %4, align 8
%26 = load {i8*, i64}, {i8*, i64}* %data, align 8
%27 = bitcast {i8*, i64}* %7 to %..rawptr
%28 = call %..rawptr @__mem_zero(%..rawptr %27, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %7
store {i8*, i64} %26, {i8*, i64}* %7
%29 = call {i64, i64} @os_windows-6.write(i64 %25, {i8*, i64}* %7, %Context* noalias nonnull %__.context_ptr)
%30 = extractvalue {i64, i64} %29, 0
%31 = extractvalue {i64, i64} %29, 1
store i64 %31, i64* %6
; ReturnStmt
%32 = load i64, i64* %6, align 8
%33 = icmp eq i64 %32, 0
%34 = zext i1 %33 to i8
; defer
%35 = load i64, i64* %4, align 8
call void @os_windows-6.close(i64 %35, %Context* noalias nonnull %__.context_ptr)
ret i8 %34
}
define void @main-0.set_proc(%..rawptr %lib_, %..rawptr %p, %..string %name, %Context* noalias nonnull %__.context_ptr) alwaysinline #1 {
decls-0:
%0 = alloca %..rawptr, align 16
%1 = alloca %..rawptr, align 16
%2 = alloca %..string, align 16
%3 = alloca %..rawptr, align 16
%4 = alloca void ()*, align 16
%5 = alloca %..string, align 16
%6 = alloca %..any, align 16
%7 = alloca %..any, align 16
%8 = alloca {%..any*, i64}, align 16
%9 = alloca [2 x %..any], align 16
%10 = alloca {%..any*, i64}, align 16
%11 = alloca %Source_Code_Location, align 16
store %..rawptr %lib_, %..rawptr* %0
store %..rawptr %p, %..rawptr* %1
store %..string %name, %..string* %2
; lib
%12 = load %..rawptr, %..rawptr* %0, align 8
%13 = bitcast %..rawptr %12 to %..rawptr
%14 = bitcast %..rawptr %13 to %..rawptr
store %..rawptr %14, %..rawptr* %3
; res
; SelectorExpr
%15 = load %..string, %..string* %2, align 8
%16 = call ccc void ()* @opengl-48.get_proc_address(%..string %15)
store void ()* %16, void ()** %4
; IfStmt
%17 = load void ()*, void ()** %4, align 8
%18 = icmp eq void ()* %17, zeroinitializer
%19 = zext i1 %18 to i8
%20 = trunc i8 %19 to i1
br i1 %20, label %if.then-1, label %if.done-2
if.then-1:
; AssignStmt
; SelectorExpr
%21 = load %..rawptr, %..rawptr* %3, align 8
%22 = load %..string, %..string* %2, align 8
%23 = call ccc void ()* @misc-49.get_proc_address(%..rawptr %21, %..string %22)
store void ()* %23, void ()** %4
br label %if.done-2
if.done-2:
; IfStmt
%24 = load void ()*, void ()** %4, align 8
%25 = icmp eq void ()* %24, zeroinitializer
%26 = zext i1 %25 to i8
%27 = trunc i8 %26 to i1
br i1 %27, label %if.then-3, label %if.done-4
if.then-3:
; SelectorExpr
%28 = load %..string, %..string* %2, align 8
%29 = bitcast %..string* %5 to %..rawptr
%30 = call %..rawptr @__mem_zero(%..rawptr %29, i64 16)
store %..string zeroinitializer, %..string* %5
store %..string {i8* getelementptr inbounds ([15 x i8], [15 x i8]* @__str$73, i64 0, i32 0), i64 14}, %..string* %5
%31 = load %..string, %..string* %5, align 8
%32 = bitcast %..any* %6 to %..rawptr
%33 = call %..rawptr @__mem_zero(%..rawptr %32, i64 16)
store %..any zeroinitializer, %..any* %6
%34 = bitcast %..string* %5 to %..rawptr
%35 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18
%36 = getelementptr inbounds %..any, %..any* %6, i64 0, i32 0
store %..rawptr %34, %..rawptr* %36
%37 = getelementptr inbounds %..any, %..any* %6, i64 0, i32 1
store %Type_Info* %35, %Type_Info** %37
%38 = load %..any, %..any* %6, align 8
%39 = bitcast %..any* %7 to %..rawptr
%40 = call %..rawptr @__mem_zero(%..rawptr %39, i64 16)
store %..any zeroinitializer, %..any* %7
%41 = bitcast %..string* %2 to %..rawptr
%42 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18
%43 = getelementptr inbounds %..any, %..any* %7, i64 0, i32 0
store %..rawptr %41, %..rawptr* %43
%44 = getelementptr inbounds %..any, %..any* %7, i64 0, i32 1
store %Type_Info* %42, %Type_Info** %44
%45 = load %..any, %..any* %7, align 8
; variadic call argument generation
%46 = bitcast {%..any*, i64}* %8 to %..rawptr
%47 = call %..rawptr @__mem_zero(%..rawptr %46, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %8
%48 = bitcast [2 x %..any]* %9 to %..rawptr
%49 = call %..rawptr @__mem_zero(%..rawptr %48, i64 32)
store [2 x %..any] zeroinitializer, [2 x %..any]* %9
%50 = getelementptr inbounds [2 x %..any], [2 x %..any]* %9, i64 0, i32 0
store %..any %38, %..any* %50
%51 = getelementptr inbounds [2 x %..any], [2 x %..any]* %9, i64 0, i32 1
store %..any %45, %..any* %51
%52 = getelementptr inbounds [2 x %..any], [2 x %..any]* %9, i64 0, i32 0
%53 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %8, i64 0, i32 0
store %..any* %52, %..any** %53
%54 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %8, i64 0, i32 1
store i64 2, i64* %54
%55 = load {%..any*, i64}, {%..any*, i64}* %8, align 8
%56 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$74, i64 0, i32 0), i64 50}, i64 58, i64 17, %..string {i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__str$75, i64 0, i32 0), i64 8})
%57 = bitcast {%..any*, i64}* %10 to %..rawptr
%58 = call %..rawptr @__mem_zero(%..rawptr %57, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %10
store {%..any*, i64} %55, {%..any*, i64}* %10
%59 = bitcast %Source_Code_Location* %11 to %..rawptr
%60 = call %..rawptr @__mem_zero(%..rawptr %59, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %11
store %Source_Code_Location %56, %Source_Code_Location* %11
call void @imgui_console-28.log({%..any*, i64}* %10, %Source_Code_Location* %11, %Context* noalias nonnull %__.context_ptr)
br label %if.done-4
if.done-4:
; AssignStmt
%61 = load %..rawptr, %..rawptr* %1, align 8
%62 = bitcast %..rawptr %61 to %..rawptr*
%63 = getelementptr inbounds %..rawptr, %..rawptr* %62, i64 0
%64 = load void ()*, void ()** %4, align 8
%65 = bitcast void ()* %64 to %..rawptr
store %..rawptr %65, %..rawptr* %63
ret void
}
define %..rawptr @main-0.load_lib(%..string %str, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %..string, align 16
store %..string %str, %..string* %0
; ReturnStmt
; SelectorExpr
%1 = load %..string, %..string* %0, align 8
%2 = call %..rawptr @misc-49.load_library(%..string %1, %Context* noalias nonnull %__.context_ptr)
%3 = bitcast %..rawptr %2 to %..rawptr
ret %..rawptr %3
}
define void @main-0.free_lib(%..rawptr %lib, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %..rawptr, align 16
store %..rawptr %lib, %..rawptr* %0
; SelectorExpr
%1 = load %..rawptr, %..rawptr* %0, align 8
%2 = bitcast %..rawptr %1 to %..rawptr
%3 = bitcast %..rawptr %2 to %..rawptr
call void @misc-49.free_library(%..rawptr %3, %Context* noalias nonnull %__.context_ptr)
ret void
}
define void @main-0.set_user({%..string*, i64}* %args, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %Source_Code_Location, align 16
%1 = alloca %Source_Code_Location, align 16
%2 = alloca %..string, align 16
%3 = alloca %..any, align 16
%4 = alloca {%..any*, i64}, align 16
%5 = alloca [1 x %..any], align 16
%6 = alloca {%..any*, i64}, align 16
%7 = alloca %Source_Code_Location, align 16
%8 = load {%..string*, i64}, {%..string*, i64}* %args, align 8
; IfStmt
%9 = load {%..string*, i64}, {%..string*, i64}* %args, align 8
%10 = extractvalue {%..string*, i64} %9, 1
%11 = icmp eq i64 %10, 2
%12 = zext i1 %11 to i8
%13 = trunc i8 %12 to i1
br i1 %13, label %if.then-1, label %if.else-2
if.then-1:
; SelectorExpr
; SelectorExpr
%14 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 0
%15 = load %..string, %..string* %14, align 8
%16 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$76, i64 0, i32 0), i64 50}, i64 74, i64 9, %..string {i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__str$77, i64 0, i32 0), i64 8})
%17 = bitcast %Source_Code_Location* %0 to %..rawptr
%18 = call %..rawptr @__mem_zero(%..rawptr %17, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %0
store %Source_Code_Location %16, %Source_Code_Location* %0
call void @free_string(%..string %15, %Source_Code_Location* %0, %Context* noalias nonnull %__.context_ptr)
; SelectorExpr
; SelectorExpr
%19 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 1
%20 = load %..string, %..string* %19, align 8
%21 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$78, i64 0, i32 0), i64 50}, i64 75, i64 9, %..string {i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__str$79, i64 0, i32 0), i64 8})
%22 = bitcast %Source_Code_Location* %1 to %..rawptr
%23 = call %..rawptr @__mem_zero(%..rawptr %22, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %1
store %Source_Code_Location %21, %Source_Code_Location* %1
call void @free_string(%..string %20, %Source_Code_Location* %1, %Context* noalias nonnull %__.context_ptr)
; AssignStmt
; SelectorExpr
; SelectorExpr
%24 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 0
; SelectorExpr
; IndexExpr
%25 = load {%..string*, i64}, {%..string*, i64}* %args, align 8
%26 = extractvalue {%..string*, i64} %25, 0
%27 = extractvalue {%..string*, i64} %25, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$7a, i64 0, i32 0), i64 50}, i64 77, i64 62, i64 0, i64 %27)
%28 = getelementptr inbounds %..string, %..string* %26, i64 0
%29 = load %..string, %..string* %28, align 8
%30 = call %..string @strings-12.new_string(%..string %29, %Context* noalias nonnull %__.context_ptr)
store %..string %30, %..string* %24
; AssignStmt
; SelectorExpr
; SelectorExpr
%31 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 1
; SelectorExpr
; IndexExpr
%32 = load {%..string*, i64}, {%..string*, i64}* %args, align 8
%33 = extractvalue {%..string*, i64} %32, 0
%34 = extractvalue {%..string*, i64} %32, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$7b, i64 0, i32 0), i64 50}, i64 78, i64 62, i64 1, i64 %34)
%35 = getelementptr inbounds %..string, %..string* %33, i64 1
%36 = load %..string, %..string* %35, align 8
%37 = call %..string @strings-12.new_string(%..string %36, %Context* noalias nonnull %__.context_ptr)
store %..string %37, %..string* %31
; SelectorExpr
call void @settings-36.save(%Context* noalias nonnull %__.context_ptr)
br label %if.done-3
if.else-2:
; SelectorExpr
%38 = bitcast %..string* %2 to %..rawptr
%39 = call %..rawptr @__mem_zero(%..rawptr %38, i64 16)
store %..string zeroinitializer, %..string* %2
store %..string {i8* getelementptr inbounds ([43 x i8], [43 x i8]* @__str$7c, i64 0, i32 0), i64 42}, %..string* %2
%40 = load %..string, %..string* %2, align 8
%41 = bitcast %..any* %3 to %..rawptr
%42 = call %..rawptr @__mem_zero(%..rawptr %41, i64 16)
store %..any zeroinitializer, %..any* %3
%43 = bitcast %..string* %2 to %..rawptr
%44 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18
%45 = getelementptr inbounds %..any, %..any* %3, i64 0, i32 0
store %..rawptr %43, %..rawptr* %45
%46 = getelementptr inbounds %..any, %..any* %3, i64 0, i32 1
store %Type_Info* %44, %Type_Info** %46
%47 = load %..any, %..any* %3, align 8
; variadic call argument generation
%48 = bitcast {%..any*, i64}* %4 to %..rawptr
%49 = call %..rawptr @__mem_zero(%..rawptr %48, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %4
%50 = bitcast [1 x %..any]* %5 to %..rawptr
%51 = call %..rawptr @__mem_zero(%..rawptr %50, i64 16)
store [1 x %..any] zeroinitializer, [1 x %..any]* %5
%52 = getelementptr inbounds [1 x %..any], [1 x %..any]* %5, i64 0, i32 0
store %..any %47, %..any* %52
%53 = getelementptr inbounds [1 x %..any], [1 x %..any]* %5, i64 0, i32 0
%54 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %4, i64 0, i32 0
store %..any* %53, %..any** %54
%55 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %4, i64 0, i32 1
store i64 1, i64* %55
%56 = load {%..any*, i64}, {%..any*, i64}* %4, align 8
%57 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$7d, i64 0, i32 0), i64 50}, i64 82, i64 17, %..string {i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__str$7e, i64 0, i32 0), i64 8})
%58 = bitcast {%..any*, i64}* %6 to %..rawptr
%59 = call %..rawptr @__mem_zero(%..rawptr %58, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %6
store {%..any*, i64} %56, {%..any*, i64}* %6
%60 = bitcast %Source_Code_Location* %7 to %..rawptr
%61 = call %..rawptr @__mem_zero(%..rawptr %60, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %7
store %Source_Code_Location %57, %Source_Code_Location* %7
call void @imgui_console-28.log_error({%..any*, i64}* %6, %Source_Code_Location* %7, %Context* noalias nonnull %__.context_ptr)
br label %if.done-3
if.done-3:
ret void
}
define void @main-0.set_signature({%..string*, i64}* %args, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %Source_Code_Location, align 16
%1 = alloca %Source_Code_Location, align 16
%2 = alloca %Source_Code_Location, align 16
%3 = alloca %Source_Code_Location, align 16
%4 = alloca %..any, align 16
%5 = alloca %..any, align 16
%6 = alloca {%..any*, i64}, align 16
%7 = alloca [2 x %..any], align 16
%8 = alloca {%..any*, i64}, align 16
%9 = alloca %..string, align 16
%10 = alloca %..any, align 16
%11 = alloca {%..any*, i64}, align 16
%12 = alloca [1 x %..any], align 16
%13 = alloca {%..any*, i64}, align 16
%14 = alloca %Source_Code_Location, align 16
%15 = load {%..string*, i64}, {%..string*, i64}* %args, align 8
; IfStmt
%16 = load {%..string*, i64}, {%..string*, i64}* %args, align 8
%17 = extractvalue {%..string*, i64} %16, 1
%18 = icmp eq i64 %17, 2
%19 = zext i1 %18 to i8
%20 = trunc i8 %19 to i1
br i1 %20, label %if.then-1, label %if.else-2
if.then-1:
; SelectorExpr
; SelectorExpr
%21 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 2
%22 = load %..string, %..string* %21, align 8
%23 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$7f, i64 0, i32 0), i64 50}, i64 88, i64 9, %..string {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$80, i64 0, i32 0), i64 13})
%24 = bitcast %Source_Code_Location* %0 to %..rawptr
%25 = call %..rawptr @__mem_zero(%..rawptr %24, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %0
store %Source_Code_Location %23, %Source_Code_Location* %0
call void @free_string(%..string %22, %Source_Code_Location* %0, %Context* noalias nonnull %__.context_ptr)
; SelectorExpr
; SelectorExpr
%26 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 3
%27 = load %..string, %..string* %26, align 8
%28 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$81, i64 0, i32 0), i64 50}, i64 89, i64 9, %..string {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$82, i64 0, i32 0), i64 13})
%29 = bitcast %Source_Code_Location* %1 to %..rawptr
%30 = call %..rawptr @__mem_zero(%..rawptr %29, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %1
store %Source_Code_Location %28, %Source_Code_Location* %1
call void @free_string(%..string %27, %Source_Code_Location* %1, %Context* noalias nonnull %__.context_ptr)
; AssignStmt
; SelectorExpr
; SelectorExpr
%31 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 2
; SelectorExpr
; IndexExpr
%32 = load {%..string*, i64}, {%..string*, i64}* %args, align 8
%33 = extractvalue {%..string*, i64} %32, 0
%34 = extractvalue {%..string*, i64} %32, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$83, i64 0, i32 0), i64 50}, i64 91, i64 59, i64 0, i64 %34)
%35 = getelementptr inbounds %..string, %..string* %33, i64 0
%36 = load %..string, %..string* %35, align 8
%37 = call %..string @strings-12.new_string(%..string %36, %Context* noalias nonnull %__.context_ptr)
store %..string %37, %..string* %31
; AssignStmt
; SelectorExpr
; SelectorExpr
%38 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 3
; SelectorExpr
; IndexExpr
%39 = load {%..string*, i64}, {%..string*, i64}* %args, align 8
%40 = extractvalue {%..string*, i64} %39, 0
%41 = extractvalue {%..string*, i64} %39, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$84, i64 0, i32 0), i64 50}, i64 92, i64 59, i64 1, i64 %41)
%42 = getelementptr inbounds %..string, %..string* %40, i64 1
%43 = load %..string, %..string* %42, align 8
%44 = call %..string @strings-12.new_string(%..string %43, %Context* noalias nonnull %__.context_ptr)
store %..string %44, %..string* %38
; SelectorExpr
call void @settings-36.save(%Context* noalias nonnull %__.context_ptr)
br label %if.done-6
if.else-2:
; IfStmt
%45 = load {%..string*, i64}, {%..string*, i64}* %args, align 8
%46 = extractvalue {%..string*, i64} %45, 1
%47 = icmp eq i64 %46, 3
%48 = zext i1 %47 to i8
%49 = trunc i8 %48 to i1
br i1 %49, label %if.then-3, label %if.else-4
if.then-3:
; SelectorExpr
; SelectorExpr
%50 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 2
%51 = load %..string, %..string* %50, align 8
%52 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$85, i64 0, i32 0), i64 50}, i64 96, i64 9, %..string {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$86, i64 0, i32 0), i64 13})
%53 = bitcast %Source_Code_Location* %2 to %..rawptr
%54 = call %..rawptr @__mem_zero(%..rawptr %53, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %2
store %Source_Code_Location %52, %Source_Code_Location* %2
call void @free_string(%..string %51, %Source_Code_Location* %2, %Context* noalias nonnull %__.context_ptr)
; SelectorExpr
; SelectorExpr
%55 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 3
%56 = load %..string, %..string* %55, align 8
%57 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$87, i64 0, i32 0), i64 50}, i64 97, i64 9, %..string {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$88, i64 0, i32 0), i64 13})
%58 = bitcast %Source_Code_Location* %3 to %..rawptr
%59 = call %..rawptr @__mem_zero(%..rawptr %58, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %3
store %Source_Code_Location %57, %Source_Code_Location* %3
call void @free_string(%..string %56, %Source_Code_Location* %3, %Context* noalias nonnull %__.context_ptr)
; AssignStmt
; SelectorExpr
; SelectorExpr
%60 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 2
; SelectorExpr
; IndexExpr
%61 = load {%..string*, i64}, {%..string*, i64}* %args, align 8
%62 = extractvalue {%..string*, i64} %61, 0
%63 = extractvalue {%..string*, i64} %61, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$89, i64 0, i32 0), i64 50}, i64 99, i64 61, i64 0, i64 %63)
%64 = getelementptr inbounds %..string, %..string* %62, i64 0
%65 = load %..string, %..string* %64, align 8
; IndexExpr
%66 = load {%..string*, i64}, {%..string*, i64}* %args, align 8
%67 = extractvalue {%..string*, i64} %66, 0
%68 = extractvalue {%..string*, i64} %66, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$8a, i64 0, i32 0), i64 50}, i64 99, i64 70, i64 1, i64 %68)
%69 = getelementptr inbounds %..string, %..string* %67, i64 1
%70 = load %..string, %..string* %69, align 8
%71 = bitcast %..any* %4 to %..rawptr
%72 = call %..rawptr @__mem_zero(%..rawptr %71, i64 16)
store %..any zeroinitializer, %..any* %4
%73 = bitcast %..string* %64 to %..rawptr
%74 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18
%75 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 0
store %..rawptr %73, %..rawptr* %75
%76 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 1
store %Type_Info* %74, %Type_Info** %76
%77 = load %..any, %..any* %4, align 8
%78 = bitcast %..any* %5 to %..rawptr
%79 = call %..rawptr @__mem_zero(%..rawptr %78, i64 16)
store %..any zeroinitializer, %..any* %5
%80 = bitcast %..string* %69 to %..rawptr
%81 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18
%82 = getelementptr inbounds %..any, %..any* %5, i64 0, i32 0
store %..rawptr %80, %..rawptr* %82
%83 = getelementptr inbounds %..any, %..any* %5, i64 0, i32 1
store %Type_Info* %81, %Type_Info** %83
%84 = load %..any, %..any* %5, align 8
; variadic call argument generation
%85 = bitcast {%..any*, i64}* %6 to %..rawptr
%86 = call %..rawptr @__mem_zero(%..rawptr %85, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %6
%87 = bitcast [2 x %..any]* %7 to %..rawptr
%88 = call %..rawptr @__mem_zero(%..rawptr %87, i64 32)
store [2 x %..any] zeroinitializer, [2 x %..any]* %7
%89 = getelementptr inbounds [2 x %..any], [2 x %..any]* %7, i64 0, i32 0
store %..any %77, %..any* %89
%90 = getelementptr inbounds [2 x %..any], [2 x %..any]* %7, i64 0, i32 1
store %..any %84, %..any* %90
%91 = getelementptr inbounds [2 x %..any], [2 x %..any]* %7, i64 0, i32 0
%92 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %6, i64 0, i32 0
store %..any* %91, %..any** %92
%93 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %6, i64 0, i32 1
store i64 2, i64* %93
%94 = load {%..any*, i64}, {%..any*, i64}* %6, align 8
%95 = bitcast {%..any*, i64}* %8 to %..rawptr
%96 = call %..rawptr @__mem_zero(%..rawptr %95, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %8
store {%..any*, i64} %94, {%..any*, i64}* %8
%97 = call %..string @fmt-11.aprintf(%..string {i8* getelementptr inbounds ([6 x i8], [6 x i8]* @__str$8b, i64 0, i32 0), i64 5}, {%..any*, i64}* %8, %Context* noalias nonnull %__.context_ptr)
store %..string %97, %..string* %60
; AssignStmt
; SelectorExpr
; SelectorExpr
%98 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 3
; SelectorExpr
; IndexExpr
%99 = load {%..string*, i64}, {%..string*, i64}* %args, align 8
%100 = extractvalue {%..string*, i64} %99, 0
%101 = extractvalue {%..string*, i64} %99, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$8c, i64 0, i32 0), i64 50}, i64 100, i64 59, i64 2, i64 %101)
%102 = getelementptr inbounds %..string, %..string* %100, i64 2
%103 = load %..string, %..string* %102, align 8
%104 = call %..string @strings-12.new_string(%..string %103, %Context* noalias nonnull %__.context_ptr)
store %..string %104, %..string* %98
; SelectorExpr
call void @settings-36.save(%Context* noalias nonnull %__.context_ptr)
br label %if.done-5
if.else-4:
; SelectorExpr
%105 = bitcast %..string* %9 to %..rawptr
%106 = call %..rawptr @__mem_zero(%..rawptr %105, i64 16)
store %..string zeroinitializer, %..string* %9
store %..string {i8* getelementptr inbounds ([76 x i8], [76 x i8]* @__str$8d, i64 0, i32 0), i64 75}, %..string* %9
%107 = load %..string, %..string* %9, align 8
%108 = bitcast %..any* %10 to %..rawptr
%109 = call %..rawptr @__mem_zero(%..rawptr %108, i64 16)
store %..any zeroinitializer, %..any* %10
%110 = bitcast %..string* %9 to %..rawptr
%111 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18
%112 = getelementptr inbounds %..any, %..any* %10, i64 0, i32 0
store %..rawptr %110, %..rawptr* %112
%113 = getelementptr inbounds %..any, %..any* %10, i64 0, i32 1
store %Type_Info* %111, %Type_Info** %113
%114 = load %..any, %..any* %10, align 8
; variadic call argument generation
%115 = bitcast {%..any*, i64}* %11 to %..rawptr
%116 = call %..rawptr @__mem_zero(%..rawptr %115, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %11
%117 = bitcast [1 x %..any]* %12 to %..rawptr
%118 = call %..rawptr @__mem_zero(%..rawptr %117, i64 16)
store [1 x %..any] zeroinitializer, [1 x %..any]* %12
%119 = getelementptr inbounds [1 x %..any], [1 x %..any]* %12, i64 0, i32 0
store %..any %114, %..any* %119
%120 = getelementptr inbounds [1 x %..any], [1 x %..any]* %12, i64 0, i32 0
%121 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %11, i64 0, i32 0
store %..any* %120, %..any** %121
%122 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %11, i64 0, i32 1
store i64 1, i64* %122
%123 = load {%..any*, i64}, {%..any*, i64}* %11, align 8
%124 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$8e, i64 0, i32 0), i64 50}, i64 104, i64 17, %..string {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$8f, i64 0, i32 0), i64 13})
%125 = bitcast {%..any*, i64}* %13 to %..rawptr
%126 = call %..rawptr @__mem_zero(%..rawptr %125, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %13
store {%..any*, i64} %123, {%..any*, i64}* %13
%127 = bitcast %Source_Code_Location* %14 to %..rawptr
%128 = call %..rawptr @__mem_zero(%..rawptr %127, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %14
store %Source_Code_Location %124, %Source_Code_Location* %14
call void @imgui_console-28.log_error({%..any*, i64}* %13, %Source_Code_Location* %14, %Context* noalias nonnull %__.context_ptr)
br label %if.done-5
if.done-5:
br label %if.done-6
if.done-6:
ret void
}
define cc 64 i32 @main-0.credentials_callback(%libgit2_types-55.Cred** %cred, i8* %url, i8* %username_from_url, i32 %allowed_types, %..rawptr %payload) #0 {
decls-0:
%0 = alloca %libgit2_types-55.Cred**, align 16
%1 = alloca i8*, align 16
%2 = alloca i8*, align 16
%3 = alloca i32, align 16
%4 = alloca %..rawptr, align 16
%5 = alloca %Context, align 16
%6 = bitcast %Context* %5 to %..rawptr
%7 = call %..rawptr @__mem_zero(%..rawptr %6, i64 72)
store %Context zeroinitializer, %Context* %5
%8 = load %Context, %Context* @__ggv$0, align 8
store %Context %8, %Context* %5
%9 = getelementptr inbounds %Context, %Context* %5, i64 0, i32 0
%10 = call %Allocator @default_allocator(%Context* noalias nonnull %5)
store %Allocator %10, %Allocator* %9
%11 = alloca %libgit2_types-55.Cred*, align 16
%12 = alloca i32, align 16
%13 = alloca %libgit2_types-55.Cred*, align 16
%14 = alloca i32, align 16
store %libgit2_types-55.Cred** %cred, %libgit2_types-55.Cred*** %0
store i8* %url, i8** %1
store i8* %username_from_url, i8** %2
store i32 %allowed_types, i32* %3
store %..rawptr %payload, %..rawptr* %4
; IfStmt
%15 = load i32, i32* %3, align 4
%16 = call i8 @main-0.credentials_callback.test_val-0(i32 1, i32 %15, %Context* noalias nonnull %5)
%17 = trunc i8 %16 to i1
br i1 %17, label %if.then-1, label %if.else-4
if.then-1:
; new_cred
; err
; SelectorExpr
; SelectorExpr
; SelectorExpr
%18 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 0
%19 = load %..string, %..string* %18, align 8
; SelectorExpr
; SelectorExpr
%20 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 1
%21 = load %..string, %..string* %20, align 8
%22 = call {%libgit2_types-55.Cred*, i32} @libgit2-29.cred_userpass_plaintext_new(%..string %19, %..string %21, %Context* noalias nonnull %5)
%23 = extractvalue {%libgit2_types-55.Cred*, i32} %22, 0
%24 = extractvalue {%libgit2_types-55.Cred*, i32} %22, 1
store %libgit2_types-55.Cred* %23, %libgit2_types-55.Cred** %11
store i32 %24, i32* %12
; IfStmt
%25 = load i32, i32* %12, align 4
%26 = icmp ne i32 %25, 0
%27 = zext i1 %26 to i8
%28 = trunc i8 %27 to i1
br i1 %28, label %if.then-2, label %if.done-3
if.then-2:
; ReturnStmt
ret i32 1
if.done-3:
; AssignStmt
%29 = load %libgit2_types-55.Cred**, %libgit2_types-55.Cred*** %0, align 8
%30 = getelementptr inbounds %libgit2_types-55.Cred*, %libgit2_types-55.Cred** %29, i64 0
%31 = load %libgit2_types-55.Cred*, %libgit2_types-55.Cred** %11, align 8
store %libgit2_types-55.Cred* %31, %libgit2_types-55.Cred** %30
br label %if.done-11
if.else-4:
; IfStmt
%32 = load i32, i32* %3, align 4
%33 = call i8 @main-0.credentials_callback.test_val-0(i32 2, i32 %32, %Context* noalias nonnull %5)
%34 = trunc i8 %33 to i1
br i1 %34, label %if.then-5, label %if.else-10
if.then-5:
; IfStmt
; SelectorExpr
; SelectorExpr
%35 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 4
%36 = load i8, i8* %35, align 1
%37 = trunc i8 %36 to i1
br i1 %37, label %if.then-6, label %if.else-9
if.then-6:
; new_cred
; err
; SelectorExpr
; SelectorExpr
%38 = load i8*, i8** %2, align 8
%39 = call %..string @strings-12.to_odin_string(i8* %38, %Context* noalias nonnull %5)
%40 = call {%libgit2_types-55.Cred*, i32} @libgit2-29.cred_ssh_key_from_agent(%..string %39, %Context* noalias nonnull %5)
%41 = extractvalue {%libgit2_types-55.Cred*, i32} %40, 0
%42 = extractvalue {%libgit2_types-55.Cred*, i32} %40, 1
store %libgit2_types-55.Cred* %41, %libgit2_types-55.Cred** %13
store i32 %42, i32* %14
; IfStmt
%43 = load i32, i32* %14, align 4
%44 = icmp ne i32 %43, 0
%45 = zext i1 %44 to i8
%46 = trunc i8 %45 to i1
br i1 %46, label %if.then-7, label %if.done-8
if.then-7:
; ReturnStmt
ret i32 1
if.done-8:
; AssignStmt
%47 = load %libgit2_types-55.Cred**, %libgit2_types-55.Cred*** %0, align 8
%48 = getelementptr inbounds %libgit2_types-55.Cred*, %libgit2_types-55.Cred** %47, i64 0
%49 = load %libgit2_types-55.Cred*, %libgit2_types-55.Cred** %13, align 8
store %libgit2_types-55.Cred* %49, %libgit2_types-55.Cred** %48
br label %if.done-11
if.else-9:
; ReturnStmt
ret i32 1
if.else-10:
; ReturnStmt
ret i32 -1
if.done-11:
; ReturnStmt
ret i32 0
}
define i8 @main-0.credentials_callback.test_val-0(i32 %test, i32 %value, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca i32, align 16
%1 = alloca i32, align 16
store i32 %test, i32* %0
store i32 %value, i32* %1
; ReturnStmt
%2 = load i32, i32* %0, align 4
%3 = load i32, i32* %1, align 4
%4 = and i32 %2, %3
%5 = load i32, i32* %0, align 4
%6 = icmp eq i32 %4, %5
%7 = zext i1 %6 to i8
ret i8 %7
}
define void @main-0.agc_style(%Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %dear_imgui-50.Style*, align 16
; style
; SelectorExpr
%1 = call ccc %dear_imgui-50.Style* @igGetStyle()
store %dear_imgui-50.Style* %1, %dear_imgui-50.Style** %0
; AssignStmt
; SelectorExpr
%2 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8
%3 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %2, i64 0
%4 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %3, i64 0, i32 1
store %dear_imgui-50.Vec2 {float 0x4018000000000000, float 0x4018000000000000}, %dear_imgui-50.Vec2* %4
; AssignStmt
; SelectorExpr
%5 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8
%6 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %5, i64 0
%7 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %6, i64 0, i32 2
store float 0x0000000000000000, float* %7
; AssignStmt
; SelectorExpr
%8 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8
%9 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %8, i64 0
%10 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %9, i64 0, i32 6
store float 0x4000000000000000, float* %10
; AssignStmt
; SelectorExpr
%11 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8
%12 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %11, i64 0
%13 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %12, i64 0, i32 10
store %dear_imgui-50.Vec2 {float 0x4010000000000000, float 0x4000000000000000}, %dear_imgui-50.Vec2* %13
; AssignStmt
; SelectorExpr
%14 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8
%15 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %14, i64 0
%16 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %15, i64 0, i32 11
store float 0x4000000000000000, float* %16
; AssignStmt
; SelectorExpr
%17 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8
%18 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %17, i64 0
%19 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %18, i64 0, i32 12
store float 0x3ff0000000000000, float* %19
; AssignStmt
; SelectorExpr
%20 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8
%21 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %20, i64 0
%22 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %21, i64 0, i32 13
store %dear_imgui-50.Vec2 {float 0x4020000000000000, float 0x4010000000000000}, %dear_imgui-50.Vec2* %22
; AssignStmt
; SelectorExpr
%23 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8
%24 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %23, i64 0
%25 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %24, i64 0, i32 14
store %dear_imgui-50.Vec2 {float 0x4010000000000000, float 0x4010000000000000}, %dear_imgui-50.Vec2* %25
; AssignStmt
; SelectorExpr
%26 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8
%27 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %26, i64 0
%28 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %27, i64 0, i32 15
store %dear_imgui-50.Vec2 {float 0x0000000000000000, float 0x0000000000000000}, %dear_imgui-50.Vec2* %28
; AssignStmt
; SelectorExpr
%29 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8
%30 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %29, i64 0
%31 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %30, i64 0, i32 16
store float 0x4034000000000000, float* %31
; AssignStmt
; SelectorExpr
%32 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8
%33 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %32, i64 0
%34 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %33, i64 0, i32 18
store float 0x4028000000000000, float* %34
; AssignStmt
; SelectorExpr
%35 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8
%36 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %35, i64 0
%37 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %36, i64 0, i32 19
store float 0x4022000000000000, float* %37
; AssignStmt
; SelectorExpr
%38 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8
%39 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %38, i64 0
%40 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %39, i64 0, i32 20
store float 0x4022000000000000, float* %40
; AssignStmt
; SelectorExpr
%41 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8
%42 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %41, i64 0
%43 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %42, i64 0, i32 21
store float 0x3ff0000000000000, float* %43
; AssignStmt
; SelectorExpr
%44 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8
%45 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %44, i64 0
%46 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %45, i64 0, i32 5
store %dear_imgui-50.Vec2 {float 0x3fdeb851e0000000, float 0x3fe0000000000000}, %dear_imgui-50.Vec2* %46
; AssignStmt
; SelectorExpr
%47 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8
%48 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %47, i64 0
%49 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %48, i64 0, i32 22
store %dear_imgui-50.Vec2 {float 0x3fe0000000000000, float 0x3fe0000000000000}, %dear_imgui-50.Vec2* %49
; AssignStmt
; IndexExpr
; SelectorExpr
%50 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8
%51 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %50, i64 0
%52 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %51, i64 0, i32 28
%53 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %52, i64 0, i32 0
store %dear_imgui-50.Vec4 {float 0x3ff0000000000000, float 0x3ff0000000000000, float 0x3ff0000000000000, float 0x3ff0000000000000}, %dear_imgui-50.Vec4* %53
; AssignStmt
; IndexExpr
; SelectorExpr
%54 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8
%55 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %54, i64 0
%56 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %55, i64 0, i32 28
%57 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %56, i64 0, i32 1
store %dear_imgui-50.Vec4 {float 0x3fe428f5c0000000, float 0x3fe428f5c0000000, float 0x3fe428f5c0000000, float 0x3ff0000000000000}, %dear_imgui-50.Vec4* %57
; AssignStmt
; IndexExpr
; SelectorExpr
%58 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8
%59 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %58, i64 0
%60 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %59, i64 0, i32 28
%61 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %60, i64 0, i32 2
store %dear_imgui-50.Vec4 {float 0x3fcd70a3c0000000, float 0x3fcd70a3c0000000, float 0x3fcd70a3c0000000, float 0x3fef5c28e0000000}, %dear_imgui-50.Vec4* %61
; AssignStmt
; IndexExpr
; SelectorExpr
%62 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8
%63 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %62, i64 0
%64 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %63, i64 0, i32 28
%65 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %64, i64 0, i32 3
store %dear_imgui-50.Vec4 {float 0x3fc9999980000000, float 0x3fc9999980000000, float 0x3fc9999980000000, float 0x3ff0000000000000}, %dear_imgui-50.Vec4* %65
; AssignStmt
; IndexExpr
; SelectorExpr
%66 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8
%67 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %66, i64 0
%68 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %67, i64 0, i32 28
%69 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %68, i64 0, i32 4
store %dear_imgui-50.Vec4 {float 0x3fd0000000000000, float 0x3fd0000000000000, float 0x3fd0000000000000, float 0x3feeb851e0000000}, %dear_imgui-50.Vec4* %69
; AssignStmt
; IndexExpr
; SelectorExpr
%70 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8
%71 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %70, i64 0
%72 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %71, i64 0, i32 28
%73 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %72, i64 0, i32 5
store %dear_imgui-50.Vec4 {float 0x3fc70a3d60000000, float 0x3fc70a3d60000000, float 0x3fc70a3d60000000, float 0x3fef5c28e0000000}, %dear_imgui-50.Vec4* %73
; AssignStmt
; IndexExpr
; SelectorExpr
%74 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8
%75 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %74, i64 0
%76 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %75, i64 0, i32 28
%77 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %76, i64 0, i32 6
store %dear_imgui-50.Vec4 {float 0x0000000000000000, float 0x0000000000000000, float 0x0000000000000000, float 0x3fa47ae140000000}, %dear_imgui-50.Vec4* %77
; AssignStmt
; IndexExpr
; SelectorExpr
%78 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8
%79 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %78, i64 0
%80 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %79, i64 0, i32 28
%81 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %80, i64 0, i32 7
store %dear_imgui-50.Vec4 {float 0x0000000000000000, float 0x0000000000000000, float 0x0000000000000000, float 0x3fd28f5c20000000}, %dear_imgui-50.Vec4* %81
; AssignStmt
; IndexExpr
; SelectorExpr
%82 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8
%83 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %82, i64 0
%84 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %83, i64 0, i32 28
%85 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %84, i64 0, i32 10
store %dear_imgui-50.Vec4 {float 0x3fc0101000000000, float 0x3fc0101000000000, float 0x3fc0101000000000, float 0x3ff0000000000000}, %dear_imgui-50.Vec4* %85
; AssignStmt
; IndexExpr
; SelectorExpr
%86 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8
%87 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %86, i64 0
%88 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %87, i64 0, i32 28
%89 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %88, i64 0, i32 12
store %dear_imgui-50.Vec4 {float 0x3fbeb851e0000000, float 0x3fbeb851e0000000, float 0x3fbeb851e0000000, float 0x3fdf5c28e0000000}, %dear_imgui-50.Vec4* %89
; AssignStmt
; IndexExpr
; SelectorExpr
%90 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8
%91 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %90, i64 0
%92 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %91, i64 0, i32 28
%93 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %92, i64 0, i32 11
store %dear_imgui-50.Vec4 {float 0x3fc0101000000000, float 0x3fc0101000000000, float 0x3fc0101000000000, float 0x3ff0000000000000}, %dear_imgui-50.Vec4* %93
; AssignStmt
; IndexExpr
; SelectorExpr
%94 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8
%95 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %94, i64 0
%96 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %95, i64 0, i32 28
%97 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %96, i64 0, i32 13
store %dear_imgui-50.Vec4 {float 0x3fbc28f5c0000000, float 0x3fbc28f5c0000000, float 0x3fbc28f5c0000000, float 0x3fdae147a0000000}, %dear_imgui-50.Vec4* %97
; AssignStmt
; IndexExpr
; SelectorExpr
%98 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8
%99 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %98, i64 0
%100 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %99, i64 0, i32 28
%101 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %100, i64 0, i32 14
store %dear_imgui-50.Vec4 {float 0x0000000000000000, float 0x0000000000000000, float 0x0000000000000000, float 0x3fb47ae140000000}, %dear_imgui-50.Vec4* %101
; AssignStmt
; IndexExpr
; SelectorExpr
%102 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8
%103 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %102, i64 0
%104 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %103, i64 0, i32 28
%105 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %104, i64 0, i32 15
store %dear_imgui-50.Vec4 {float 0x3fd147ae00000000, float 0x3fd147ae00000000, float 0x3fd147ae00000000, float 0x3ff0000000000000}, %dear_imgui-50.Vec4* %105
; AssignStmt
; IndexExpr
; SelectorExpr
%106 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8
%107 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %106, i64 0
%108 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %107, i64 0, i32 28
%109 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %108, i64 0, i32 16
store %dear_imgui-50.Vec4 {float 0x3fe8f5c280000000, float 0x3fe8f5c280000000, float 0x3fe8f5c280000000, float 0x3fd9999980000000}, %dear_imgui-50.Vec4* %109
; AssignStmt
; IndexExpr
; SelectorExpr
%110 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8
%111 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %110, i64 0
%112 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %111, i64 0, i32 28
%113 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %112, i64 0, i32 18
store %dear_imgui-50.Vec4 {float 0x3fe8f5c280000000, float 0x3fe8f5c280000000, float 0x3fe8f5c280000000, float 0x3fee147ae0000000}, %dear_imgui-50.Vec4* %113
; AssignStmt
; IndexExpr
; SelectorExpr
%114 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8
%115 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %114, i64 0
%116 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %115, i64 0, i32 28
%117 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %116, i64 0, i32 19
store %dear_imgui-50.Vec4 {float 0x3fe8f5c280000000, float 0x3fe8f5c280000000, float 0x3fe8f5c280000000, float 0x3fee147ae0000000}, %dear_imgui-50.Vec4* %117
; AssignStmt
; IndexExpr
; SelectorExpr
%118 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8
%119 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %118, i64 0
%120 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %119, i64 0, i32 28
%121 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %120, i64 0, i32 21
store %dear_imgui-50.Vec4 {float 0x3fdae147a0000000, float 0x3fdae147a0000000, float 0x3fdae147a0000000, float 0x3fe3333320000000}, %dear_imgui-50.Vec4* %121
; AssignStmt
; IndexExpr
; SelectorExpr
%122 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8
%123 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %122, i64 0
%124 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %123, i64 0, i32 28
%125 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %124, i64 0, i32 22
store %dear_imgui-50.Vec4 {float 0x3fe8f5c280000000, float 0x3fe8f5c280000000, float 0x3fe8f5c280000000, float 0x3fd9999980000000}, %dear_imgui-50.Vec4* %125
; AssignStmt
; IndexExpr
; SelectorExpr
%126 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8
%127 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %126, i64 0
%128 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %127, i64 0, i32 28
%129 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %128, i64 0, i32 24
store %dear_imgui-50.Vec4 {float 0x3fd3d70a20000000, float 0x3fd3d70a20000000, float 0x3fd3d70a20000000, float 0x3fef5c28e0000000}, %dear_imgui-50.Vec4* %129
; AssignStmt
; IndexExpr
; SelectorExpr
%130 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8
%131 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %130, i64 0
%132 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %131, i64 0, i32 28
%133 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %132, i64 0, i32 25
store %dear_imgui-50.Vec4 {float 0x3fe8f5c280000000, float 0x3fe8f5c280000000, float 0x3fe8f5c280000000, float 0x3fd9999980000000}, %dear_imgui-50.Vec4* %133
; AssignStmt
; IndexExpr
; SelectorExpr
%134 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8
%135 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %134, i64 0
%136 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %135, i64 0, i32 28
%137 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %136, i64 0, i32 26
store %dear_imgui-50.Vec4 {float 0x3fe9999980000000, float 0x3fe0000000000000, float 0x3fe0000000000000, float 0x3ff0000000000000}, %dear_imgui-50.Vec4* %137
; AssignStmt
; IndexExpr
; SelectorExpr
%138 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8
%139 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %138, i64 0
%140 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %139, i64 0, i32 28
%141 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %140, i64 0, i32 40
store %dear_imgui-50.Vec4 {float 0x3fe4ccccc0000000, float 0x3fd6666660000000, float 0x3fd6666660000000, float 0x3fd0a3d700000000}, %dear_imgui-50.Vec4* %141
; AssignStmt
; IndexExpr
; SelectorExpr
%142 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8
%143 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %142, i64 0
%144 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %143, i64 0, i32 28
%145 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %144, i64 0, i32 41
store %dear_imgui-50.Vec4 {float 0x3fc9999980000000, float 0x3fc9999980000000, float 0x3fc9999980000000, float 0x3fd6666660000000}, %dear_imgui-50.Vec4* %145
ret void
}
define void @main-0.open_repo(%libgit2_types-55.Repository* %new_repo, %state-38.State* %state, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %libgit2_types-55.Repository*, align 16
%1 = alloca %state-38.State*, align 16
%2 = alloca %Source_Code_Location, align 16
%3 = alloca %..string, align 16
%4 = alloca %..string, align 16
%5 = alloca %..any, align 16
%6 = alloca {%..any*, i64}, align 16
%7 = alloca [1 x %..any], align 16
%8 = alloca {%..any*, i64}, align 16
%9 = alloca %..string, align 16
%10 = alloca i8, align 16
%11 = alloca %..string, align 16
%12 = alloca i64, align 16
%13 = alloca i64, align 16
%14 = alloca {i64*, i64}, align 16
%15 = alloca [1 x i64], align 16
%16 = alloca {i64*, i64}, align 16
%17 = alloca %libgit2_types-55.Oid, align 16
%18 = alloca i32, align 16
%19 = alloca %Source_Code_Location, align 16
%20 = alloca %libgit2_types-55.Oid, align 16
%21 = alloca %libgit2_types-55.Reference*, align 16
%22 = alloca i32, align 16
%23 = alloca %Source_Code_Location, align 16
%24 = alloca %..string, align 16
%25 = alloca i32, align 16
%26 = alloca %..string, align 16
%27 = alloca %libgit2_types-55.Oid, align 16
%28 = alloca i32, align 16
%29 = alloca %commit-34.Commit, align 16
%30 = alloca %libgit2_types-55.Oid, align 16
%31 = alloca %libgit2_types-55.Reference*, align 16
%32 = alloca i64, align 16
%33 = alloca i64, align 16
%34 = alloca %libgit2_types-55.Oid, align 16
%35 = alloca %libgit2_types-55.Oid, align 16
%36 = alloca %libgit2_types-55.Oid, align 16
%37 = alloca %branch-35.Branch, align 16
%38 = alloca %libgit2_types-55.Status_Options, align 16
%39 = alloca %Source_Code_Location, align 16
%40 = alloca %Source_Code_Location, align 16
%41 = alloca %Source_Code_Location, align 16
store %libgit2_types-55.Repository* %new_repo, %libgit2_types-55.Repository** %0
store %state-38.State* %state, %state-38.State** %1
; IfStmt
%42 = load %state-38.State*, %state-38.State** %1, align 8
%43 = getelementptr inbounds %state-38.State, %state-38.State* %42, i64 0
%44 = getelementptr inbounds %state-38.State, %state-38.State* %43, i64 0, i32 40
%45 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %44, align 8
%46 = icmp ne %libgit2_types-55.Repository* %45, zeroinitializer
%47 = zext i1 %46 to i8
%48 = trunc i8 %47 to i1
br i1 %48, label %if.then-1, label %if.done-2
if.then-1:
%49 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$90, i64 0, i32 0), i64 50}, i64 186, i64 9, %..string {i8* getelementptr inbounds ([10 x i8], [10 x i8]* @__str$91, i64 0, i32 0), i64 9})
%50 = bitcast %Source_Code_Location* %2 to %..rawptr
%51 = call %..rawptr @__mem_zero(%..rawptr %50, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %2
store %Source_Code_Location %49, %Source_Code_Location* %2
call void @panic(%..string {i8* getelementptr inbounds ([36 x i8], [36 x i8]* @__str$92, i64 0, i32 0), i64 35}, %Source_Code_Location* %2)
br label %if.done-2
if.done-2:
; repo_path
; SelectorExpr
%52 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %0, align 8
%53 = call %..string @libgit2-29.repository_path(%libgit2_types-55.Repository* %52, %Context* noalias nonnull %__.context_ptr)
store %..string %53, %..string* %3
; path
; SelectorExpr
%54 = load %..string, %..string* %3, align 8
%55 = bitcast %..any* %5 to %..rawptr
%56 = call %..rawptr @__mem_zero(%..rawptr %55, i64 16)
store %..any zeroinitializer, %..any* %5
%57 = bitcast %..string* %3 to %..rawptr
%58 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18
%59 = getelementptr inbounds %..any, %..any* %5, i64 0, i32 0
store %..rawptr %57, %..rawptr* %59
%60 = getelementptr inbounds %..any, %..any* %5, i64 0, i32 1
store %Type_Info* %58, %Type_Info** %60
%61 = load %..any, %..any* %5, align 8
; variadic call argument generation
%62 = bitcast {%..any*, i64}* %6 to %..rawptr
%63 = call %..rawptr @__mem_zero(%..rawptr %62, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %6
%64 = bitcast [1 x %..any]* %7 to %..rawptr
%65 = call %..rawptr @__mem_zero(%..rawptr %64, i64 16)
store [1 x %..any] zeroinitializer, [1 x %..any]* %7
%66 = getelementptr inbounds [1 x %..any], [1 x %..any]* %7, i64 0, i32 0
store %..any %61, %..any* %66
%67 = getelementptr inbounds [1 x %..any], [1 x %..any]* %7, i64 0, i32 0
%68 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %6, i64 0, i32 0
store %..any* %67, %..any** %68
%69 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %6, i64 0, i32 1
store i64 1, i64* %69
%70 = load {%..any*, i64}, {%..any*, i64}* %6, align 8
%71 = bitcast {%..any*, i64}* %8 to %..rawptr
%72 = call %..rawptr @__mem_zero(%..rawptr %71, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %8
store {%..any*, i64} %70, {%..any*, i64}* %8
%73 = call %..string @fmt-11.aprintf(%..string {i8* getelementptr inbounds ([6 x i8], [6 x i8]* @__str$93, i64 0, i32 0), i64 5}, {%..any*, i64}* %8, %Context* noalias nonnull %__.context_ptr)
store %..string %73, %..string* %4
; DeferStmt
; full_path
; SelectorExpr
%74 = load %..string, %..string* %4, align 8
%75 = call %..string @path-31.full(%..string %74, %Context* noalias nonnull %__.context_ptr)
store %..string %75, %..string* %9
; DeferStmt
; found
store i8 0, i8* %10
; RangeStmt
; s
%76 = bitcast %..string* %11 to %..rawptr
%77 = call %..rawptr @__mem_zero(%..rawptr %76, i64 16)
store %..string zeroinitializer, %..string* %11
; i
%78 = bitcast i64* %12 to %..rawptr
%79 = call %..rawptr @__mem_zero(%..rawptr %78, i64 8)
store i64 zeroinitializer, i64* %12
; SelectorExpr
; SelectorExpr
%80 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 5
%81 = getelementptr inbounds {%..string*, i64, i64, %Allocator}, {%..string*, i64, i64, %Allocator}* %80, i64 0, i32 1
%82 = bitcast i64* %13 to %..rawptr
%83 = call %..rawptr @__mem_zero(%..rawptr %82, i64 8)
store i64 zeroinitializer, i64* %13
store i64 -1, i64* %13
br label %for.index.loop-3
for.index.loop-3:
%84 = load i64, i64* %13, align 8
%85 = add i64 %84, 1
store i64 %85, i64* %13
%86 = load i64, i64* %81, align 8
%87 = icmp slt i64 %85, %86
br i1 %87, label %for.index.body-4, label %for.index.done-7
for.index.body-4:
%88 = load i64, i64* %13, align 8
%89 = getelementptr inbounds {%..string*, i64, i64, %Allocator}, {%..string*, i64, i64, %Allocator}* %80, i64 0, i32 0
%90 = load %..string*, %..string** %89, align 8
%91 = getelementptr inbounds %..string, %..string* %90, i64 %88
%92 = load %..string, %..string* %91, align 8
store %..string %92, %..string* %11
store i64 %88, i64* %12
; IfStmt
%93 = load %..string, %..string* %11, align 8
%94 = load %..string, %..string* %9, align 8
%95 = call i8 @__string_eq(%..string %93, %..string %94)
%96 = trunc i8 %95 to i1
br i1 %96, label %if.then-5, label %if.done-6
if.then-5:
; AssignStmt
store i8 1, i8* %10
; SelectorExpr
; SelectorExpr
; SelectorExpr
%97 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 5
%98 = getelementptr inbounds {%..string*, i64, i64, %Allocator}, {%..string*, i64, i64, %Allocator}* %97, i64 0
%99 = load i64, i64* %12, align 8
; variadic call argument generation
%100 = bitcast {i64*, i64}* %14 to %..rawptr
%101 = call %..rawptr @__mem_zero(%..rawptr %100, i64 16)
store {i64*, i64} zeroinitializer, {i64*, i64}* %14
%102 = bitcast [1 x i64]* %15 to %..rawptr
%103 = call %..rawptr @__mem_zero(%..rawptr %102, i64 8)
store [1 x i64] zeroinitializer, [1 x i64]* %15
%104 = getelementptr inbounds [1 x i64], [1 x i64]* %15, i64 0, i32 0
store i64 %99, i64* %104
%105 = getelementptr inbounds [1 x i64], [1 x i64]* %15, i64 0, i32 0
%106 = getelementptr inbounds {i64*, i64}, {i64*, i64}* %14, i64 0, i32 0
store i64* %105, i64** %106
%107 = getelementptr inbounds {i64*, i64}, {i64*, i64}* %14, i64 0, i32 1
store i64 1, i64* %107
%108 = load {i64*, i64}, {i64*, i64}* %14, align 8
%109 = bitcast {i64*, i64}* %16 to %..rawptr
%110 = call %..rawptr @__mem_zero(%..rawptr %109, i64 16)
store {i64*, i64} zeroinitializer, {i64*, i64}* %16
store {i64*, i64} %108, {i64*, i64}* %16
call void @dyna_util-27.remove_ordered-19307({%..string*, i64, i64, %Allocator}* %98, {i64*, i64}* %16, %Context* noalias nonnull %__.context_ptr)
; SelectorExpr
; SelectorExpr
; SelectorExpr
%111 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 5
%112 = getelementptr inbounds {%..string*, i64, i64, %Allocator}, {%..string*, i64, i64, %Allocator}* %111, i64 0
; SelectorExpr
%113 = load %..string, %..string* %9, align 8
%114 = call %..string @strings-12.new_string(%..string %113, %Context* noalias nonnull %__.context_ptr)
%115 = call i64 @dyna_util-27.append_front-19312({%..string*, i64, i64, %Allocator}* %112, %..string %114, %Context* noalias nonnull %__.context_ptr)
; break
br label %for.index.done-7
if.done-6:
br label %for.index.loop-3
for.index.done-7:
; IfStmt
%116 = load i8, i8* %10, align 1
%117 = trunc i8 %116 to i1
br i1 %117, label %if.done-9, label %if.then-8
if.then-8:
; SelectorExpr
; SelectorExpr
; SelectorExpr
%118 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 5
%119 = getelementptr inbounds {%..string*, i64, i64, %Allocator}, {%..string*, i64, i64, %Allocator}* %118, i64 0
; SelectorExpr
%120 = load %..string, %..string* %9, align 8
%121 = call %..string @strings-12.new_string(%..string %120, %Context* noalias nonnull %__.context_ptr)
%122 = call i64 @dyna_util-27.append_front-19312({%..string*, i64, i64, %Allocator}* %119, %..string %121, %Context* noalias nonnull %__.context_ptr)
br label %if.done-9
if.done-9:
; AssignStmt
%123 = load %state-38.State*, %state-38.State** %1, align 8
%124 = getelementptr inbounds %state-38.State, %state-38.State* %123, i64 0
%125 = getelementptr inbounds %state-38.State, %state-38.State* %124, i64 0, i32 40
%126 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %0, align 8
store %libgit2_types-55.Repository* %126, %libgit2_types-55.Repository** %125
; AssignStmt
%127 = load %state-38.State*, %state-38.State** %1, align 8
%128 = getelementptr inbounds %state-38.State, %state-38.State* %127, i64 0
%129 = getelementptr inbounds %state-38.State, %state-38.State* %128, i64 0, i32 41
; SelectorExpr
%130 = load %..string, %..string* %9, align 8
%131 = call %..string @strings-12.new_string(%..string %130, %Context* noalias nonnull %__.context_ptr)
store %..string %131, %..string* %129
; oid
; ok
; SelectorExpr
%132 = load %state-38.State*, %state-38.State** %1, align 8
%133 = getelementptr inbounds %state-38.State, %state-38.State* %132, i64 0
%134 = getelementptr inbounds %state-38.State, %state-38.State* %133, i64 0, i32 40
%135 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %134, align 8
%136 = call {%libgit2_types-55.Oid, i32} @libgit2-29.reference_name_to_id(%libgit2_types-55.Repository* %135, %..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$94, i64 0, i32 0), i64 4}, %Context* noalias nonnull %__.context_ptr)
%137 = extractvalue {%libgit2_types-55.Oid, i32} %136, 0
%138 = extractvalue {%libgit2_types-55.Oid, i32} %136, 1
store %libgit2_types-55.Oid %137, %libgit2_types-55.Oid* %17
store i32 %138, i32* %18
; IfStmt
%139 = load i32, i32* %18, align 4
%140 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$95, i64 0, i32 0), i64 50}, i64 217, i64 9, %..string {i8* getelementptr inbounds ([10 x i8], [10 x i8]* @__str$96, i64 0, i32 0), i64 9})
%141 = bitcast %Source_Code_Location* %19 to %..rawptr
%142 = call %..rawptr @__mem_zero(%..rawptr %141, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %19
store %Source_Code_Location %140, %Source_Code_Location* %19
%143 = call i8 @debug-30.log_if_err(i32 %139, %Source_Code_Location* %19, %Context* noalias nonnull %__.context_ptr)
%144 = trunc i8 %143 to i1
br i1 %144, label %if.done-11, label %if.then-10
if.then-10:
; SelectorExpr
; SelectorExpr
%145 = load %state-38.State*, %state-38.State** %1, align 8
%146 = getelementptr inbounds %state-38.State, %state-38.State* %145, i64 0
%147 = getelementptr inbounds %state-38.State, %state-38.State* %146, i64 0, i32 43
%148 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %147, i64 0, i32 4
%149 = getelementptr inbounds %commit-34.Commit, %commit-34.Commit* %148, i64 0
call void @commit-34.free(%commit-34.Commit* %149, %Context* noalias nonnull %__.context_ptr)
; AssignStmt
; SelectorExpr
%150 = load %state-38.State*, %state-38.State** %1, align 8
%151 = getelementptr inbounds %state-38.State, %state-38.State* %150, i64 0
%152 = getelementptr inbounds %state-38.State, %state-38.State* %151, i64 0, i32 43
%153 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %152, i64 0, i32 4
; SelectorExpr
%154 = load %state-38.State*, %state-38.State** %1, align 8
%155 = getelementptr inbounds %state-38.State, %state-38.State* %154, i64 0
%156 = getelementptr inbounds %state-38.State, %state-38.State* %155, i64 0, i32 40
%157 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %156, align 8
%158 = load %libgit2_types-55.Oid, %libgit2_types-55.Oid* %17, align 1
%159 = bitcast %libgit2_types-55.Oid* %20 to %..rawptr
%160 = call %..rawptr @__mem_zero(%..rawptr %159, i64 20)
store %libgit2_types-55.Oid zeroinitializer, %libgit2_types-55.Oid* %20
store %libgit2_types-55.Oid %158, %libgit2_types-55.Oid* %20
%161 = call %commit-34.Commit @commit-34.from_oid(%libgit2_types-55.Repository* %157, %libgit2_types-55.Oid* %20, %Context* noalias nonnull %__.context_ptr)
store %commit-34.Commit %161, %commit-34.Commit* %153
br label %if.done-11
if.done-11:
; ref
; err
; SelectorExpr
%162 = load %state-38.State*, %state-38.State** %1, align 8
%163 = getelementptr inbounds %state-38.State, %state-38.State* %162, i64 0
%164 = getelementptr inbounds %state-38.State, %state-38.State* %163, i64 0, i32 40
%165 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %164, align 8
%166 = call {%libgit2_types-55.Reference*, i32} @libgit2-29.repository_head(%libgit2_types-55.Repository* %165, %Context* noalias nonnull %__.context_ptr)
%167 = extractvalue {%libgit2_types-55.Reference*, i32} %166, 0
%168 = extractvalue {%libgit2_types-55.Reference*, i32} %166, 1
store %libgit2_types-55.Reference* %167, %libgit2_types-55.Reference** %21
store i32 %168, i32* %22
; IfStmt
%169 = load i32, i32* %22, align 4
%170 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$97, i64 0, i32 0), i64 50}, i64 223, i64 9, %..string {i8* getelementptr inbounds ([10 x i8], [10 x i8]* @__str$98, i64 0, i32 0), i64 9})
%171 = bitcast %Source_Code_Location* %23 to %..rawptr
%172 = call %..rawptr @__mem_zero(%..rawptr %171, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %23
store %Source_Code_Location %170, %Source_Code_Location* %23
%173 = call i8 @debug-30.log_if_err(i32 %169, %Source_Code_Location* %23, %Context* noalias nonnull %__.context_ptr)
%174 = trunc i8 %173 to i1
br i1 %174, label %if.done-15, label %if.then-12
if.then-12:
; bname
; err
; SelectorExpr
%175 = load %libgit2_types-55.Reference*, %libgit2_types-55.Reference** %21, align 8
%176 = call {%..string, i32} @libgit2-29.branch_name(%libgit2_types-55.Reference* %175, %Context* noalias nonnull %__.context_ptr)
%177 = extractvalue {%..string, i32} %176, 0
%178 = extractvalue {%..string, i32} %176, 1
store %..string %177, %..string* %24
store i32 %178, i32* %25
; refname
; SelectorExpr
%179 = load %libgit2_types-55.Reference*, %libgit2_types-55.Reference** %21, align 8
%180 = call %..string @libgit2-29.reference_name(%libgit2_types-55.Reference* %179, %Context* noalias nonnull %__.context_ptr)
store %..string %180, %..string* %26
; oid
; ok
; SelectorExpr
%181 = load %state-38.State*, %state-38.State** %1, align 8
%182 = getelementptr inbounds %state-38.State, %state-38.State* %181, i64 0
%183 = getelementptr inbounds %state-38.State, %state-38.State* %182, i64 0, i32 40
%184 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %183, align 8
%185 = load %..string, %..string* %26, align 8
%186 = call {%libgit2_types-55.Oid, i32} @libgit2-29.reference_name_to_id(%libgit2_types-55.Repository* %184, %..string %185, %Context* noalias nonnull %__.context_ptr)
%187 = extractvalue {%libgit2_types-55.Oid, i32} %186, 0
%188 = extractvalue {%libgit2_types-55.Oid, i32} %186, 1
store %libgit2_types-55.Oid %187, %libgit2_types-55.Oid* %27
store i32 %188, i32* %28
; commit
; SelectorExpr
%189 = load %state-38.State*, %state-38.State** %1, align 8
%190 = getelementptr inbounds %state-38.State, %state-38.State* %189, i64 0
%191 = getelementptr inbounds %state-38.State, %state-38.State* %190, i64 0, i32 40
%192 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %191, align 8
%193 = load %libgit2_types-55.Oid, %libgit2_types-55.Oid* %27, align 1
%194 = bitcast %libgit2_types-55.Oid* %30 to %..rawptr
%195 = call %..rawptr @__mem_zero(%..rawptr %194, i64 20)
store %libgit2_types-55.Oid zeroinitializer, %libgit2_types-55.Oid* %30
store %libgit2_types-55.Oid %193, %libgit2_types-55.Oid* %30
%196 = call %commit-34.Commit @commit-34.from_oid(%libgit2_types-55.Repository* %192, %libgit2_types-55.Oid* %30, %Context* noalias nonnull %__.context_ptr)
store %commit-34.Commit %196, %commit-34.Commit* %29
; upstream
; SelectorExpr
%197 = load %libgit2_types-55.Reference*, %libgit2_types-55.Reference** %21, align 8
%198 = call {%libgit2_types-55.Reference*, i32} @libgit2-29.branch_upstream(%libgit2_types-55.Reference* %197, %Context* noalias nonnull %__.context_ptr)
%199 = extractvalue {%libgit2_types-55.Reference*, i32} %198, 0
%200 = extractvalue {%libgit2_types-55.Reference*, i32} %198, 1
store %libgit2_types-55.Reference* %199, %libgit2_types-55.Reference** %31
; ahead
%201 = bitcast i64* %32 to %..rawptr
%202 = call %..rawptr @__mem_zero(%..rawptr %201, i64 8)
store i64 zeroinitializer, i64* %32
; behind
%203 = bitcast i64* %33 to %..rawptr
%204 = call %..rawptr @__mem_zero(%..rawptr %203, i64 8)
store i64 zeroinitializer, i64* %33
; IfStmt
%205 = load %libgit2_types-55.Reference*, %libgit2_types-55.Reference** %31, align 8
%206 = icmp ne %libgit2_types-55.Reference* %205, zeroinitializer
%207 = zext i1 %206 to i8
%208 = trunc i8 %207 to i1
br i1 %208, label %if.then-13, label %if.done-14
if.then-13:
; uid
; SelectorExpr
%209 = load %state-38.State*, %state-38.State** %1, align 8
%210 = getelementptr inbounds %state-38.State, %state-38.State* %209, i64 0
%211 = getelementptr inbounds %state-38.State, %state-38.State* %210, i64 0, i32 40
%212 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %211, align 8
; SelectorExpr
%213 = load %libgit2_types-55.Reference*, %libgit2_types-55.Reference** %31, align 8
%214 = call %..string @libgit2-29.reference_name(%libgit2_types-55.Reference* %213, %Context* noalias nonnull %__.context_ptr)
%215 = call {%libgit2_types-55.Oid, i32} @libgit2-29.reference_name_to_id(%libgit2_types-55.Repository* %212, %..string %214, %Context* noalias nonnull %__.context_ptr)
%216 = extractvalue {%libgit2_types-55.Oid, i32} %215, 0
%217 = extractvalue {%libgit2_types-55.Oid, i32} %215, 1
store %libgit2_types-55.Oid %216, %libgit2_types-55.Oid* %34
; AssignStmt
; SelectorExpr
%218 = load %state-38.State*, %state-38.State** %1, align 8
%219 = getelementptr inbounds %state-38.State, %state-38.State* %218, i64 0
%220 = getelementptr inbounds %state-38.State, %state-38.State* %219, i64 0, i32 40
%221 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %220, align 8
%222 = load %libgit2_types-55.Oid, %libgit2_types-55.Oid* %27, align 1
%223 = load %libgit2_types-55.Oid, %libgit2_types-55.Oid* %34, align 1
%224 = bitcast %libgit2_types-55.Oid* %35 to %..rawptr
%225 = call %..rawptr @__mem_zero(%..rawptr %224, i64 20)
store %libgit2_types-55.Oid zeroinitializer, %libgit2_types-55.Oid* %35
store %libgit2_types-55.Oid %222, %libgit2_types-55.Oid* %35
%226 = bitcast %libgit2_types-55.Oid* %36 to %..rawptr
%227 = call %..rawptr @__mem_zero(%..rawptr %226, i64 20)
store %libgit2_types-55.Oid zeroinitializer, %libgit2_types-55.Oid* %36
store %libgit2_types-55.Oid %223, %libgit2_types-55.Oid* %36
%228 = call {i64, i64, i32} @libgit2-29.graph_ahead_behind(%libgit2_types-55.Repository* %221, %libgit2_types-55.Oid* %35, %libgit2_types-55.Oid* %36, %Context* noalias nonnull %__.context_ptr)
%229 = extractvalue {i64, i64, i32} %228, 0
%230 = extractvalue {i64, i64, i32} %228, 1
%231 = extractvalue {i64, i64, i32} %228, 2
store i64 %229, i64* %32
store i64 %230, i64* %33
br label %if.done-14
if.done-14:
; AssignStmt
%232 = load %state-38.State*, %state-38.State** %1, align 8
%233 = getelementptr inbounds %state-38.State, %state-38.State* %232, i64 0
%234 = getelementptr inbounds %state-38.State, %state-38.State* %233, i64 0, i32 43
; CompoundLit
%235 = bitcast %branch-35.Branch* %37 to %..rawptr
%236 = call %..rawptr @__mem_zero(%..rawptr %235, i64 208)
store %branch-35.Branch zeroinitializer, %branch-35.Branch* %37
store %branch-35.Branch {%libgit2_types-55.Reference* zeroinitializer, %libgit2_types-55.Reference* zeroinitializer, %..string zeroinitializer, i32 1, %commit-34.Commit zeroinitializer, i64 zeroinitializer, i64 zeroinitializer}, %branch-35.Branch* %37
%237 = load %libgit2_types-55.Reference*, %libgit2_types-55.Reference** %21, align 8
%238 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %37, i64 0, i32 0
store %libgit2_types-55.Reference* %237, %libgit2_types-55.Reference** %238
%239 = load %libgit2_types-55.Reference*, %libgit2_types-55.Reference** %31, align 8
%240 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %37, i64 0, i32 1
store %libgit2_types-55.Reference* %239, %libgit2_types-55.Reference** %240
%241 = load %..string, %..string* %24, align 8
%242 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %37, i64 0, i32 2
store %..string %241, %..string* %242
%243 = load %commit-34.Commit, %commit-34.Commit* %29, align 8
%244 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %37, i64 0, i32 4
store %commit-34.Commit %243, %commit-34.Commit* %244
%245 = load i64, i64* %32, align 8
%246 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %37, i64 0, i32 5
store i64 %245, i64* %246
%247 = load i64, i64* %33, align 8
%248 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %37, i64 0, i32 6
store i64 %247, i64* %248
%249 = load %branch-35.Branch, %branch-35.Branch* %37, align 8
store %branch-35.Branch %249, %branch-35.Branch* %234
br label %if.done-15
if.done-15:
; AssignStmt
%250 = load %state-38.State*, %state-38.State** %1, align 8
%251 = getelementptr inbounds %state-38.State, %state-38.State* %250, i64 0
%252 = getelementptr inbounds %state-38.State, %state-38.State* %251, i64 0, i32 44
; SelectorExpr
%253 = load %state-38.State*, %state-38.State** %1, align 8
%254 = getelementptr inbounds %state-38.State, %state-38.State* %253, i64 0
%255 = getelementptr inbounds %state-38.State, %state-38.State* %254, i64 0, i32 40
%256 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %255, align 8
%257 = call {%branch-35.Branch_Collection*, i64} @branch-35.all_branches_from_repo(%libgit2_types-55.Repository* %256, i32 1, %Context* noalias nonnull %__.context_ptr)
store {%branch-35.Branch_Collection*, i64} %257, {%branch-35.Branch_Collection*, i64}* %252
; AssignStmt
%258 = load %state-38.State*, %state-38.State** %1, align 8
%259 = getelementptr inbounds %state-38.State, %state-38.State* %258, i64 0
%260 = getelementptr inbounds %state-38.State, %state-38.State* %259, i64 0, i32 45
; SelectorExpr
%261 = load %state-38.State*, %state-38.State** %1, align 8
%262 = getelementptr inbounds %state-38.State, %state-38.State* %261, i64 0
%263 = getelementptr inbounds %state-38.State, %state-38.State* %262, i64 0, i32 40
%264 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %263, align 8
%265 = call {%branch-35.Branch_Collection*, i64} @branch-35.all_branches_from_repo(%libgit2_types-55.Repository* %264, i32 2, %Context* noalias nonnull %__.context_ptr)
store {%branch-35.Branch_Collection*, i64} %265, {%branch-35.Branch_Collection*, i64}* %260
; options
; SelectorExpr
%266 = call {%libgit2_types-55.Status_Options, i32} @libgit2-29.status_init_options(i32 1, %Context* noalias nonnull %__.context_ptr)
%267 = extractvalue {%libgit2_types-55.Status_Options, i32} %266, 0
%268 = extractvalue {%libgit2_types-55.Status_Options, i32} %266, 1
store %libgit2_types-55.Status_Options %267, %libgit2_types-55.Status_Options* %38
; AssignStmt
; SelectorExpr
%269 = getelementptr inbounds %libgit2_types-55.Status_Options, %libgit2_types-55.Status_Options* %38, i64 0, i32 2
store i32 1, i32* %269
; AssignStmt
%270 = load %state-38.State*, %state-38.State** %1, align 8
%271 = getelementptr inbounds %state-38.State, %state-38.State* %270, i64 0
%272 = getelementptr inbounds %state-38.State, %state-38.State* %271, i64 0, i32 42
; SelectorExpr
%273 = load %state-38.State*, %state-38.State** %1, align 8
%274 = getelementptr inbounds %state-38.State, %state-38.State* %273, i64 0
%275 = getelementptr inbounds %state-38.State, %state-38.State* %274, i64 0, i32 40
%276 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %275, align 8
%277 = getelementptr inbounds %libgit2_types-55.Status_Options, %libgit2_types-55.Status_Options* %38, i64 0
%278 = call {%libgit2_types-55.Status_List*, i32} @libgit2-29.status_list_new(%libgit2_types-55.Repository* %276, %libgit2_types-55.Status_Options* %277, %Context* noalias nonnull %__.context_ptr)
%279 = extractvalue {%libgit2_types-55.Status_List*, i32} %278, 0
%280 = extractvalue {%libgit2_types-55.Status_List*, i32} %278, 1
store %libgit2_types-55.Status_List* %279, %libgit2_types-55.Status_List** %272
store i32 %280, i32* %22
%281 = load i32, i32* %22, align 4
%282 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$99, i64 0, i32 0), i64 50}, i64 252, i64 5, %..string {i8* getelementptr inbounds ([10 x i8], [10 x i8]* @__str$9a, i64 0, i32 0), i64 9})
%283 = bitcast %Source_Code_Location* %39 to %..rawptr
%284 = call %..rawptr @__mem_zero(%..rawptr %283, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %39
store %Source_Code_Location %282, %Source_Code_Location* %39
%285 = call i8 @debug-30.log_if_err(i32 %281, %Source_Code_Location* %39, %Context* noalias nonnull %__.context_ptr)
; SelectorExpr
%286 = load %state-38.State*, %state-38.State** %1, align 8
%287 = getelementptr inbounds %state-38.State, %state-38.State* %286, i64 0
%288 = getelementptr inbounds %state-38.State, %state-38.State* %287, i64 0, i32 28
%289 = getelementptr inbounds %log-33.Log, %log-33.Log* %288, i64 0
%290 = load %state-38.State*, %state-38.State** %1, align 8
%291 = getelementptr inbounds %state-38.State, %state-38.State* %290, i64 0
%292 = getelementptr inbounds %state-38.State, %state-38.State* %291, i64 0, i32 40
%293 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %292, align 8
; SelectorExpr
%294 = load %state-38.State*, %state-38.State** %1, align 8
%295 = getelementptr inbounds %state-38.State, %state-38.State* %294, i64 0
%296 = getelementptr inbounds %state-38.State, %state-38.State* %295, i64 0, i32 43
%297 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %296, i64 0, i32 0
%298 = load %libgit2_types-55.Reference*, %libgit2_types-55.Reference** %297, align 8
call void @log-33.update(%log-33.Log* %289, %libgit2_types-55.Repository* %293, %libgit2_types-55.Reference* %298, %Context* noalias nonnull %__.context_ptr)
; SelectorExpr
%299 = load %state-38.State*, %state-38.State** %1, align 8
%300 = getelementptr inbounds %state-38.State, %state-38.State* %299, i64 0
%301 = getelementptr inbounds %state-38.State, %state-38.State* %300, i64 0, i32 40
%302 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %301, align 8
%303 = load %state-38.State*, %state-38.State** %1, align 8
%304 = getelementptr inbounds %state-38.State, %state-38.State* %303, i64 0
%305 = getelementptr inbounds %state-38.State, %state-38.State* %304, i64 0, i32 29
%306 = getelementptr inbounds %status-39.Status, %status-39.Status* %305, i64 0
call void @status-39.update(%libgit2_types-55.Repository* %302, %status-39.Status* %306, %Context* noalias nonnull %__.context_ptr)
; defer
%307 = load %..string, %..string* %9, align 8
%308 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$9b, i64 0, i32 0), i64 50}, i64 197, i64 11, %..string {i8* getelementptr inbounds ([10 x i8], [10 x i8]* @__str$9c, i64 0, i32 0), i64 9})
%309 = bitcast %Source_Code_Location* %40 to %..rawptr
%310 = call %..rawptr @__mem_zero(%..rawptr %309, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %40
store %Source_Code_Location %308, %Source_Code_Location* %40
call void @free_string(%..string %307, %Source_Code_Location* %40, %Context* noalias nonnull %__.context_ptr)
; defer
%311 = load %..string, %..string* %4, align 8
%312 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$9d, i64 0, i32 0), i64 50}, i64 194, i64 11, %..string {i8* getelementptr inbounds ([10 x i8], [10 x i8]* @__str$9e, i64 0, i32 0), i64 9})
%313 = bitcast %Source_Code_Location* %41 to %..rawptr
%314 = call %..rawptr @__mem_zero(%..rawptr %313, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %41
store %Source_Code_Location %312, %Source_Code_Location* %41
call void @free_string(%..string %311, %Source_Code_Location* %41, %Context* noalias nonnull %__.context_ptr)
ret void
}
define void @main-0.init(%state-38.State* %state, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %state-38.State*, align 16
%1 = alloca %Source_Code_Location, align 16
%2 = alloca %..any, align 16
%3 = alloca %..any, align 16
%4 = alloca %..any, align 16
%5 = alloca {%..any*, i64}, align 16
%6 = alloca [3 x %..any], align 16
%7 = alloca {%..any*, i64}, align 16
store %state-38.State* %state, %state-38.State** %0
; AssignStmt
%8 = load %state-38.State*, %state-38.State** %0, align 8
%9 = getelementptr inbounds %state-38.State, %state-38.State* %8, i64 0
%10 = getelementptr inbounds %state-38.State, %state-38.State* %9, i64 0, i32 13
; SelectorExpr
%11 = call %misc-49.TimeData @misc-49.create_time_data(%Context* noalias nonnull %__.context_ptr)
store %misc-49.TimeData %11, %misc-49.TimeData* %10
; AssignStmt
%12 = load %state-38.State*, %state-38.State** %0, align 8
%13 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0
%14 = getelementptr inbounds %state-38.State, %state-38.State* %13, i64 0, i32 2
; SelectorExpr
%15 = call %..rawptr @misc-49.get_app_handle(%Context* noalias nonnull %__.context_ptr)
store %..rawptr %15, %..rawptr* %14
; AssignStmt
%16 = load %state-38.State*, %state-38.State** %0, align 8
%17 = getelementptr inbounds %state-38.State, %state-38.State* %16, i64 0
%18 = getelementptr inbounds %state-38.State, %state-38.State* %17, i64 0, i32 3
; SelectorExpr
%19 = load %state-38.State*, %state-38.State** %0, align 8
%20 = getelementptr inbounds %state-38.State, %state-38.State* %19, i64 0
%21 = getelementptr inbounds %state-38.State, %state-38.State* %20, i64 0, i32 2
%22 = load %..rawptr, %..rawptr* %21, align 8
%23 = call %..rawptr @window-45.create_window3(%..rawptr %22, %..string {i8* getelementptr inbounds ([13 x i8], [13 x i8]* @__str$9f, i64 0, i32 0), i64 12}, i64 1280, i64 720, i32 13565952, %Context* noalias nonnull %__.context_ptr)
store %..rawptr %23, %..rawptr* %18
; AssignStmt
%24 = load %state-38.State*, %state-38.State** %0, align 8
%25 = getelementptr inbounds %state-38.State, %state-38.State* %24, i64 0
%26 = getelementptr inbounds %state-38.State, %state-38.State* %25, i64 0, i32 4
; SelectorExpr
%27 = load %state-38.State*, %state-38.State** %0, align 8
%28 = getelementptr inbounds %state-38.State, %state-38.State* %27, i64 0
%29 = getelementptr inbounds %state-38.State, %state-38.State* %28, i64 0, i32 3
%30 = load %..rawptr, %..rawptr* %29, align 8
%31 = call %..rawptr @opengl-48.create_gl_context_min(%..rawptr %30, i64 3, i64 3, %Context* noalias nonnull %__.context_ptr)
store %..rawptr %31, %..rawptr* %26
; SelectorExpr
%32 = bitcast void (%..rawptr, %..rawptr, %..string, %Context*)* @main-0.set_proc to void (%..rawptr, %..rawptr, %..string, %Context*)*
%33 = bitcast %..rawptr (%..string, %Context*)* @main-0.load_lib to %..rawptr (%..string, %Context*)*
%34 = bitcast void (%..rawptr, %Context*)* @main-0.free_lib to void (%..rawptr, %Context*)*
call void @gl-24.load_functions(void (%..rawptr, %..rawptr, %..string, %Context*)* %32, %..rawptr (%..string, %Context*)* %33, void (%..rawptr, %Context*)* %34, %Context* noalias nonnull %__.context_ptr)
; AssignStmt
%35 = load %state-38.State*, %state-38.State** %0, align 8
%36 = getelementptr inbounds %state-38.State, %state-38.State* %35, i64 0
%37 = getelementptr inbounds %state-38.State, %state-38.State* %36, i64 0, i32 5
%38 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$a0, i64 0, i32 0), i64 50}, i64 267, i64 18, %..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$a1, i64 0, i32 0), i64 4})
%39 = bitcast %Source_Code_Location* %1 to %..rawptr
%40 = call %..rawptr @__mem_zero(%..rawptr %39, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %1
store %Source_Code_Location %38, %Source_Code_Location* %1
%41 = call %brew_imgui-23.State* @_preload-0.new-19388(%Source_Code_Location* %1, %Context* noalias nonnull %__.context_ptr)
store %brew_imgui-23.State* %41, %brew_imgui-23.State** %37
; SelectorExpr
%42 = load %state-38.State*, %state-38.State** %0, align 8
%43 = getelementptr inbounds %state-38.State, %state-38.State* %42, i64 0
%44 = getelementptr inbounds %state-38.State, %state-38.State* %43, i64 0, i32 5
%45 = load %brew_imgui-23.State*, %brew_imgui-23.State** %44, align 8
%46 = load %state-38.State*, %state-38.State** %0, align 8
%47 = getelementptr inbounds %state-38.State, %state-38.State* %46, i64 0
%48 = getelementptr inbounds %state-38.State, %state-38.State* %47, i64 0, i32 3
%49 = load %..rawptr, %..rawptr* %48, align 8
call void @brew_imgui-23.init(%brew_imgui-23.State* %45, %..rawptr %49, void (%Context*)* @main-0.agc_style, i1 true, %Context* noalias nonnull %__.context_ptr)
; SelectorExpr
%50 = load i8 (i32)*, i8 (i32)** @opengl_wgl-62.swap_interval, align 8
%51 = call ccc i8 %50(i32 -1)
; SelectorExpr
%52 = load void (float, float, float, float)*, void (float, float, float, float)** @gl-24.clear_color, align 8
call ccc void %52(float 0x3fb9999980000000, float 0x3fb9999980000000, float 0x3fb9999980000000, float 0x3ff0000000000000)
; SelectorExpr
%53 = load %state-38.State*, %state-38.State** %0, align 8
%54 = getelementptr inbounds %state-38.State, %state-38.State* %53, i64 0
%55 = getelementptr inbounds %state-38.State, %state-38.State* %54, i64 0, i32 20
%56 = getelementptr inbounds i32, i32* %55, i64 0
%57 = load %state-38.State*, %state-38.State** %0, align 8
%58 = getelementptr inbounds %state-38.State, %state-38.State* %57, i64 0
%59 = getelementptr inbounds %state-38.State, %state-38.State* %58, i64 0, i32 21
%60 = getelementptr inbounds i32, i32* %59, i64 0
%61 = load %state-38.State*, %state-38.State** %0, align 8
%62 = getelementptr inbounds %state-38.State, %state-38.State* %61, i64 0
%63 = getelementptr inbounds %state-38.State, %state-38.State* %62, i64 0, i32 22
%64 = getelementptr inbounds i32, i32* %63, i64 0
call void @libgit2-29.lib_version(i32* %56, i32* %60, i32* %64, %Context* noalias nonnull %__.context_ptr)
; AssignStmt
%65 = load %state-38.State*, %state-38.State** %0, align 8
%66 = getelementptr inbounds %state-38.State, %state-38.State* %65, i64 0
%67 = getelementptr inbounds %state-38.State, %state-38.State* %66, i64 0, i32 23
; SelectorExpr
%68 = load %state-38.State*, %state-38.State** %0, align 8
%69 = getelementptr inbounds %state-38.State, %state-38.State* %68, i64 0
%70 = getelementptr inbounds %state-38.State, %state-38.State* %69, i64 0, i32 20
%71 = load i32, i32* %70, align 4
%72 = load %state-38.State*, %state-38.State** %0, align 8
%73 = getelementptr inbounds %state-38.State, %state-38.State* %72, i64 0
%74 = getelementptr inbounds %state-38.State, %state-38.State* %73, i64 0, i32 21
%75 = load i32, i32* %74, align 4
%76 = load %state-38.State*, %state-38.State** %0, align 8
%77 = getelementptr inbounds %state-38.State, %state-38.State* %76, i64 0
%78 = getelementptr inbounds %state-38.State, %state-38.State* %77, i64 0, i32 22
%79 = load i32, i32* %78, align 4
%80 = bitcast %..any* %2 to %..rawptr
%81 = call %..rawptr @__mem_zero(%..rawptr %80, i64 16)
store %..any zeroinitializer, %..any* %2
%82 = bitcast i32* %70 to %..rawptr
%83 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 11
%84 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 0
store %..rawptr %82, %..rawptr* %84
%85 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 1
store %Type_Info* %83, %Type_Info** %85
%86 = load %..any, %..any* %2, align 8
%87 = bitcast %..any* %3 to %..rawptr
%88 = call %..rawptr @__mem_zero(%..rawptr %87, i64 16)
store %..any zeroinitializer, %..any* %3
%89 = bitcast i32* %74 to %..rawptr
%90 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 11
%91 = getelementptr inbounds %..any, %..any* %3, i64 0, i32 0
store %..rawptr %89, %..rawptr* %91
%92 = getelementptr inbounds %..any, %..any* %3, i64 0, i32 1
store %Type_Info* %90, %Type_Info** %92
%93 = load %..any, %..any* %3, align 8
%94 = bitcast %..any* %4 to %..rawptr
%95 = call %..rawptr @__mem_zero(%..rawptr %94, i64 16)
store %..any zeroinitializer, %..any* %4
%96 = bitcast i32* %78 to %..rawptr
%97 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 11
%98 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 0
store %..rawptr %96, %..rawptr* %98
%99 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 1
store %Type_Info* %97, %Type_Info** %99
%100 = load %..any, %..any* %4, align 8
; variadic call argument generation
%101 = bitcast {%..any*, i64}* %5 to %..rawptr
%102 = call %..rawptr @__mem_zero(%..rawptr %101, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %5
%103 = bitcast [3 x %..any]* %6 to %..rawptr
%104 = call %..rawptr @__mem_zero(%..rawptr %103, i64 48)
store [3 x %..any] zeroinitializer, [3 x %..any]* %6
%105 = getelementptr inbounds [3 x %..any], [3 x %..any]* %6, i64 0, i32 0
store %..any %86, %..any* %105
%106 = getelementptr inbounds [3 x %..any], [3 x %..any]* %6, i64 0, i32 1
store %..any %93, %..any* %106
%107 = getelementptr inbounds [3 x %..any], [3 x %..any]* %6, i64 0, i32 2
store %..any %100, %..any* %107
%108 = getelementptr inbounds [3 x %..any], [3 x %..any]* %6, i64 0, i32 0
%109 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %5, i64 0, i32 0
store %..any* %108, %..any** %109
%110 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %5, i64 0, i32 1
store i64 3, i64* %110
%111 = load {%..any*, i64}, {%..any*, i64}* %5, align 8
%112 = bitcast {%..any*, i64}* %7 to %..rawptr
%113 = call %..rawptr @__mem_zero(%..rawptr %112, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %7
store {%..any*, i64} %111, {%..any*, i64}* %7
%114 = call %..string @fmt-11.aprintf(%..string {i8* getelementptr inbounds ([18 x i8], [18 x i8]* @__str$a2, i64 0, i32 0), i64 17}, {%..any*, i64}* %7, %Context* noalias nonnull %__.context_ptr)
store %..string %114, %..string* %67
; AssignStmt
; SelectorExpr
; SelectorExpr
%115 = call %time_util-22.Timer @time_util-22.create_timer(double 0x4004000000000000, i1 true, %Context* noalias nonnull %__.context_ptr)
store %time_util-22.Timer %115, %time_util-22.Timer* @status-39.status_refresh_timer
ret void
}
define void @main-0.begin_frame(%state-38.State* %state, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %state-38.State*, align 16
%1 = alloca %msg-46.MsgQuitMessage, align 16
%2 = alloca %msg-46.MsgChar, align 16
%3 = alloca %msg-46.MsgKey, align 16
%4 = alloca %msg-46.MsgMouseButton, align 16
%5 = alloca %msg-46.MsgWindowFocus, align 16
%6 = alloca %msg-46.MsgMouseMove, align 16
%7 = alloca %msg-46.MsgSizeChange, align 16
%8 = alloca %msg-46.MsgMouseWheel, align 16
store %state-38.State* %state, %state-38.State** %0
call void @debug-30.debug_reset(%Context* noalias nonnull %__.context_ptr)
; AssignStmt
; SelectorExpr
%9 = load %state-38.State*, %state-38.State** %0, align 8
%10 = getelementptr inbounds %state-38.State, %state-38.State* %9, i64 0
%11 = getelementptr inbounds %state-38.State, %state-38.State* %10, i64 0, i32 10
%12 = getelementptr inbounds %brew_imgui-23.FrameState, %brew_imgui-23.FrameState* %11, i64 0, i32 6
store i64 0, i64* %12
; ForStmt
br label %for.loop-1
for.loop-1:
; SelectorExpr
%13 = load %state-38.State*, %state-38.State** %0, align 8
%14 = getelementptr inbounds %state-38.State, %state-38.State* %13, i64 0
%15 = getelementptr inbounds %state-38.State, %state-38.State* %14, i64 0, i32 6
%16 = getelementptr inbounds %msg-46.Msg, %msg-46.Msg* %15, i64 0
%17 = call i8 @msg-46.poll_message(%msg-46.Msg* %16, %Context* noalias nonnull %__.context_ptr)
%18 = trunc i8 %17 to i1
br i1 %18, label %for.body-2, label %for.done-33
for.body-2:
; TypeSwitchStmt
%19 = load %state-38.State*, %state-38.State** %0, align 8
%20 = getelementptr inbounds %state-38.State, %state-38.State* %19, i64 0
%21 = getelementptr inbounds %state-38.State, %state-38.State* %20, i64 0, i32 6
%22 = load %msg-46.Msg, %msg-46.Msg* %21, align 8
; get union's tag
%23 = getelementptr inbounds %msg-46.Msg, %msg-46.Msg* %21, i64 0, i32 2 ; UnionTagPtr
%24 = load i8, i8* %23, align 1
%25 = bitcast %msg-46.Msg* %21 to %..rawptr
%26 = icmp eq i8 %24, 2
br i1 %26, label %typeswitch.body-4, label %typeswitch.next-3
typeswitch.next-3:
%27 = icmp eq i8 %24, 9
br i1 %27, label %typeswitch.body-6, label %typeswitch.next-5
typeswitch.body-4:
%28 = bitcast %..rawptr %25 to %msg-46.MsgQuitMessage*
%29 = load %msg-46.MsgQuitMessage, %msg-46.MsgQuitMessage* %28, align 8
store %msg-46.MsgQuitMessage %29, %msg-46.MsgQuitMessage* %1
; AssignStmt
%30 = load %state-38.State*, %state-38.State** %0, align 8
%31 = getelementptr inbounds %state-38.State, %state-38.State* %30, i64 0
%32 = getelementptr inbounds %state-38.State, %state-38.State* %31, i64 0, i32 0
store i8 0, i8* %32
br label %typeswitch.done-32
typeswitch.next-5:
%33 = icmp eq i8 %24, 3
br i1 %33, label %typeswitch.body-8, label %typeswitch.next-7
typeswitch.body-6:
%34 = bitcast %..rawptr %25 to %msg-46.MsgChar*
%35 = load %msg-46.MsgChar, %msg-46.MsgChar* %34, align 4
store %msg-46.MsgChar %35, %msg-46.MsgChar* %2
; SelectorExpr
; SelectorExpr
%36 = getelementptr inbounds %msg-46.MsgChar, %msg-46.MsgChar* %2, i64 0, i32 0
%37 = load i32, i32* %36, align 4
%38 = trunc i32 %37 to i16
call ccc void @ImGuiIO_AddInputCharacter(i16 %38)
br label %typeswitch.done-32
typeswitch.next-7:
%39 = icmp eq i8 %24, 7
br i1 %39, label %typeswitch.body-18, label %typeswitch.next-17
typeswitch.body-8:
%40 = bitcast %..rawptr %25 to %msg-46.MsgKey*
%41 = load %msg-46.MsgKey, %msg-46.MsgKey* %40, align 8
store %msg-46.MsgKey %41, %msg-46.MsgKey* %3
; SwitchStmt
; SelectorExpr
%42 = getelementptr inbounds %msg-46.MsgKey, %msg-46.MsgKey* %3, i64 0, i32 0
%43 = load i64, i64* %42, align 8
%44 = icmp eq i64 %43, 27
br i1 %44, label %switch.case.body-10, label %switch.case.next-9
switch.case.next-9:
%45 = icmp eq i64 %43, 160
br i1 %45, label %switch.fall.body-15, label %switch.case.next-14
switch.case.body-10:
; IfStmt
; SelectorExpr
%46 = getelementptr inbounds %msg-46.MsgKey, %msg-46.MsgKey* %3, i64 0, i32 1
%47 = load i8, i8* %46, align 1
%48 = trunc i8 %47 to i1
br i1 %48, label %cmp.and-11, label %if.done-13
cmp.and-11:
%49 = load %state-38.State*, %state-38.State** %0, align 8
%50 = getelementptr inbounds %state-38.State, %state-38.State* %49, i64 0
%51 = getelementptr inbounds %state-38.State, %state-38.State* %50, i64 0, i32 9
%52 = load i8, i8* %51, align 1
%53 = trunc i8 %52 to i1
br i1 %53, label %if.then-12, label %if.done-13
if.then-12:
; AssignStmt
%54 = load %state-38.State*, %state-38.State** %0, align 8
%55 = getelementptr inbounds %state-38.State, %state-38.State* %54, i64 0
%56 = getelementptr inbounds %state-38.State, %state-38.State* %55, i64 0, i32 0
store i8 0, i8* %56
br label %if.done-13
if.done-13:
br label %switch.done-16
switch.case.next-14:
br label %switch.done-16
switch.fall.body-15:
; AssignStmt
%57 = load %state-38.State*, %state-38.State** %0, align 8
%58 = getelementptr inbounds %state-38.State, %state-38.State* %57, i64 0
%59 = getelementptr inbounds %state-38.State, %state-38.State* %58, i64 0, i32 9
; SelectorExpr
%60 = getelementptr inbounds %msg-46.MsgKey, %msg-46.MsgKey* %3, i64 0, i32 1
%61 = load i8, i8* %60, align 1
store i8 %61, i8* %59
br label %switch.done-16
switch.done-16:
br label %typeswitch.done-32
typeswitch.next-17:
%62 = icmp eq i8 %24, 4
br i1 %62, label %typeswitch.body-25, label %typeswitch.next-24
typeswitch.body-18:
%63 = bitcast %..rawptr %25 to %msg-46.MsgMouseButton*
%64 = load %msg-46.MsgMouseButton, %msg-46.MsgMouseButton* %63, align 8
store %msg-46.MsgMouseButton %64, %msg-46.MsgMouseButton* %4
; SwitchStmt
; SelectorExpr
%65 = getelementptr inbounds %msg-46.MsgMouseButton, %msg-46.MsgMouseButton* %4, i64 0, i32 0
%66 = load i64, i64* %65, align 8
%67 = icmp eq i64 %66, 1
br i1 %67, label %switch.case.body-20, label %switch.case.next-19
switch.case.next-19:
%68 = icmp eq i64 %66, 2
br i1 %68, label %switch.fall.body-22, label %switch.case.next-21
switch.case.body-20:
; AssignStmt
%69 = load %state-38.State*, %state-38.State** %0, align 8
%70 = getelementptr inbounds %state-38.State, %state-38.State* %69, i64 0
%71 = getelementptr inbounds %state-38.State, %state-38.State* %70, i64 0, i32 11
; SelectorExpr
%72 = getelementptr inbounds %msg-46.MsgMouseButton, %msg-46.MsgMouseButton* %4, i64 0, i32 1
%73 = load i8, i8* %72, align 1
store i8 %73, i8* %71
br label %switch.done-23
switch.case.next-21:
br label %switch.done-23
switch.fall.body-22:
; AssignStmt
%74 = load %state-38.State*, %state-38.State** %0, align 8
%75 = getelementptr inbounds %state-38.State, %state-38.State* %74, i64 0
%76 = getelementptr inbounds %state-38.State, %state-38.State* %75, i64 0, i32 12
; SelectorExpr
%77 = getelementptr inbounds %msg-46.MsgMouseButton, %msg-46.MsgMouseButton* %4, i64 0, i32 1
%78 = load i8, i8* %77, align 1
store i8 %78, i8* %76
br label %switch.done-23
switch.done-23:
br label %typeswitch.done-32
typeswitch.next-24:
%79 = icmp eq i8 %24, 6
br i1 %79, label %typeswitch.body-27, label %typeswitch.next-26
typeswitch.body-25:
%80 = bitcast %..rawptr %25 to %msg-46.MsgWindowFocus*
%81 = load %msg-46.MsgWindowFocus, %msg-46.MsgWindowFocus* %80, align 1
store %msg-46.MsgWindowFocus %81, %msg-46.MsgWindowFocus* %5
; AssignStmt
; SelectorExpr
%82 = load %state-38.State*, %state-38.State** %0, align 8
%83 = getelementptr inbounds %state-38.State, %state-38.State* %82, i64 0
%84 = getelementptr inbounds %state-38.State, %state-38.State* %83, i64 0, i32 10
%85 = getelementptr inbounds %brew_imgui-23.FrameState, %brew_imgui-23.FrameState* %84, i64 0, i32 3
; SelectorExpr
%86 = getelementptr inbounds %msg-46.MsgWindowFocus, %msg-46.MsgWindowFocus* %5, i64 0, i32 0
%87 = load i8, i8* %86, align 1
store i8 %87, i8* %85
br label %typeswitch.done-32
typeswitch.next-26:
%88 = icmp eq i8 %24, 8
br i1 %88, label %typeswitch.body-29, label %typeswitch.next-28
typeswitch.body-27:
%89 = bitcast %..rawptr %25 to %msg-46.MsgMouseMove*
%90 = load %msg-46.MsgMouseMove, %msg-46.MsgMouseMove* %89, align 8
store %msg-46.MsgMouseMove %90, %msg-46.MsgMouseMove* %6
; AssignStmt
%91 = load %state-38.State*, %state-38.State** %0, align 8
%92 = getelementptr inbounds %state-38.State, %state-38.State* %91, i64 0
%93 = getelementptr inbounds %state-38.State, %state-38.State* %92, i64 0, i32 14
; SelectorExpr
%94 = getelementptr inbounds %msg-46.MsgMouseMove, %msg-46.MsgMouseMove* %6, i64 0, i32 0
%95 = load i64, i64* %94, align 8
store i64 %95, i64* %93
; AssignStmt
%96 = load %state-38.State*, %state-38.State** %0, align 8
%97 = getelementptr inbounds %state-38.State, %state-38.State* %96, i64 0
%98 = getelementptr inbounds %state-38.State, %state-38.State* %97, i64 0, i32 15
; SelectorExpr
%99 = getelementptr inbounds %msg-46.MsgMouseMove, %msg-46.MsgMouseMove* %6, i64 0, i32 1
%100 = load i64, i64* %99, align 8
store i64 %100, i64* %98
br label %typeswitch.done-32
typeswitch.next-28:
%101 = icmp eq i8 %24, 10
br i1 %101, label %typeswitch.body-31, label %typeswitch.next-30
typeswitch.body-29:
%102 = bitcast %..rawptr %25 to %msg-46.MsgSizeChange*
%103 = load %msg-46.MsgSizeChange, %msg-46.MsgSizeChange* %102, align 8
store %msg-46.MsgSizeChange %103, %msg-46.MsgSizeChange* %7
; AssignStmt
%104 = load %state-38.State*, %state-38.State** %0, align 8
%105 = getelementptr inbounds %state-38.State, %state-38.State* %104, i64 0
%106 = getelementptr inbounds %state-38.State, %state-38.State* %105, i64 0, i32 7
; SelectorExpr
%107 = getelementptr inbounds %msg-46.MsgSizeChange, %msg-46.MsgSizeChange* %7, i64 0, i32 0
%108 = load i64, i64* %107, align 8
store i64 %108, i64* %106
; AssignStmt
%109 = load %state-38.State*, %state-38.State** %0, align 8
%110 = getelementptr inbounds %state-38.State, %state-38.State* %109, i64 0
%111 = getelementptr inbounds %state-38.State, %state-38.State* %110, i64 0, i32 8
; SelectorExpr
%112 = getelementptr inbounds %msg-46.MsgSizeChange, %msg-46.MsgSizeChange* %7, i64 0, i32 1
%113 = load i64, i64* %112, align 8
store i64 %113, i64* %111
; SelectorExpr
%114 = load void (i32, i32, i32, i32)*, void (i32, i32, i32, i32)** @gl-24.viewport, align 8
%115 = load %state-38.State*, %state-38.State** %0, align 8
%116 = getelementptr inbounds %state-38.State, %state-38.State* %115, i64 0
%117 = getelementptr inbounds %state-38.State, %state-38.State* %116, i64 0, i32 7
%118 = load i64, i64* %117, align 8
%119 = trunc i64 %118 to i32
%120 = load %state-38.State*, %state-38.State** %0, align 8
%121 = getelementptr inbounds %state-38.State, %state-38.State* %120, i64 0
%122 = getelementptr inbounds %state-38.State, %state-38.State* %121, i64 0, i32 8
%123 = load i64, i64* %122, align 8
%124 = trunc i64 %123 to i32
call ccc void %114(i32 0, i32 0, i32 %119, i32 %124)
; SelectorExpr
%125 = load void (i32, i32, i32, i32)*, void (i32, i32, i32, i32)** @gl-24.scissor, align 8
%126 = load %state-38.State*, %state-38.State** %0, align 8
%127 = getelementptr inbounds %state-38.State, %state-38.State* %126, i64 0
%128 = getelementptr inbounds %state-38.State, %state-38.State* %127, i64 0, i32 7
%129 = load i64, i64* %128, align 8
%130 = trunc i64 %129 to i32
%131 = load %state-38.State*, %state-38.State** %0, align 8
%132 = getelementptr inbounds %state-38.State, %state-38.State* %131, i64 0
%133 = getelementptr inbounds %state-38.State, %state-38.State* %132, i64 0, i32 8
%134 = load i64, i64* %133, align 8
%135 = trunc i64 %134 to i32
call ccc void %125(i32 0, i32 0, i32 %130, i32 %135)
br label %typeswitch.done-32
typeswitch.next-30:
br label %typeswitch.done-32
typeswitch.body-31:
%136 = bitcast %..rawptr %25 to %msg-46.MsgMouseWheel*
%137 = load %msg-46.MsgMouseWheel, %msg-46.MsgMouseWheel* %136, align 8
store %msg-46.MsgMouseWheel %137, %msg-46.MsgMouseWheel* %8
; AssignStmt
; SelectorExpr
%138 = load %state-38.State*, %state-38.State** %0, align 8
%139 = getelementptr inbounds %state-38.State, %state-38.State* %138, i64 0
%140 = getelementptr inbounds %state-38.State, %state-38.State* %139, i64 0, i32 10
%141 = getelementptr inbounds %brew_imgui-23.FrameState, %brew_imgui-23.FrameState* %140, i64 0, i32 6
; SelectorExpr
%142 = getelementptr inbounds %msg-46.MsgMouseWheel, %msg-46.MsgMouseWheel* %8, i64 0, i32 0
%143 = load i64, i64* %142, align 8
store i64 %143, i64* %141
br label %typeswitch.done-32
typeswitch.done-32:
br label %for.loop-1
for.done-33:
; AssignStmt
%144 = load %state-38.State*, %state-38.State** %0, align 8
%145 = getelementptr inbounds %state-38.State, %state-38.State* %144, i64 0
%146 = getelementptr inbounds %state-38.State, %state-38.State* %145, i64 0, i32 1
; SelectorExpr
%147 = load %state-38.State*, %state-38.State** %0, align 8
%148 = getelementptr inbounds %state-38.State, %state-38.State* %147, i64 0
%149 = getelementptr inbounds %state-38.State, %state-38.State* %148, i64 0, i32 13
%150 = getelementptr inbounds %misc-49.TimeData, %misc-49.TimeData* %149, i64 0
%151 = call double @misc-49.time(%misc-49.TimeData* %150, %Context* noalias nonnull %__.context_ptr)
store double %151, double* %146
; AssignStmt
; SelectorExpr
%152 = load %state-38.State*, %state-38.State** %0, align 8
%153 = getelementptr inbounds %state-38.State, %state-38.State* %152, i64 0
%154 = getelementptr inbounds %state-38.State, %state-38.State* %153, i64 0, i32 10
%155 = getelementptr inbounds %brew_imgui-23.FrameState, %brew_imgui-23.FrameState* %154, i64 0, i32 0
%156 = load %state-38.State*, %state-38.State** %0, align 8
%157 = getelementptr inbounds %state-38.State, %state-38.State* %156, i64 0
%158 = getelementptr inbounds %state-38.State, %state-38.State* %157, i64 0, i32 1
%159 = load double, double* %158, align 8
%160 = fptrunc double %159 to float
store float %160, float* %155
; AssignStmt
; SelectorExpr
%161 = load %state-38.State*, %state-38.State** %0, align 8
%162 = getelementptr inbounds %state-38.State, %state-38.State* %161, i64 0
%163 = getelementptr inbounds %state-38.State, %state-38.State* %162, i64 0, i32 10
%164 = getelementptr inbounds %brew_imgui-23.FrameState, %brew_imgui-23.FrameState* %163, i64 0, i32 4
%165 = load %state-38.State*, %state-38.State** %0, align 8
%166 = getelementptr inbounds %state-38.State, %state-38.State* %165, i64 0
%167 = getelementptr inbounds %state-38.State, %state-38.State* %166, i64 0, i32 14
%168 = load i64, i64* %167, align 8
store i64 %168, i64* %164
; AssignStmt
; SelectorExpr
%169 = load %state-38.State*, %state-38.State** %0, align 8
%170 = getelementptr inbounds %state-38.State, %state-38.State* %169, i64 0
%171 = getelementptr inbounds %state-38.State, %state-38.State* %170, i64 0, i32 10
%172 = getelementptr inbounds %brew_imgui-23.FrameState, %brew_imgui-23.FrameState* %171, i64 0, i32 5
%173 = load %state-38.State*, %state-38.State** %0, align 8
%174 = getelementptr inbounds %state-38.State, %state-38.State* %173, i64 0
%175 = getelementptr inbounds %state-38.State, %state-38.State* %174, i64 0, i32 15
%176 = load i64, i64* %175, align 8
store i64 %176, i64* %172
; AssignStmt
; SelectorExpr
%177 = load %state-38.State*, %state-38.State** %0, align 8
%178 = getelementptr inbounds %state-38.State, %state-38.State* %177, i64 0
%179 = getelementptr inbounds %state-38.State, %state-38.State* %178, i64 0, i32 10
%180 = getelementptr inbounds %brew_imgui-23.FrameState, %brew_imgui-23.FrameState* %179, i64 0, i32 1
%181 = load %state-38.State*, %state-38.State** %0, align 8
%182 = getelementptr inbounds %state-38.State, %state-38.State* %181, i64 0
%183 = getelementptr inbounds %state-38.State, %state-38.State* %182, i64 0, i32 7
%184 = load i64, i64* %183, align 8
store i64 %184, i64* %180
; AssignStmt
; SelectorExpr
%185 = load %state-38.State*, %state-38.State** %0, align 8
%186 = getelementptr inbounds %state-38.State, %state-38.State* %185, i64 0
%187 = getelementptr inbounds %state-38.State, %state-38.State* %186, i64 0, i32 10
%188 = getelementptr inbounds %brew_imgui-23.FrameState, %brew_imgui-23.FrameState* %187, i64 0, i32 2
%189 = load %state-38.State*, %state-38.State** %0, align 8
%190 = getelementptr inbounds %state-38.State, %state-38.State* %189, i64 0
%191 = getelementptr inbounds %state-38.State, %state-38.State* %190, i64 0, i32 8
%192 = load i64, i64* %191, align 8
store i64 %192, i64* %188
; AssignStmt
; SelectorExpr
%193 = load %state-38.State*, %state-38.State** %0, align 8
%194 = getelementptr inbounds %state-38.State, %state-38.State* %193, i64 0
%195 = getelementptr inbounds %state-38.State, %state-38.State* %194, i64 0, i32 10
%196 = getelementptr inbounds %brew_imgui-23.FrameState, %brew_imgui-23.FrameState* %195, i64 0, i32 7
%197 = load %state-38.State*, %state-38.State** %0, align 8
%198 = getelementptr inbounds %state-38.State, %state-38.State* %197, i64 0
%199 = getelementptr inbounds %state-38.State, %state-38.State* %198, i64 0, i32 11
%200 = load i8, i8* %199, align 1
store i8 %200, i8* %196
; AssignStmt
; SelectorExpr
%201 = load %state-38.State*, %state-38.State** %0, align 8
%202 = getelementptr inbounds %state-38.State, %state-38.State* %201, i64 0
%203 = getelementptr inbounds %state-38.State, %state-38.State* %202, i64 0, i32 10
%204 = getelementptr inbounds %brew_imgui-23.FrameState, %brew_imgui-23.FrameState* %203, i64 0, i32 8
%205 = load %state-38.State*, %state-38.State** %0, align 8
%206 = getelementptr inbounds %state-38.State, %state-38.State* %205, i64 0
%207 = getelementptr inbounds %state-38.State, %state-38.State* %206, i64 0, i32 12
%208 = load i8, i8* %207, align 1
store i8 %208, i8* %204
; SelectorExpr
call void @gl-24.clear(i32 16640, %Context* noalias nonnull %__.context_ptr)
; SelectorExpr
%209 = load %state-38.State*, %state-38.State** %0, align 8
%210 = getelementptr inbounds %state-38.State, %state-38.State* %209, i64 0
%211 = getelementptr inbounds %state-38.State, %state-38.State* %210, i64 0, i32 10
%212 = getelementptr inbounds %brew_imgui-23.FrameState, %brew_imgui-23.FrameState* %211, i64 0
call void @brew_imgui-23.begin_new_frame(%brew_imgui-23.FrameState* %212, %Context* noalias nonnull %__.context_ptr)
ret void
}
define void @main-0.end_frame(%state-38.State* %state, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %state-38.State*, align 16
%1 = alloca %dear_imgui-50.IO*, align 16
store %state-38.State* %state, %state-38.State** %0
; io
; SelectorExpr
%2 = call ccc %dear_imgui-50.IO* @igGetIO()
store %dear_imgui-50.IO* %2, %dear_imgui-50.IO** %1
; IfStmt
; SelectorExpr
%3 = load %dear_imgui-50.IO*, %dear_imgui-50.IO** %1, align 8
%4 = getelementptr inbounds %dear_imgui-50.IO, %dear_imgui-50.IO* %3, i64 0
%5 = getelementptr inbounds %dear_imgui-50.IO, %dear_imgui-50.IO* %4, i64 0, i32 39
%6 = load i8, i8* %5, align 1
%7 = trunc i8 %6 to i1
br i1 %7, label %if.then-1, label %if.done-2
if.then-1:
call void @main-0.set_cursor(%Context* noalias nonnull %__.context_ptr)
br label %if.done-2
if.done-2:
; SelectorExpr
%8 = load %state-38.State*, %state-38.State** %0, align 8
%9 = getelementptr inbounds %state-38.State, %state-38.State* %8, i64 0
%10 = getelementptr inbounds %state-38.State, %state-38.State* %9, i64 0, i32 5
%11 = load %brew_imgui-23.State*, %brew_imgui-23.State** %10, align 8
%12 = load %state-38.State*, %state-38.State** %0, align 8
%13 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0
%14 = getelementptr inbounds %state-38.State, %state-38.State* %13, i64 0, i32 7
%15 = load i64, i64* %14, align 8
%16 = load %state-38.State*, %state-38.State** %0, align 8
%17 = getelementptr inbounds %state-38.State, %state-38.State* %16, i64 0
%18 = getelementptr inbounds %state-38.State, %state-38.State* %17, i64 0, i32 8
%19 = load i64, i64* %18, align 8
call void @brew_imgui-23.render_proc(%brew_imgui-23.State* %11, i1 true, i64 %15, i64 %19, %Context* noalias nonnull %__.context_ptr)
; SelectorExpr
%20 = load %state-38.State*, %state-38.State** %0, align 8
%21 = getelementptr inbounds %state-38.State, %state-38.State* %20, i64 0
%22 = getelementptr inbounds %state-38.State, %state-38.State* %21, i64 0, i32 3
%23 = load %..rawptr, %..rawptr* %22, align 8
call void @window-45.swap_buffers(%..rawptr %23, %Context* noalias nonnull %__.context_ptr)
ret void
}
define void @main-0.main_menu(%state-38.State* %state, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %state-38.State*, align 16
%1 = alloca i8, align 16
%2 = alloca i8, align 16
%3 = alloca i8, align 16
%4 = alloca %..string, align 16
%5 = alloca i64, align 16
%6 = alloca {i8*, i64}, align 16
%7 = alloca {%..any*, i64}, align 16
%8 = alloca {i8*, i64}, align 16
%9 = alloca {%..any*, i64}, align 16
%10 = alloca {i8*, i64}, align 16
%11 = alloca {%..any*, i64}, align 16
%12 = alloca {i8*, i64}, align 16
%13 = alloca {%..any*, i64}, align 16
%14 = alloca {i8*, i64}, align 16
%15 = alloca {%..any*, i64}, align 16
%16 = alloca {i8*, i64}, align 16
%17 = alloca {%..any*, i64}, align 16
%18 = alloca {i8*, i64}, align 16
%19 = alloca {%..any*, i64}, align 16
%20 = alloca {i8*, i64}, align 16
%21 = alloca {%..any*, i64}, align 16
%22 = alloca {i8*, i64}, align 16
%23 = alloca {i8*, i64}, align 16
%24 = alloca {i8*, i64}, align 16
%25 = alloca {i8*, i64}, align 16
%26 = alloca %dear_imgui-50.Vec2, align 16
%27 = alloca %libgit2_types-55.Clone_Options, align 16
%28 = alloca i32, align 16
%29 = alloca %Source_Code_Location, align 16
%30 = alloca %libgit2_types-55.Repository*, align 16
%31 = alloca i32, align 16
%32 = alloca {i8*, i64}, align 16
%33 = alloca %..string, align 16
%34 = alloca {i8*, i64}, align 16
%35 = alloca %..string, align 16
%36 = alloca %Source_Code_Location, align 16
%37 = alloca %dear_imgui-50.Vec2, align 16
%38 = alloca {i8*, i64}, align 16
%39 = alloca {i8*, i64}, align 16
%40 = alloca {i8*, i64}, align 16
%41 = alloca {i8*, i64}, align 16
%42 = alloca %dear_imgui-50.Vec2, align 16
%43 = alloca %..string, align 16
%44 = alloca %..string, align 16
%45 = alloca %dear_imgui-50.Vec2, align 16
%46 = alloca {i8*, i64}, align 16
%47 = alloca {i8*, i64}, align 16
%48 = alloca {i8*, i64}, align 16
%49 = alloca {i8*, i64}, align 16
%50 = alloca %dear_imgui-50.Vec2, align 16
%51 = alloca %..string, align 16
%52 = alloca %..string, align 16
%53 = alloca %dear_imgui-50.Vec2, align 16
store %state-38.State* %state, %state-38.State** %0
; open_set_signature
store i8 0, i8* %1
; open_clone_menu
store i8 0, i8* %2
; open_set_user
store i8 0, i8* %3
; IfStmt
; SelectorExpr
%54 = call ccc i8 @igBeginMainMenuBar()
%55 = trunc i8 %54 to i1
br i1 %55, label %if.then-1, label %if.done-25
if.then-1:
; DeferStmt
; IfStmt
; SelectorExpr
%56 = call i8 @dear_imgui-50.begin_menu(%..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$a3, i64 0, i32 0), i64 4}, i1 true, %Context* noalias nonnull %__.context_ptr)
%57 = trunc i8 %56 to i1
br i1 %57, label %if.then-2, label %if.done-14
if.then-2:
; DeferStmt
; IfStmt
; SelectorExpr
%58 = call i8 @dear_imgui-50.menu_item1(%..string {i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__str$a4, i64 0, i32 0), i64 8}, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$a5, i64 0, i32 0), i64 1}, i1 false, i1 true, %Context* noalias nonnull %__.context_ptr)
%59 = trunc i8 %58 to i1
br i1 %59, label %if.then-3, label %if.done-4
if.then-3:
; AssignStmt
store i8 1, i8* %2
br label %if.done-4
if.done-4:
; IfStmt
; SelectorExpr
; SelectorExpr
; SelectorExpr
%60 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 5
%61 = load {%..string*, i64, i64, %Allocator}, {%..string*, i64, i64, %Allocator}* %60, align 8
%62 = extractvalue {%..string*, i64, i64, %Allocator} %61, 1
%63 = icmp sgt i64 %62, 0
%64 = zext i1 %63 to i8
%65 = trunc i8 %64 to i1
%66 = call i8 @dear_imgui-50.begin_menu(%..string {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$a6, i64 0, i32 0), i64 13}, i1 %65, %Context* noalias nonnull %__.context_ptr)
%67 = trunc i8 %66 to i1
br i1 %67, label %if.then-5, label %if.done-11
if.then-5:
; DeferStmt
; RangeStmt
; s
%68 = bitcast %..string* %4 to %..rawptr
%69 = call %..rawptr @__mem_zero(%..rawptr %68, i64 16)
store %..string zeroinitializer, %..string* %4
; SelectorExpr
; SelectorExpr
%70 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 5
%71 = getelementptr inbounds {%..string*, i64, i64, %Allocator}, {%..string*, i64, i64, %Allocator}* %70, i64 0, i32 1
%72 = bitcast i64* %5 to %..rawptr
%73 = call %..rawptr @__mem_zero(%..rawptr %72, i64 8)
store i64 zeroinitializer, i64* %5
store i64 -1, i64* %5
br label %for.index.loop-6
for.index.loop-6:
%74 = load i64, i64* %5, align 8
%75 = add i64 %74, 1
store i64 %75, i64* %5
%76 = load i64, i64* %71, align 8
%77 = icmp slt i64 %75, %76
br i1 %77, label %for.index.body-7, label %for.index.done-10
for.index.body-7:
%78 = load i64, i64* %5, align 8
%79 = getelementptr inbounds {%..string*, i64, i64, %Allocator}, {%..string*, i64, i64, %Allocator}* %70, i64 0, i32 0
%80 = load %..string*, %..string** %79, align 8
%81 = getelementptr inbounds %..string, %..string* %80, i64 %78
%82 = load %..string, %..string* %81, align 8
store %..string %82, %..string* %4
; IfStmt
; SelectorExpr
%83 = load %..string, %..string* %4, align 8
%84 = call i8 @dear_imgui-50.menu_item1(%..string %83, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$a7, i64 0, i32 0), i64 1}, i1 false, i1 true, %Context* noalias nonnull %__.context_ptr)
%85 = trunc i8 %84 to i1
br i1 %85, label %if.then-8, label %if.done-9
if.then-8:
; AssignStmt
%86 = load %state-38.State*, %state-38.State** %0, align 8
%87 = getelementptr inbounds %state-38.State, %state-38.State* %86, i64 0
%88 = getelementptr inbounds %state-38.State, %state-38.State* %87, i64 0, i32 37
store i8 1, i8* %88
; AssignStmt
%89 = load %state-38.State*, %state-38.State** %0, align 8
%90 = getelementptr inbounds %state-38.State, %state-38.State* %89, i64 0
%91 = getelementptr inbounds %state-38.State, %state-38.State* %90, i64 0, i32 38
%92 = load %..string, %..string* %4, align 8
store %..string %92, %..string* %91
br label %if.done-9
if.done-9:
br label %for.index.loop-6
for.index.done-10:
; defer
; SelectorExpr
call ccc void @igEndMenu()
br label %if.done-11
if.done-11:
; SelectorExpr
call ccc void @igSeparator()
; IfStmt
; SelectorExpr
%93 = call i8 @dear_imgui-50.menu_item1(%..string {i8* getelementptr inbounds ([6 x i8], [6 x i8]* @__str$a8, i64 0, i32 0), i64 5}, %..string {i8* getelementptr inbounds ([10 x i8], [10 x i8]* @__str$a9, i64 0, i32 0), i64 9}, i1 false, i1 true, %Context* noalias nonnull %__.context_ptr)
%94 = trunc i8 %93 to i1
br i1 %94, label %if.then-12, label %if.done-13
if.then-12:
; AssignStmt
%95 = load %state-38.State*, %state-38.State** %0, align 8
%96 = getelementptr inbounds %state-38.State, %state-38.State* %95, i64 0
%97 = getelementptr inbounds %state-38.State, %state-38.State* %96, i64 0, i32 0
store i8 0, i8* %97
br label %if.done-13
if.done-13:
; defer
; SelectorExpr
call ccc void @igEndMenu()
br label %if.done-14
if.done-14:
; IfStmt
; SelectorExpr
%98 = call i8 @dear_imgui-50.begin_menu(%..string {i8* getelementptr inbounds ([12 x i8], [12 x i8]* @__str$aa, i64 0, i32 0), i64 11}, i1 true, %Context* noalias nonnull %__.context_ptr)
%99 = trunc i8 %98 to i1
br i1 %99, label %if.then-15, label %if.done-22
if.then-15:
; DeferStmt
; SelectorExpr
%100 = load %state-38.State*, %state-38.State** %0, align 8
%101 = getelementptr inbounds %state-38.State, %state-38.State* %100, i64 0
%102 = getelementptr inbounds %state-38.State, %state-38.State* %101, i64 0, i32 18
%103 = getelementptr inbounds i8, i8* %102, i64 0
%104 = call i8 @dear_imgui-50.checkbox(%..string {i8* getelementptr inbounds ([13 x i8], [13 x i8]* @__str$ab, i64 0, i32 0), i64 12}, i8* %103, %Context* noalias nonnull %__.context_ptr)
; SelectorExpr
%105 = load %state-38.State*, %state-38.State** %0, align 8
%106 = getelementptr inbounds %state-38.State, %state-38.State* %105, i64 0
%107 = getelementptr inbounds %state-38.State, %state-38.State* %106, i64 0, i32 19
%108 = getelementptr inbounds i8, i8* %107, i64 0
%109 = call i8 @dear_imgui-50.checkbox(%..string {i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__str$ac, i64 0, i32 0), i64 16}, i8* %108, %Context* noalias nonnull %__.context_ptr)
; IfStmt
; SelectorExpr
; SelectorExpr
; SelectorExpr
%110 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 4
%111 = getelementptr inbounds i8, i8* %110, i64 0
%112 = call i8 @dear_imgui-50.checkbox(%..string {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$ad, i64 0, i32 0), i64 13}, i8* %111, %Context* noalias nonnull %__.context_ptr)
%113 = trunc i8 %112 to i1
br i1 %113, label %if.then-16, label %if.done-17
if.then-16:
; SelectorExpr
call void @settings-36.save(%Context* noalias nonnull %__.context_ptr)
br label %if.done-17
if.done-17:
; IfStmt
; SelectorExpr
%114 = call i8 @dear_imgui-50.menu_item1(%..string {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$ae, i64 0, i32 0), i64 13}, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$af, i64 0, i32 0), i64 1}, i1 false, i1 true, %Context* noalias nonnull %__.context_ptr)
%115 = trunc i8 %114 to i1
br i1 %115, label %if.then-18, label %if.done-19
if.then-18:
; AssignStmt
store i8 1, i8* %1
br label %if.done-19
if.done-19:
; IfStmt
; SelectorExpr
%116 = call i8 @dear_imgui-50.menu_item1(%..string {i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__str$b0, i64 0, i32 0), i64 8}, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$b1, i64 0, i32 0), i64 1}, i1 false, i1 true, %Context* noalias nonnull %__.context_ptr)
%117 = trunc i8 %116 to i1
br i1 %117, label %if.then-20, label %if.done-21
if.then-20:
; AssignStmt
store i8 1, i8* %3
br label %if.done-21
if.done-21:
; defer
; SelectorExpr
call ccc void @igEndMenu()
br label %if.done-22
if.done-22:
; IfStmt
; SelectorExpr
%118 = call i8 @dear_imgui-50.begin_menu(%..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$b2, i64 0, i32 0), i64 4}, i1 true, %Context* noalias nonnull %__.context_ptr)
%119 = trunc i8 %118 to i1
br i1 %119, label %if.then-23, label %if.done-24
if.then-23:
; DeferStmt
; SelectorExpr
%120 = call i8 @dear_imgui-50.menu_item1(%..string {i8* getelementptr inbounds ([21 x i8], [21 x i8]* @__str$b3, i64 0, i32 0), i64 20}, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$b4, i64 0, i32 0), i64 1}, i1 false, i1 false, %Context* noalias nonnull %__.context_ptr)
; SelectorExpr
%121 = load %state-38.State*, %state-38.State** %0, align 8
%122 = getelementptr inbounds %state-38.State, %state-38.State* %121, i64 0
%123 = getelementptr inbounds %state-38.State, %state-38.State* %122, i64 0, i32 23
%124 = load %..string, %..string* %123, align 8
%125 = call i8 @dear_imgui-50.menu_item1(%..string %124, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$b5, i64 0, i32 0), i64 1}, i1 false, i1 false, %Context* noalias nonnull %__.context_ptr)
; defer
; SelectorExpr
call ccc void @igEndMenu()
br label %if.done-24
if.done-24:
; defer
; SelectorExpr
call ccc void @igEndMainMenuBar()
br label %if.done-25
if.done-25:
; IfStmt
%126 = load i8, i8* %1, align 1
%127 = trunc i8 %126 to i1
br i1 %127, label %if.then-26, label %if.done-33
if.then-26:
; IfStmt
; SelectorExpr
; SelectorExpr
%128 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 0
%129 = load %..string, %..string* %128, align 8
%130 = extractvalue %..string %129, 1
%131 = icmp sgt i64 %130, 0
%132 = zext i1 %131 to i8
%133 = trunc i8 %132 to i1
br i1 %133, label %if.then-27, label %if.else-28
if.then-27:
; SelectorExpr
; SliceExpr
%134 = load %state-38.State*, %state-38.State** %0, align 8
%135 = getelementptr inbounds %state-38.State, %state-38.State* %134, i64 0
%136 = getelementptr inbounds %state-38.State, %state-38.State* %135, i64 0, i32 33
%137 = load [1024 x i8], [1024 x i8]* %136, align 1
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$b6, i64 0, i32 0), i64 50}, i64 417, i64 71, i64 0, i64 1024, i64 1024)
%138 = getelementptr inbounds [1024 x i8], [1024 x i8]* %136, i64 0, i32 0
%139 = getelementptr inbounds i8, i8* %138, i64 0
%140 = sub i64 1024, 0
%141 = bitcast {i8*, i64}* %6 to %..rawptr
%142 = call %..rawptr @__mem_zero(%..rawptr %141, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %6
%143 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %6, i64 0, i32 0
store i8* %139, i8** %143
%144 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %6, i64 0, i32 1
store i64 %140, i64* %144
%145 = load {i8*, i64}, {i8*, i64}* %6, align 8
; SelectorExpr
; SelectorExpr
%146 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 2
%147 = load %..string, %..string* %146, align 8
; variadic call argument generation
%148 = bitcast {%..any*, i64}* %7 to %..rawptr
%149 = call %..rawptr @__mem_zero(%..rawptr %148, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %7
%150 = load {%..any*, i64}, {%..any*, i64}* %7, align 8
%151 = bitcast {i8*, i64}* %8 to %..rawptr
%152 = call %..rawptr @__mem_zero(%..rawptr %151, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %8
store {i8*, i64} %145, {i8*, i64}* %8
%153 = bitcast {%..any*, i64}* %9 to %..rawptr
%154 = call %..rawptr @__mem_zero(%..rawptr %153, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %9
store {%..any*, i64} %150, {%..any*, i64}* %9
%155 = call %..string @fmt-11.bprintf({i8*, i64}* %8, %..string %147, {%..any*, i64}* %9, %Context* noalias nonnull %__.context_ptr)
br label %if.done-29
if.else-28:
; SelectorExpr
; IndexExpr
%156 = load %state-38.State*, %state-38.State** %0, align 8
%157 = getelementptr inbounds %state-38.State, %state-38.State* %156, i64 0
%158 = getelementptr inbounds %state-38.State, %state-38.State* %157, i64 0, i32 33
%159 = getelementptr inbounds [1024 x i8], [1024 x i8]* %158, i64 0, i32 0
%160 = getelementptr inbounds i8, i8* %159, i64 0
%161 = bitcast i8* %160 to %..rawptr
%162 = call %..rawptr @mem-10.zero(%..rawptr %161, i64 1024)
br label %if.done-29
if.done-29:
; IfStmt
; SelectorExpr
; SelectorExpr
%163 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 1
%164 = load %..string, %..string* %163, align 8
%165 = extractvalue %..string %164, 1
%166 = icmp sgt i64 %165, 0
%167 = zext i1 %166 to i8
%168 = trunc i8 %167 to i1
br i1 %168, label %if.then-30, label %if.else-31
if.then-30:
; SelectorExpr
; SliceExpr
%169 = load %state-38.State*, %state-38.State** %0, align 8
%170 = getelementptr inbounds %state-38.State, %state-38.State* %169, i64 0
%171 = getelementptr inbounds %state-38.State, %state-38.State* %170, i64 0, i32 34
%172 = load [1024 x i8], [1024 x i8]* %171, align 1
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$b7, i64 0, i32 0), i64 50}, i64 419, i64 72, i64 0, i64 1024, i64 1024)
%173 = getelementptr inbounds [1024 x i8], [1024 x i8]* %171, i64 0, i32 0
%174 = getelementptr inbounds i8, i8* %173, i64 0
%175 = sub i64 1024, 0
%176 = bitcast {i8*, i64}* %10 to %..rawptr
%177 = call %..rawptr @__mem_zero(%..rawptr %176, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %10
%178 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %10, i64 0, i32 0
store i8* %174, i8** %178
%179 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %10, i64 0, i32 1
store i64 %175, i64* %179
%180 = load {i8*, i64}, {i8*, i64}* %10, align 8
; SelectorExpr
; SelectorExpr
%181 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 3
%182 = load %..string, %..string* %181, align 8
; variadic call argument generation
%183 = bitcast {%..any*, i64}* %11 to %..rawptr
%184 = call %..rawptr @__mem_zero(%..rawptr %183, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %11
%185 = load {%..any*, i64}, {%..any*, i64}* %11, align 8
%186 = bitcast {i8*, i64}* %12 to %..rawptr
%187 = call %..rawptr @__mem_zero(%..rawptr %186, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %12
store {i8*, i64} %180, {i8*, i64}* %12
%188 = bitcast {%..any*, i64}* %13 to %..rawptr
%189 = call %..rawptr @__mem_zero(%..rawptr %188, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %13
store {%..any*, i64} %185, {%..any*, i64}* %13
%190 = call %..string @fmt-11.bprintf({i8*, i64}* %12, %..string %182, {%..any*, i64}* %13, %Context* noalias nonnull %__.context_ptr)
br label %if.done-32
if.else-31:
; SelectorExpr
; IndexExpr
%191 = load %state-38.State*, %state-38.State** %0, align 8
%192 = getelementptr inbounds %state-38.State, %state-38.State* %191, i64 0
%193 = getelementptr inbounds %state-38.State, %state-38.State* %192, i64 0, i32 34
%194 = getelementptr inbounds [1024 x i8], [1024 x i8]* %193, i64 0, i32 0
%195 = getelementptr inbounds i8, i8* %194, i64 0
%196 = bitcast i8* %195 to %..rawptr
%197 = call %..rawptr @mem-10.zero(%..rawptr %196, i64 1024)
br label %if.done-32
if.done-32:
; SelectorExpr
call void @dear_imgui-50.open_popup(%..string {i8* getelementptr inbounds ([21 x i8], [21 x i8]* @__str$b8, i64 0, i32 0), i64 20}, %Context* noalias nonnull %__.context_ptr)
br label %if.done-33
if.done-33:
; IfStmt
%198 = load i8, i8* %3, align 1
%199 = trunc i8 %198 to i1
br i1 %199, label %if.then-34, label %if.done-41
if.then-34:
; IfStmt
; SelectorExpr
; SelectorExpr
%200 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 0
%201 = load %..string, %..string* %200, align 8
%202 = extractvalue %..string %201, 1
%203 = icmp sgt i64 %202, 0
%204 = zext i1 %203 to i8
%205 = trunc i8 %204 to i1
br i1 %205, label %if.then-35, label %if.else-36
if.then-35:
; SelectorExpr
; SliceExpr
%206 = load %state-38.State*, %state-38.State** %0, align 8
%207 = getelementptr inbounds %state-38.State, %state-38.State* %206, i64 0
%208 = getelementptr inbounds %state-38.State, %state-38.State* %207, i64 0, i32 31
%209 = load [1024 x i8], [1024 x i8]* %208, align 1
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$b9, i64 0, i32 0), i64 50}, i64 425, i64 75, i64 0, i64 1024, i64 1024)
%210 = getelementptr inbounds [1024 x i8], [1024 x i8]* %208, i64 0, i32 0
%211 = getelementptr inbounds i8, i8* %210, i64 0
%212 = sub i64 1024, 0
%213 = bitcast {i8*, i64}* %14 to %..rawptr
%214 = call %..rawptr @__mem_zero(%..rawptr %213, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %14
%215 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %14, i64 0, i32 0
store i8* %211, i8** %215
%216 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %14, i64 0, i32 1
store i64 %212, i64* %216
%217 = load {i8*, i64}, {i8*, i64}* %14, align 8
; SelectorExpr
; SelectorExpr
%218 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 0
%219 = load %..string, %..string* %218, align 8
; variadic call argument generation
%220 = bitcast {%..any*, i64}* %15 to %..rawptr
%221 = call %..rawptr @__mem_zero(%..rawptr %220, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %15
%222 = load {%..any*, i64}, {%..any*, i64}* %15, align 8
%223 = bitcast {i8*, i64}* %16 to %..rawptr
%224 = call %..rawptr @__mem_zero(%..rawptr %223, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %16
store {i8*, i64} %217, {i8*, i64}* %16
%225 = bitcast {%..any*, i64}* %17 to %..rawptr
%226 = call %..rawptr @__mem_zero(%..rawptr %225, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %17
store {%..any*, i64} %222, {%..any*, i64}* %17
%227 = call %..string @fmt-11.bprintf({i8*, i64}* %16, %..string %219, {%..any*, i64}* %17, %Context* noalias nonnull %__.context_ptr)
br label %if.done-37
if.else-36:
; SelectorExpr
; IndexExpr
%228 = load %state-38.State*, %state-38.State** %0, align 8
%229 = getelementptr inbounds %state-38.State, %state-38.State* %228, i64 0
%230 = getelementptr inbounds %state-38.State, %state-38.State* %229, i64 0, i32 31
%231 = getelementptr inbounds [1024 x i8], [1024 x i8]* %230, i64 0, i32 0
%232 = getelementptr inbounds i8, i8* %231, i64 0
%233 = bitcast i8* %232 to %..rawptr
%234 = call %..rawptr @mem-10.zero(%..rawptr %233, i64 1024)
br label %if.done-37
if.done-37:
; IfStmt
; SelectorExpr
; SelectorExpr
%235 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 1
%236 = load %..string, %..string* %235, align 8
%237 = extractvalue %..string %236, 1
%238 = icmp sgt i64 %237, 0
%239 = zext i1 %238 to i8
%240 = trunc i8 %239 to i1
br i1 %240, label %if.then-38, label %if.else-39
if.then-38:
; SelectorExpr
; SliceExpr
%241 = load %state-38.State*, %state-38.State** %0, align 8
%242 = getelementptr inbounds %state-38.State, %state-38.State* %241, i64 0
%243 = getelementptr inbounds %state-38.State, %state-38.State* %242, i64 0, i32 32
%244 = load [1024 x i8], [1024 x i8]* %243, align 1
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$ba, i64 0, i32 0), i64 50}, i64 427, i64 75, i64 0, i64 1024, i64 1024)
%245 = getelementptr inbounds [1024 x i8], [1024 x i8]* %243, i64 0, i32 0
%246 = getelementptr inbounds i8, i8* %245, i64 0
%247 = sub i64 1024, 0
%248 = bitcast {i8*, i64}* %18 to %..rawptr
%249 = call %..rawptr @__mem_zero(%..rawptr %248, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %18
%250 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %18, i64 0, i32 0
store i8* %246, i8** %250
%251 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %18, i64 0, i32 1
store i64 %247, i64* %251
%252 = load {i8*, i64}, {i8*, i64}* %18, align 8
; SelectorExpr
; SelectorExpr
%253 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 1
%254 = load %..string, %..string* %253, align 8
; variadic call argument generation
%255 = bitcast {%..any*, i64}* %19 to %..rawptr
%256 = call %..rawptr @__mem_zero(%..rawptr %255, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %19
%257 = load {%..any*, i64}, {%..any*, i64}* %19, align 8
%258 = bitcast {i8*, i64}* %20 to %..rawptr
%259 = call %..rawptr @__mem_zero(%..rawptr %258, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %20
store {i8*, i64} %252, {i8*, i64}* %20
%260 = bitcast {%..any*, i64}* %21 to %..rawptr
%261 = call %..rawptr @__mem_zero(%..rawptr %260, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %21
store {%..any*, i64} %257, {%..any*, i64}* %21
%262 = call %..string @fmt-11.bprintf({i8*, i64}* %20, %..string %254, {%..any*, i64}* %21, %Context* noalias nonnull %__.context_ptr)
br label %if.done-40
if.else-39:
; SelectorExpr
; IndexExpr
%263 = load %state-38.State*, %state-38.State** %0, align 8
%264 = getelementptr inbounds %state-38.State, %state-38.State* %263, i64 0
%265 = getelementptr inbounds %state-38.State, %state-38.State* %264, i64 0, i32 32
%266 = getelementptr inbounds [1024 x i8], [1024 x i8]* %265, i64 0, i32 0
%267 = getelementptr inbounds i8, i8* %266, i64 0
%268 = bitcast i8* %267 to %..rawptr
%269 = call %..rawptr @mem-10.zero(%..rawptr %268, i64 1024)
br label %if.done-40
if.done-40:
; SelectorExpr
call void @dear_imgui-50.open_popup(%..string {i8* getelementptr inbounds ([16 x i8], [16 x i8]* @__str$bb, i64 0, i32 0), i64 15}, %Context* noalias nonnull %__.context_ptr)
br label %if.done-41
if.done-41:
; IfStmt
%270 = load i8, i8* %2, align 1
%271 = trunc i8 %270 to i1
br i1 %271, label %if.then-42, label %if.done-43
if.then-42:
; SelectorExpr
; IndexExpr
%272 = load %state-38.State*, %state-38.State** %0, align 8
%273 = getelementptr inbounds %state-38.State, %state-38.State* %272, i64 0
%274 = getelementptr inbounds %state-38.State, %state-38.State* %273, i64 0, i32 35
%275 = getelementptr inbounds [1024 x i8], [1024 x i8]* %274, i64 0, i32 0
%276 = getelementptr inbounds i8, i8* %275, i64 0
%277 = bitcast i8* %276 to %..rawptr
%278 = call %..rawptr @mem-10.zero(%..rawptr %277, i64 1024)
; SelectorExpr
; IndexExpr
%279 = load %state-38.State*, %state-38.State** %0, align 8
%280 = getelementptr inbounds %state-38.State, %state-38.State* %279, i64 0
%281 = getelementptr inbounds %state-38.State, %state-38.State* %280, i64 0, i32 36
%282 = getelementptr inbounds [1024 x i8], [1024 x i8]* %281, i64 0, i32 0
%283 = getelementptr inbounds i8, i8* %282, i64 0
%284 = bitcast i8* %283 to %..rawptr
%285 = call %..rawptr @mem-10.zero(%..rawptr %284, i64 1024)
; SelectorExpr
call void @dear_imgui-50.open_popup(%..string {i8* getelementptr inbounds ([18 x i8], [18 x i8]* @__str$bc, i64 0, i32 0), i64 17}, %Context* noalias nonnull %__.context_ptr)
br label %if.done-43
if.done-43:
; IfStmt
; SelectorExpr
%286 = call i8 @dear_imgui-50.begin_popup_modal(%..string {i8* getelementptr inbounds ([18 x i8], [18 x i8]* @__str$bd, i64 0, i32 0), i64 17}, i8* zeroinitializer, i32 64, %Context* noalias nonnull %__.context_ptr)
%287 = trunc i8 %286 to i1
br i1 %287, label %if.then-44, label %if.done-53
if.then-44:
; DeferStmt
; SelectorExpr
; SliceExpr
%288 = load %state-38.State*, %state-38.State** %0, align 8
%289 = getelementptr inbounds %state-38.State, %state-38.State* %288, i64 0
%290 = getelementptr inbounds %state-38.State, %state-38.State* %289, i64 0, i32 35
%291 = load [1024 x i8], [1024 x i8]* %290, align 1
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$be, i64 0, i32 0), i64 50}, i64 440, i64 47, i64 0, i64 1024, i64 1024)
%292 = getelementptr inbounds [1024 x i8], [1024 x i8]* %290, i64 0, i32 0
%293 = getelementptr inbounds i8, i8* %292, i64 0
%294 = sub i64 1024, 0
%295 = bitcast {i8*, i64}* %22 to %..rawptr
%296 = call %..rawptr @__mem_zero(%..rawptr %295, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %22
%297 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %22, i64 0, i32 0
store i8* %293, i8** %297
%298 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %22, i64 0, i32 1
store i64 %294, i64* %298
%299 = load {i8*, i64}, {i8*, i64}* %22, align 8
%300 = bitcast {i8*, i64}* %23 to %..rawptr
%301 = call %..rawptr @__mem_zero(%..rawptr %300, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %23
store {i8*, i64} %299, {i8*, i64}* %23
%302 = call i8 @dear_imgui-50.input_text(%..string {i8* getelementptr inbounds ([4 x i8], [4 x i8]* @__str$bf, i64 0, i32 0), i64 3}, {i8*, i64}* %23, i32 0, i32 (%dear_imgui-50.TextEditCallbackData*)* zeroinitializer, %..rawptr zeroinitializer, %Context* noalias nonnull %__.context_ptr)
; SelectorExpr
; SliceExpr
%303 = load %state-38.State*, %state-38.State** %0, align 8
%304 = getelementptr inbounds %state-38.State, %state-38.State* %303, i64 0
%305 = getelementptr inbounds %state-38.State, %state-38.State* %304, i64 0, i32 36
%306 = load [1024 x i8], [1024 x i8]* %305, align 1
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$c0, i64 0, i32 0), i64 50}, i64 441, i64 61, i64 0, i64 1024, i64 1024)
%307 = getelementptr inbounds [1024 x i8], [1024 x i8]* %305, i64 0, i32 0
%308 = getelementptr inbounds i8, i8* %307, i64 0
%309 = sub i64 1024, 0
%310 = bitcast {i8*, i64}* %24 to %..rawptr
%311 = call %..rawptr @__mem_zero(%..rawptr %310, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %24
%312 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %24, i64 0, i32 0
store i8* %308, i8** %312
%313 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %24, i64 0, i32 1
store i64 %309, i64* %313
%314 = load {i8*, i64}, {i8*, i64}* %24, align 8
%315 = bitcast {i8*, i64}* %25 to %..rawptr
%316 = call %..rawptr @__mem_zero(%..rawptr %315, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %25
store {i8*, i64} %314, {i8*, i64}* %25
%317 = call i8 @dear_imgui-50.input_text(%..string {i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__str$c1, i64 0, i32 0), i64 16}, {i8*, i64}* %25, i32 0, i32 (%dear_imgui-50.TextEditCallbackData*)* zeroinitializer, %..rawptr zeroinitializer, %Context* noalias nonnull %__.context_ptr)
; IfStmt
; SelectorExpr
%318 = bitcast %dear_imgui-50.Vec2* %26 to %..rawptr
%319 = call %..rawptr @__mem_zero(%..rawptr %318, i64 8)
store %dear_imgui-50.Vec2 zeroinitializer, %dear_imgui-50.Vec2* %26
store %dear_imgui-50.Vec2 {float 0x4064000000000000, float 0x403e000000000000}, %dear_imgui-50.Vec2* %26
%320 = bitcast %dear_imgui-50.Vec2* %26 to i64*
%321 = load i64, i64* %320, align 8
%322 = call i8 @dear_imgui-50.button(%..string {i8* getelementptr inbounds ([6 x i8], [6 x i8]* @__str$c2, i64 0, i32 0), i64 5}, i64 %321, %Context* noalias nonnull %__.context_ptr)
%323 = trunc i8 %322 to i1
br i1 %323, label %if.then-45, label %if.done-50
if.then-45:
; options
; err
; SelectorExpr
%324 = call {%libgit2_types-55.Clone_Options, i32} @libgit2-29.clone_init_options(i32 1, %Context* noalias nonnull %__.context_ptr)
%325 = extractvalue {%libgit2_types-55.Clone_Options, i32} %324, 0
%326 = extractvalue {%libgit2_types-55.Clone_Options, i32} %324, 1
store %libgit2_types-55.Clone_Options %325, %libgit2_types-55.Clone_Options* %27
store i32 %326, i32* %28
; IfStmt
%327 = load i32, i32* %28, align 4
%328 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$c3, i64 0, i32 0), i64 50}, i64 445, i64 17, %..string {i8* getelementptr inbounds ([10 x i8], [10 x i8]* @__str$c4, i64 0, i32 0), i64 9})
%329 = bitcast %Source_Code_Location* %29 to %..rawptr
%330 = call %..rawptr @__mem_zero(%..rawptr %329, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %29
store %Source_Code_Location %328, %Source_Code_Location* %29
%331 = call i8 @debug-30.log_if_err(i32 %327, %Source_Code_Location* %29, %Context* noalias nonnull %__.context_ptr)
%332 = trunc i8 %331 to i1
br i1 %332, label %if.done-49, label %if.then-46
if.then-46:
; repo
; err2
; SelectorExpr
; SliceExpr
%333 = load %state-38.State*, %state-38.State** %0, align 8
%334 = getelementptr inbounds %state-38.State, %state-38.State* %333, i64 0
%335 = getelementptr inbounds %state-38.State, %state-38.State* %334, i64 0, i32 35
%336 = load [1024 x i8], [1024 x i8]* %335, align 1
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$c5, i64 0, i32 0), i64 50}, i64 446, i64 67, i64 0, i64 1024, i64 1024)
%337 = getelementptr inbounds [1024 x i8], [1024 x i8]* %335, i64 0, i32 0
%338 = getelementptr inbounds i8, i8* %337, i64 0
%339 = sub i64 1024, 0
%340 = bitcast {i8*, i64}* %32 to %..rawptr
%341 = call %..rawptr @__mem_zero(%..rawptr %340, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %32
%342 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %32, i64 0, i32 0
store i8* %338, i8** %342
%343 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %32, i64 0, i32 1
store i64 %339, i64* %343
%344 = load {i8*, i64}, {i8*, i64}* %32, align 8
%345 = extractvalue {i8*, i64} %344, 0
%346 = extractvalue {i8*, i64} %344, 1
%347 = bitcast %..string* %33 to %..rawptr
%348 = call %..rawptr @__mem_zero(%..rawptr %347, i64 16)
store %..string zeroinitializer, %..string* %33
%349 = getelementptr inbounds %..string, %..string* %33, i64 0, i32 0
store i8* %345, i8** %349
%350 = getelementptr inbounds %..string, %..string* %33, i64 0, i32 1
store i64 %346, i64* %350
%351 = load %..string, %..string* %33, align 8
; SliceExpr
%352 = load %state-38.State*, %state-38.State** %0, align 8
%353 = getelementptr inbounds %state-38.State, %state-38.State* %352, i64 0
%354 = getelementptr inbounds %state-38.State, %state-38.State* %353, i64 0, i32 36
%355 = load [1024 x i8], [1024 x i8]* %354, align 1
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$c6, i64 0, i32 0), i64 50}, i64 446, i64 100, i64 0, i64 1024, i64 1024)
%356 = getelementptr inbounds [1024 x i8], [1024 x i8]* %354, i64 0, i32 0
%357 = getelementptr inbounds i8, i8* %356, i64 0
%358 = sub i64 1024, 0
%359 = bitcast {i8*, i64}* %34 to %..rawptr
%360 = call %..rawptr @__mem_zero(%..rawptr %359, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %34
%361 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %34, i64 0, i32 0
store i8* %357, i8** %361
%362 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %34, i64 0, i32 1
store i64 %358, i64* %362
%363 = load {i8*, i64}, {i8*, i64}* %34, align 8
%364 = extractvalue {i8*, i64} %363, 0
%365 = extractvalue {i8*, i64} %363, 1
%366 = bitcast %..string* %35 to %..rawptr
%367 = call %..rawptr @__mem_zero(%..rawptr %366, i64 16)
store %..string zeroinitializer, %..string* %35
%368 = getelementptr inbounds %..string, %..string* %35, i64 0, i32 0
store i8* %364, i8** %368
%369 = getelementptr inbounds %..string, %..string* %35, i64 0, i32 1
store i64 %365, i64* %369
%370 = load %..string, %..string* %35, align 8
%371 = getelementptr inbounds %libgit2_types-55.Clone_Options, %libgit2_types-55.Clone_Options* %27, i64 0
%372 = call {%libgit2_types-55.Repository*, i32} @libgit2-29.clone(%..string %351, %..string %370, %libgit2_types-55.Clone_Options* %371, %Context* noalias nonnull %__.context_ptr)
%373 = extractvalue {%libgit2_types-55.Repository*, i32} %372, 0
%374 = extractvalue {%libgit2_types-55.Repository*, i32} %372, 1
store %libgit2_types-55.Repository* %373, %libgit2_types-55.Repository** %30
store i32 %374, i32* %31
; IfStmt
%375 = load i32, i32* %31, align 4
%376 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$c7, i64 0, i32 0), i64 50}, i64 447, i64 21, %..string {i8* getelementptr inbounds ([10 x i8], [10 x i8]* @__str$c8, i64 0, i32 0), i64 9})
%377 = bitcast %Source_Code_Location* %36 to %..rawptr
%378 = call %..rawptr @__mem_zero(%..rawptr %377, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %36
store %Source_Code_Location %376, %Source_Code_Location* %36
%379 = call i8 @debug-30.log_if_err(i32 %375, %Source_Code_Location* %36, %Context* noalias nonnull %__.context_ptr)
%380 = trunc i8 %379 to i1
br i1 %380, label %if.done-48, label %if.then-47
if.then-47:
%381 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %30, align 8
%382 = load %state-38.State*, %state-38.State** %0, align 8
call void @main-0.open_repo(%libgit2_types-55.Repository* %381, %state-38.State* %382, %Context* noalias nonnull %__.context_ptr)
br label %if.done-48
if.done-48:
br label %if.done-49
if.done-49:
; SelectorExpr
call ccc void @igCloseCurrentPopup()
br label %if.done-50
if.done-50:
; SelectorExpr
call ccc void @igSameLine(float 0x0000000000000000, float 0xbff0000000000000)
; IfStmt
; SelectorExpr
%383 = bitcast %dear_imgui-50.Vec2* %37 to %..rawptr
%384 = call %..rawptr @__mem_zero(%..rawptr %383, i64 8)
store %dear_imgui-50.Vec2 zeroinitializer, %dear_imgui-50.Vec2* %37
store %dear_imgui-50.Vec2 {float 0x4064000000000000, float 0x403e000000000000}, %dear_imgui-50.Vec2* %37
%385 = bitcast %dear_imgui-50.Vec2* %37 to i64*
%386 = load i64, i64* %385, align 8
%387 = call i8 @dear_imgui-50.button(%..string {i8* getelementptr inbounds ([7 x i8], [7 x i8]* @__str$c9, i64 0, i32 0), i64 6}, i64 %386, %Context* noalias nonnull %__.context_ptr)
%388 = trunc i8 %387 to i1
br i1 %388, label %if.then-51, label %if.done-52
if.then-51:
; SelectorExpr
; IndexExpr
%389 = load %state-38.State*, %state-38.State** %0, align 8
%390 = getelementptr inbounds %state-38.State, %state-38.State* %389, i64 0
%391 = getelementptr inbounds %state-38.State, %state-38.State* %390, i64 0, i32 35
%392 = getelementptr inbounds [1024 x i8], [1024 x i8]* %391, i64 0, i32 0
%393 = getelementptr inbounds i8, i8* %392, i64 0
%394 = bitcast i8* %393 to %..rawptr
%395 = call %..rawptr @mem-10.zero(%..rawptr %394, i64 1024)
; SelectorExpr
; IndexExpr
%396 = load %state-38.State*, %state-38.State** %0, align 8
%397 = getelementptr inbounds %state-38.State, %state-38.State* %396, i64 0
%398 = getelementptr inbounds %state-38.State, %state-38.State* %397, i64 0, i32 36
%399 = getelementptr inbounds [1024 x i8], [1024 x i8]* %398, i64 0, i32 0
%400 = getelementptr inbounds i8, i8* %399, i64 0
%401 = bitcast i8* %400 to %..rawptr
%402 = call %..rawptr @mem-10.zero(%..rawptr %401, i64 1024)
; SelectorExpr
call ccc void @igCloseCurrentPopup()
br label %if.done-52
if.done-52:
; defer
; SelectorExpr
call ccc void @igEndPopup()
br label %if.done-53
if.done-53:
; IfStmt
; SelectorExpr
%403 = call i8 @dear_imgui-50.begin_popup_modal(%..string {i8* getelementptr inbounds ([21 x i8], [21 x i8]* @__str$ca, i64 0, i32 0), i64 20}, i8* zeroinitializer, i32 64, %Context* noalias nonnull %__.context_ptr)
%404 = trunc i8 %403 to i1
br i1 %404, label %if.then-54, label %if.done-59
if.then-54:
; DeferStmt
; SelectorExpr
; SliceExpr
%405 = load %state-38.State*, %state-38.State** %0, align 8
%406 = getelementptr inbounds %state-38.State, %state-38.State* %405, i64 0
%407 = getelementptr inbounds %state-38.State, %state-38.State* %406, i64 0, i32 33
%408 = load [1024 x i8], [1024 x i8]* %407, align 1
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$cb, i64 0, i32 0), i64 50}, i64 465, i64 42, i64 0, i64 1024, i64 1024)
%409 = getelementptr inbounds [1024 x i8], [1024 x i8]* %407, i64 0, i32 0
%410 = getelementptr inbounds i8, i8* %409, i64 0
%411 = sub i64 1024, 0
%412 = bitcast {i8*, i64}* %38 to %..rawptr
%413 = call %..rawptr @__mem_zero(%..rawptr %412, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %38
%414 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %38, i64 0, i32 0
store i8* %410, i8** %414
%415 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %38, i64 0, i32 1
store i64 %411, i64* %415
%416 = load {i8*, i64}, {i8*, i64}* %38, align 8
%417 = bitcast {i8*, i64}* %39 to %..rawptr
%418 = call %..rawptr @__mem_zero(%..rawptr %417, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %39
store {i8*, i64} %416, {i8*, i64}* %39
%419 = call i8 @dear_imgui-50.input_text(%..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$cc, i64 0, i32 0), i64 4}, {i8*, i64}* %39, i32 0, i32 (%dear_imgui-50.TextEditCallbackData*)* zeroinitializer, %..rawptr zeroinitializer, %Context* noalias nonnull %__.context_ptr)
; SelectorExpr
; SliceExpr
%420 = load %state-38.State*, %state-38.State** %0, align 8
%421 = getelementptr inbounds %state-38.State, %state-38.State* %420, i64 0
%422 = getelementptr inbounds %state-38.State, %state-38.State* %421, i64 0, i32 34
%423 = load [1024 x i8], [1024 x i8]* %422, align 1
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$cd, i64 0, i32 0), i64 50}, i64 466, i64 44, i64 0, i64 1024, i64 1024)
%424 = getelementptr inbounds [1024 x i8], [1024 x i8]* %422, i64 0, i32 0
%425 = getelementptr inbounds i8, i8* %424, i64 0
%426 = sub i64 1024, 0
%427 = bitcast {i8*, i64}* %40 to %..rawptr
%428 = call %..rawptr @__mem_zero(%..rawptr %427, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %40
%429 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %40, i64 0, i32 0
store i8* %425, i8** %429
%430 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %40, i64 0, i32 1
store i64 %426, i64* %430
%431 = load {i8*, i64}, {i8*, i64}* %40, align 8
%432 = bitcast {i8*, i64}* %41 to %..rawptr
%433 = call %..rawptr @__mem_zero(%..rawptr %432, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %41
store {i8*, i64} %431, {i8*, i64}* %41
%434 = call i8 @dear_imgui-50.input_text(%..string {i8* getelementptr inbounds ([6 x i8], [6 x i8]* @__str$ce, i64 0, i32 0), i64 5}, {i8*, i64}* %41, i32 0, i32 (%dear_imgui-50.TextEditCallbackData*)* zeroinitializer, %..rawptr zeroinitializer, %Context* noalias nonnull %__.context_ptr)
; SelectorExpr
call ccc void @igSeparator()
; IfStmt
; SelectorExpr
%435 = bitcast %dear_imgui-50.Vec2* %42 to %..rawptr
%436 = call %..rawptr @__mem_zero(%..rawptr %435, i64 8)
store %dear_imgui-50.Vec2 zeroinitializer, %dear_imgui-50.Vec2* %42
store %dear_imgui-50.Vec2 {float 0x4060e00000000000, float 0x403e000000000000}, %dear_imgui-50.Vec2* %42
%437 = bitcast %dear_imgui-50.Vec2* %42 to i64*
%438 = load i64, i64* %437, align 8
%439 = call i8 @dear_imgui-50.button(%..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$cf, i64 0, i32 0), i64 4}, i64 %438, %Context* noalias nonnull %__.context_ptr)
%440 = trunc i8 %439 to i1
br i1 %440, label %if.then-55, label %if.done-56
if.then-55:
; name
; SelectorExpr
; IndexExpr
%441 = load %state-38.State*, %state-38.State** %0, align 8
%442 = getelementptr inbounds %state-38.State, %state-38.State* %441, i64 0
%443 = getelementptr inbounds %state-38.State, %state-38.State* %442, i64 0, i32 33
%444 = getelementptr inbounds [1024 x i8], [1024 x i8]* %443, i64 0, i32 0
%445 = getelementptr inbounds i8, i8* %444, i64 0
%446 = call %..string @strings-12.to_odin_string(i8* %445, %Context* noalias nonnull %__.context_ptr)
store %..string %446, %..string* %43
; AssignStmt
; SelectorExpr
; SelectorExpr
%447 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 2
; SelectorExpr
%448 = load %..string, %..string* %43, align 8
%449 = call %..string @strings-12.new_string(%..string %448, %Context* noalias nonnull %__.context_ptr)
store %..string %449, %..string* %447
; email
; SelectorExpr
; IndexExpr
%450 = load %state-38.State*, %state-38.State** %0, align 8
%451 = getelementptr inbounds %state-38.State, %state-38.State* %450, i64 0
%452 = getelementptr inbounds %state-38.State, %state-38.State* %451, i64 0, i32 34
%453 = getelementptr inbounds [1024 x i8], [1024 x i8]* %452, i64 0, i32 0
%454 = getelementptr inbounds i8, i8* %453, i64 0
%455 = call %..string @strings-12.to_odin_string(i8* %454, %Context* noalias nonnull %__.context_ptr)
store %..string %455, %..string* %44
; AssignStmt
; SelectorExpr
; SelectorExpr
%456 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 3
; SelectorExpr
%457 = load %..string, %..string* %44, align 8
%458 = call %..string @strings-12.new_string(%..string %457, %Context* noalias nonnull %__.context_ptr)
store %..string %458, %..string* %456
; SelectorExpr
call void @settings-36.save(%Context* noalias nonnull %__.context_ptr)
; SelectorExpr
; IndexExpr
%459 = load %state-38.State*, %state-38.State** %0, align 8
%460 = getelementptr inbounds %state-38.State, %state-38.State* %459, i64 0
%461 = getelementptr inbounds %state-38.State, %state-38.State* %460, i64 0, i32 33
%462 = getelementptr inbounds [1024 x i8], [1024 x i8]* %461, i64 0, i32 0
%463 = getelementptr inbounds i8, i8* %462, i64 0
%464 = bitcast i8* %463 to %..rawptr
%465 = call %..rawptr @mem-10.zero(%..rawptr %464, i64 1024)
; SelectorExpr
; IndexExpr
%466 = load %state-38.State*, %state-38.State** %0, align 8
%467 = getelementptr inbounds %state-38.State, %state-38.State* %466, i64 0
%468 = getelementptr inbounds %state-38.State, %state-38.State* %467, i64 0, i32 34
%469 = getelementptr inbounds [1024 x i8], [1024 x i8]* %468, i64 0, i32 0
%470 = getelementptr inbounds i8, i8* %469, i64 0
%471 = bitcast i8* %470 to %..rawptr
%472 = call %..rawptr @mem-10.zero(%..rawptr %471, i64 1024)
; SelectorExpr
call ccc void @igCloseCurrentPopup()
br label %if.done-56
if.done-56:
; SelectorExpr
call ccc void @igSameLine(float 0x0000000000000000, float 0xbff0000000000000)
; IfStmt
; SelectorExpr
%473 = bitcast %dear_imgui-50.Vec2* %45 to %..rawptr
%474 = call %..rawptr @__mem_zero(%..rawptr %473, i64 8)
store %dear_imgui-50.Vec2 zeroinitializer, %dear_imgui-50.Vec2* %45
store %dear_imgui-50.Vec2 {float 0x4060e00000000000, float 0x403e000000000000}, %dear_imgui-50.Vec2* %45
%475 = bitcast %dear_imgui-50.Vec2* %45 to i64*
%476 = load i64, i64* %475, align 8
%477 = call i8 @dear_imgui-50.button(%..string {i8* getelementptr inbounds ([7 x i8], [7 x i8]* @__str$d0, i64 0, i32 0), i64 6}, i64 %476, %Context* noalias nonnull %__.context_ptr)
%478 = trunc i8 %477 to i1
br i1 %478, label %if.then-57, label %if.done-58
if.then-57:
; SelectorExpr
; IndexExpr
%479 = load %state-38.State*, %state-38.State** %0, align 8
%480 = getelementptr inbounds %state-38.State, %state-38.State* %479, i64 0
%481 = getelementptr inbounds %state-38.State, %state-38.State* %480, i64 0, i32 33
%482 = getelementptr inbounds [1024 x i8], [1024 x i8]* %481, i64 0, i32 0
%483 = getelementptr inbounds i8, i8* %482, i64 0
%484 = bitcast i8* %483 to %..rawptr
%485 = call %..rawptr @mem-10.zero(%..rawptr %484, i64 1024)
; SelectorExpr
; IndexExpr
%486 = load %state-38.State*, %state-38.State** %0, align 8
%487 = getelementptr inbounds %state-38.State, %state-38.State* %486, i64 0
%488 = getelementptr inbounds %state-38.State, %state-38.State* %487, i64 0, i32 34
%489 = getelementptr inbounds [1024 x i8], [1024 x i8]* %488, i64 0, i32 0
%490 = getelementptr inbounds i8, i8* %489, i64 0
%491 = bitcast i8* %490 to %..rawptr
%492 = call %..rawptr @mem-10.zero(%..rawptr %491, i64 1024)
; SelectorExpr
call ccc void @igCloseCurrentPopup()
br label %if.done-58
if.done-58:
; defer
; SelectorExpr
call ccc void @igEndPopup()
br label %if.done-59
if.done-59:
; IfStmt
; SelectorExpr
%493 = call i8 @dear_imgui-50.begin_popup_modal(%..string {i8* getelementptr inbounds ([16 x i8], [16 x i8]* @__str$d1, i64 0, i32 0), i64 15}, i8* zeroinitializer, i32 64, %Context* noalias nonnull %__.context_ptr)
%494 = trunc i8 %493 to i1
br i1 %494, label %if.then-60, label %if.done-65
if.then-60:
; DeferStmt
; SelectorExpr
; SliceExpr
%495 = load %state-38.State*, %state-38.State** %0, align 8
%496 = getelementptr inbounds %state-38.State, %state-38.State* %495, i64 0
%497 = getelementptr inbounds %state-38.State, %state-38.State* %496, i64 0, i32 31
%498 = load [1024 x i8], [1024 x i8]* %497, align 1
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$d2, i64 0, i32 0), i64 50}, i64 490, i64 50, i64 0, i64 1024, i64 1024)
%499 = getelementptr inbounds [1024 x i8], [1024 x i8]* %497, i64 0, i32 0
%500 = getelementptr inbounds i8, i8* %499, i64 0
%501 = sub i64 1024, 0
%502 = bitcast {i8*, i64}* %46 to %..rawptr
%503 = call %..rawptr @__mem_zero(%..rawptr %502, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %46
%504 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %46, i64 0, i32 0
store i8* %500, i8** %504
%505 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %46, i64 0, i32 1
store i64 %501, i64* %505
%506 = load {i8*, i64}, {i8*, i64}* %46, align 8
%507 = bitcast {i8*, i64}* %47 to %..rawptr
%508 = call %..rawptr @__mem_zero(%..rawptr %507, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %47
store {i8*, i64} %506, {i8*, i64}* %47
%509 = call i8 @dear_imgui-50.input_text(%..string {i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__str$d3, i64 0, i32 0), i64 8}, {i8*, i64}* %47, i32 0, i32 (%dear_imgui-50.TextEditCallbackData*)* zeroinitializer, %..rawptr zeroinitializer, %Context* noalias nonnull %__.context_ptr)
; SelectorExpr
; SliceExpr
%510 = load %state-38.State*, %state-38.State** %0, align 8
%511 = getelementptr inbounds %state-38.State, %state-38.State* %510, i64 0
%512 = getelementptr inbounds %state-38.State, %state-38.State* %511, i64 0, i32 32
%513 = load [1024 x i8], [1024 x i8]* %512, align 1
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$d4, i64 0, i32 0), i64 50}, i64 491, i64 50, i64 0, i64 1024, i64 1024)
%514 = getelementptr inbounds [1024 x i8], [1024 x i8]* %512, i64 0, i32 0
%515 = getelementptr inbounds i8, i8* %514, i64 0
%516 = sub i64 1024, 0
%517 = bitcast {i8*, i64}* %48 to %..rawptr
%518 = call %..rawptr @__mem_zero(%..rawptr %517, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %48
%519 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %48, i64 0, i32 0
store i8* %515, i8** %519
%520 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %48, i64 0, i32 1
store i64 %516, i64* %520
%521 = load {i8*, i64}, {i8*, i64}* %48, align 8
%522 = bitcast {i8*, i64}* %49 to %..rawptr
%523 = call %..rawptr @__mem_zero(%..rawptr %522, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %49
store {i8*, i64} %521, {i8*, i64}* %49
%524 = call i8 @dear_imgui-50.input_text(%..string {i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__str$d5, i64 0, i32 0), i64 8}, {i8*, i64}* %49, i32 32768, i32 (%dear_imgui-50.TextEditCallbackData*)* zeroinitializer, %..rawptr zeroinitializer, %Context* noalias nonnull %__.context_ptr)
; SelectorExpr
call ccc void @igSeparator()
; IfStmt
; SelectorExpr
%525 = bitcast %dear_imgui-50.Vec2* %50 to %..rawptr
%526 = call %..rawptr @__mem_zero(%..rawptr %525, i64 8)
store %dear_imgui-50.Vec2 zeroinitializer, %dear_imgui-50.Vec2* %50
store %dear_imgui-50.Vec2 {float 0x4060e00000000000, float 0x403e000000000000}, %dear_imgui-50.Vec2* %50
%527 = bitcast %dear_imgui-50.Vec2* %50 to i64*
%528 = load i64, i64* %527, align 8
%529 = call i8 @dear_imgui-50.button(%..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$d6, i64 0, i32 0), i64 4}, i64 %528, %Context* noalias nonnull %__.context_ptr)
%530 = trunc i8 %529 to i1
br i1 %530, label %if.then-61, label %if.done-62
if.then-61:
; username
; SelectorExpr
; IndexExpr
%531 = load %state-38.State*, %state-38.State** %0, align 8
%532 = getelementptr inbounds %state-38.State, %state-38.State* %531, i64 0
%533 = getelementptr inbounds %state-38.State, %state-38.State* %532, i64 0, i32 31
%534 = getelementptr inbounds [1024 x i8], [1024 x i8]* %533, i64 0, i32 0
%535 = getelementptr inbounds i8, i8* %534, i64 0
%536 = call %..string @strings-12.to_odin_string(i8* %535, %Context* noalias nonnull %__.context_ptr)
store %..string %536, %..string* %51
; AssignStmt
; SelectorExpr
; SelectorExpr
%537 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 0
; SelectorExpr
%538 = load %..string, %..string* %51, align 8
%539 = call %..string @strings-12.new_string(%..string %538, %Context* noalias nonnull %__.context_ptr)
store %..string %539, %..string* %537
; password
; SelectorExpr
; IndexExpr
%540 = load %state-38.State*, %state-38.State** %0, align 8
%541 = getelementptr inbounds %state-38.State, %state-38.State* %540, i64 0
%542 = getelementptr inbounds %state-38.State, %state-38.State* %541, i64 0, i32 32
%543 = getelementptr inbounds [1024 x i8], [1024 x i8]* %542, i64 0, i32 0
%544 = getelementptr inbounds i8, i8* %543, i64 0
%545 = call %..string @strings-12.to_odin_string(i8* %544, %Context* noalias nonnull %__.context_ptr)
store %..string %545, %..string* %52
; AssignStmt
; SelectorExpr
; SelectorExpr
%546 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 1
; SelectorExpr
%547 = load %..string, %..string* %52, align 8
%548 = call %..string @strings-12.new_string(%..string %547, %Context* noalias nonnull %__.context_ptr)
store %..string %548, %..string* %546
; SelectorExpr
call void @settings-36.save(%Context* noalias nonnull %__.context_ptr)
; SelectorExpr
; IndexExpr
%549 = load %state-38.State*, %state-38.State** %0, align 8
%550 = getelementptr inbounds %state-38.State, %state-38.State* %549, i64 0
%551 = getelementptr inbounds %state-38.State, %state-38.State* %550, i64 0, i32 31
%552 = getelementptr inbounds [1024 x i8], [1024 x i8]* %551, i64 0, i32 0
%553 = getelementptr inbounds i8, i8* %552, i64 0
%554 = bitcast i8* %553 to %..rawptr
%555 = call %..rawptr @mem-10.zero(%..rawptr %554, i64 1024)
; SelectorExpr
; IndexExpr
%556 = load %state-38.State*, %state-38.State** %0, align 8
%557 = getelementptr inbounds %state-38.State, %state-38.State* %556, i64 0
%558 = getelementptr inbounds %state-38.State, %state-38.State* %557, i64 0, i32 32
%559 = getelementptr inbounds [1024 x i8], [1024 x i8]* %558, i64 0, i32 0
%560 = getelementptr inbounds i8, i8* %559, i64 0
%561 = bitcast i8* %560 to %..rawptr
%562 = call %..rawptr @mem-10.zero(%..rawptr %561, i64 1024)
; SelectorExpr
call ccc void @igCloseCurrentPopup()
br label %if.done-62
if.done-62:
; SelectorExpr
call ccc void @igSameLine(float 0x0000000000000000, float 0xbff0000000000000)
; IfStmt
; SelectorExpr
%563 = bitcast %dear_imgui-50.Vec2* %53 to %..rawptr
%564 = call %..rawptr @__mem_zero(%..rawptr %563, i64 8)
store %dear_imgui-50.Vec2 zeroinitializer, %dear_imgui-50.Vec2* %53
store %dear_imgui-50.Vec2 {float 0x4060e00000000000, float 0x403e000000000000}, %dear_imgui-50.Vec2* %53
%565 = bitcast %dear_imgui-50.Vec2* %53 to i64*
%566 = load i64, i64* %565, align 8
%567 = call i8 @dear_imgui-50.button(%..string {i8* getelementptr inbounds ([7 x i8], [7 x i8]* @__str$d7, i64 0, i32 0), i64 6}, i64 %566, %Context* noalias nonnull %__.context_ptr)
%568 = trunc i8 %567 to i1
br i1 %568, label %if.then-63, label %if.done-64
if.then-63:
; SelectorExpr
; IndexExpr
%569 = load %state-38.State*, %state-38.State** %0, align 8
%570 = getelementptr inbounds %state-38.State, %state-38.State* %569, i64 0
%571 = getelementptr inbounds %state-38.State, %state-38.State* %570, i64 0, i32 31
%572 = getelementptr inbounds [1024 x i8], [1024 x i8]* %571, i64 0, i32 0
%573 = getelementptr inbounds i8, i8* %572, i64 0
%574 = bitcast i8* %573 to %..rawptr
%575 = call %..rawptr @mem-10.zero(%..rawptr %574, i64 1024)
; SelectorExpr
; IndexExpr
%576 = load %state-38.State*, %state-38.State** %0, align 8
%577 = getelementptr inbounds %state-38.State, %state-38.State* %576, i64 0
%578 = getelementptr inbounds %state-38.State, %state-38.State* %577, i64 0, i32 32
%579 = getelementptr inbounds [1024 x i8], [1024 x i8]* %578, i64 0, i32 0
%580 = getelementptr inbounds i8, i8* %579, i64 0
%581 = bitcast i8* %580 to %..rawptr
%582 = call %..rawptr @mem-10.zero(%..rawptr %581, i64 1024)
; SelectorExpr
call ccc void @igCloseCurrentPopup()
br label %if.done-64
if.done-64:
; defer
; SelectorExpr
call ccc void @igEndPopup()
br label %if.done-65
if.done-65:
ret void
}
define void @main-0.do_async_fetch(%libgit2_types-55.Repository* %repo, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %libgit2_types-55.Repository*, align 16
%1 = alloca %..string, align 16
%2 = alloca %..any, align 16
%3 = alloca {%..any*, i64}, align 16
%4 = alloca [1 x %..any], align 16
%5 = alloca {%..any*, i64}, align 16
%6 = alloca %Source_Code_Location, align 16
%7 = alloca %main-0.do_async_fetch._payload-1215*, align 16
%8 = alloca %Source_Code_Location, align 16
%9 = alloca %thread-13.Thread*, align 16
store %libgit2_types-55.Repository* %repo, %libgit2_types-55.Repository** %0
; SelectorExpr
%10 = bitcast %..string* %1 to %..rawptr
%11 = call %..rawptr @__mem_zero(%..rawptr %10, i64 16)
store %..string zeroinitializer, %..string* %1
store %..string {i8* getelementptr inbounds ([18 x i8], [18 x i8]* @__str$d8, i64 0, i32 0), i64 17}, %..string* %1
%12 = load %..string, %..string* %1, align 8
%13 = bitcast %..any* %2 to %..rawptr
%14 = call %..rawptr @__mem_zero(%..rawptr %13, i64 16)
store %..any zeroinitializer, %..any* %2
%15 = bitcast %..string* %1 to %..rawptr
%16 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18
%17 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 0
store %..rawptr %15, %..rawptr* %17
%18 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 1
store %Type_Info* %16, %Type_Info** %18
%19 = load %..any, %..any* %2, align 8
; variadic call argument generation
%20 = bitcast {%..any*, i64}* %3 to %..rawptr
%21 = call %..rawptr @__mem_zero(%..rawptr %20, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %3
%22 = bitcast [1 x %..any]* %4 to %..rawptr
%23 = call %..rawptr @__mem_zero(%..rawptr %22, i64 16)
store [1 x %..any] zeroinitializer, [1 x %..any]* %4
%24 = getelementptr inbounds [1 x %..any], [1 x %..any]* %4, i64 0, i32 0
store %..any %19, %..any* %24
%25 = getelementptr inbounds [1 x %..any], [1 x %..any]* %4, i64 0, i32 0
%26 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %3, i64 0, i32 0
store %..any* %25, %..any** %26
%27 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %3, i64 0, i32 1
store i64 1, i64* %27
%28 = load {%..any*, i64}, {%..any*, i64}* %3, align 8
%29 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$d9, i64 0, i32 0), i64 50}, i64 515, i64 13, %..string {i8* getelementptr inbounds ([15 x i8], [15 x i8]* @__str$da, i64 0, i32 0), i64 14})
%30 = bitcast {%..any*, i64}* %5 to %..rawptr
%31 = call %..rawptr @__mem_zero(%..rawptr %30, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %5
store {%..any*, i64} %28, {%..any*, i64}* %5
%32 = bitcast %Source_Code_Location* %6 to %..rawptr
%33 = call %..rawptr @__mem_zero(%..rawptr %32, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %6
store %Source_Code_Location %29, %Source_Code_Location* %6
call void @imgui_console-28.log({%..any*, i64}* %5, %Source_Code_Location* %6, %Context* noalias nonnull %__.context_ptr)
; p
%34 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$db, i64 0, i32 0), i64 50}, i64 519, i64 10, %..string {i8* getelementptr inbounds ([15 x i8], [15 x i8]* @__str$dc, i64 0, i32 0), i64 14})
%35 = bitcast %Source_Code_Location* %8 to %..rawptr
%36 = call %..rawptr @__mem_zero(%..rawptr %35, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %8
store %Source_Code_Location %34, %Source_Code_Location* %8
%37 = call %main-0.do_async_fetch._payload-1215* @_preload-0.new-19568(%Source_Code_Location* %8, %Context* noalias nonnull %__.context_ptr)
store %main-0.do_async_fetch._payload-1215* %37, %main-0.do_async_fetch._payload-1215** %7
; AssignStmt
; SelectorExpr
%38 = load %main-0.do_async_fetch._payload-1215*, %main-0.do_async_fetch._payload-1215** %7, align 8
%39 = getelementptr inbounds %main-0.do_async_fetch._payload-1215, %main-0.do_async_fetch._payload-1215* %38, i64 0
%40 = getelementptr inbounds %main-0.do_async_fetch._payload-1215, %main-0.do_async_fetch._payload-1215* %39, i64 0, i32 0
%41 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %0, align 8
store %libgit2_types-55.Repository* %41, %libgit2_types-55.Repository** %40
; fetch_thread
; SelectorExpr
%42 = bitcast i64 (%thread-13.Thread*, %Context*)* @main-0.do_async_fetch.Fetch_Thread_Proc-0 to i64 (%thread-13.Thread*, %Context*)*
%43 = call %thread-13.Thread* @thread-13.create(i64 (%thread-13.Thread*, %Context*)* %42, %Context* noalias nonnull %__.context_ptr)
store %thread-13.Thread* %43, %thread-13.Thread** %9
; AssignStmt
; SelectorExpr
%44 = load %thread-13.Thread*, %thread-13.Thread** %9, align 8
%45 = getelementptr inbounds %thread-13.Thread, %thread-13.Thread* %44, i64 0
%46 = getelementptr inbounds %thread-13.Thread, %thread-13.Thread* %45, i64 0, i32 2
%47 = load %main-0.do_async_fetch._payload-1215*, %main-0.do_async_fetch._payload-1215** %7, align 8
%48 = bitcast %main-0.do_async_fetch._payload-1215* %47 to %..rawptr
store %..rawptr %48, %..rawptr* %46
; SelectorExpr
%49 = load %thread-13.Thread*, %thread-13.Thread** %9, align 8
call void @thread-13.start(%thread-13.Thread* %49, %Context* noalias nonnull %__.context_ptr)
ret void
}
define i64 @main-0.do_async_fetch.Fetch_Thread_Proc-0(%thread-13.Thread* %thread, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %thread-13.Thread*, align 16
%1 = alloca %main-0.do_async_fetch._payload-1215*, align 16
%2 = alloca %libgit2_types-55.Remote*, align 16
%3 = alloca i32, align 16
%4 = alloca %libgit2_types-55.Remote_Callbacks, align 16
%5 = alloca %Source_Code_Location, align 16
%6 = alloca %..any, align 16
%7 = alloca %..string, align 16
%8 = alloca {%..any*, i64}, align 16
%9 = alloca [1 x %..any], align 16
%10 = alloca {%..any*, i64}, align 16
%11 = alloca %Source_Code_Location, align 16
%12 = alloca %libgit2_types-55.Fetch_Options, align 16
%13 = alloca {%..string*, i64}, align 16
%14 = alloca %Source_Code_Location, align 16
%15 = alloca %..string, align 16
%16 = alloca %..any, align 16
%17 = alloca {%..any*, i64}, align 16
%18 = alloca [1 x %..any], align 16
%19 = alloca {%..any*, i64}, align 16
%20 = alloca %Source_Code_Location, align 16
%21 = alloca %Source_Code_Location, align 16
store %thread-13.Thread* %thread, %thread-13.Thread** %0
; p
; SelectorExpr
%22 = load %thread-13.Thread*, %thread-13.Thread** %0, align 8
%23 = getelementptr inbounds %thread-13.Thread, %thread-13.Thread* %22, i64 0
%24 = getelementptr inbounds %thread-13.Thread, %thread-13.Thread* %23, i64 0, i32 2
%25 = load %..rawptr, %..rawptr* %24, align 8
%26 = bitcast %..rawptr %25 to %main-0.do_async_fetch._payload-1215*
store %main-0.do_async_fetch._payload-1215* %26, %main-0.do_async_fetch._payload-1215** %1
; remote
; ok
; SelectorExpr
%27 = load %main-0.do_async_fetch._payload-1215*, %main-0.do_async_fetch._payload-1215** %1, align 8
%28 = getelementptr inbounds %main-0.do_async_fetch._payload-1215, %main-0.do_async_fetch._payload-1215* %27, i64 0
%29 = getelementptr inbounds %main-0.do_async_fetch._payload-1215, %main-0.do_async_fetch._payload-1215* %28, i64 0, i32 0
%30 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %29, align 8
%31 = call {%libgit2_types-55.Remote*, i32} @libgit2-29.remote_lookup(%libgit2_types-55.Repository* %30, %..string {i8* getelementptr inbounds ([7 x i8], [7 x i8]* @__str$dd, i64 0, i32 0), i64 6}, %Context* noalias nonnull %__.context_ptr)
%32 = extractvalue {%libgit2_types-55.Remote*, i32} %31, 0
%33 = extractvalue {%libgit2_types-55.Remote*, i32} %31, 1
store %libgit2_types-55.Remote* %32, %libgit2_types-55.Remote** %2
store i32 %33, i32* %3
; remote_cb
; SelectorExpr
%34 = call {%libgit2_types-55.Remote_Callbacks, i32} @libgit2-29.remote_init_callbacks(%Context* noalias nonnull %__.context_ptr)
%35 = extractvalue {%libgit2_types-55.Remote_Callbacks, i32} %34, 0
%36 = extractvalue {%libgit2_types-55.Remote_Callbacks, i32} %34, 1
store %libgit2_types-55.Remote_Callbacks %35, %libgit2_types-55.Remote_Callbacks* %4
; AssignStmt
; SelectorExpr
%37 = getelementptr inbounds %libgit2_types-55.Remote_Callbacks, %libgit2_types-55.Remote_Callbacks* %4, i64 0, i32 3
%38 = bitcast i32 (%libgit2_types-55.Cred**, i8*, i8*, i32, %..rawptr)* @main-0.credentials_callback to i32 (%libgit2_types-55.Cred**, i8*, i8*, i32, %..rawptr)*
store i32 (%libgit2_types-55.Cred**, i8*, i8*, i32, %..rawptr)* %38, i32 (%libgit2_types-55.Cred**, i8*, i8*, i32, %..rawptr)** %37
; AssignStmt
; SelectorExpr
%39 = load %libgit2_types-55.Remote*, %libgit2_types-55.Remote** %2, align 8
%40 = getelementptr inbounds %libgit2_types-55.Remote_Callbacks, %libgit2_types-55.Remote_Callbacks* %4, i64 0
%41 = call i32 @libgit2-29.remote_connect(%libgit2_types-55.Remote* %39, i32 0, %libgit2_types-55.Remote_Callbacks* %40, %libgit2_types-55.Proxy_Options* zeroinitializer, %libgit2_types-55.Str_Array* zeroinitializer, %Context* noalias nonnull %__.context_ptr)
store i32 %41, i32* %3
; IfStmt
%42 = load i32, i32* %3, align 4
%43 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$de, i64 0, i32 0), i64 50}, i64 528, i64 13, %..string {i8* getelementptr inbounds ([18 x i8], [18 x i8]* @__str$df, i64 0, i32 0), i64 17})
%44 = bitcast %Source_Code_Location* %5 to %..rawptr
%45 = call %..rawptr @__mem_zero(%..rawptr %44, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %5
store %Source_Code_Location %43, %Source_Code_Location* %5
%46 = call i8 @debug-30.log_if_err(i32 %42, %Source_Code_Location* %5, %Context* noalias nonnull %__.context_ptr)
%47 = trunc i8 %46 to i1
br i1 %47, label %if.done-4, label %if.then-1
if.then-1:
; SelectorExpr
; SelectorExpr
%48 = load %libgit2_types-55.Remote*, %libgit2_types-55.Remote** %2, align 8
%49 = call %..string @libgit2-29.remote_name(%libgit2_types-55.Remote* %48, %Context* noalias nonnull %__.context_ptr)
%50 = bitcast %..any* %6 to %..rawptr
%51 = call %..rawptr @__mem_zero(%..rawptr %50, i64 16)
store %..any zeroinitializer, %..any* %6
%52 = bitcast %..string* %7 to %..rawptr
%53 = call %..rawptr @__mem_zero(%..rawptr %52, i64 16)
store %..string zeroinitializer, %..string* %7
store %..string %49, %..string* %7
%54 = bitcast %..string* %7 to %..rawptr
%55 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18
%56 = getelementptr inbounds %..any, %..any* %6, i64 0, i32 0
store %..rawptr %54, %..rawptr* %56
%57 = getelementptr inbounds %..any, %..any* %6, i64 0, i32 1
store %Type_Info* %55, %Type_Info** %57
%58 = load %..any, %..any* %6, align 8
; variadic call argument generation
%59 = bitcast {%..any*, i64}* %8 to %..rawptr
%60 = call %..rawptr @__mem_zero(%..rawptr %59, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %8
%61 = bitcast [1 x %..any]* %9 to %..rawptr
%62 = call %..rawptr @__mem_zero(%..rawptr %61, i64 16)
store [1 x %..any] zeroinitializer, [1 x %..any]* %9
%63 = getelementptr inbounds [1 x %..any], [1 x %..any]* %9, i64 0, i32 0
store %..any %58, %..any* %63
%64 = getelementptr inbounds [1 x %..any], [1 x %..any]* %9, i64 0, i32 0
%65 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %8, i64 0, i32 0
store %..any* %64, %..any** %65
%66 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %8, i64 0, i32 1
store i64 1, i64* %66
%67 = load {%..any*, i64}, {%..any*, i64}* %8, align 8
%68 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$e0, i64 0, i32 0), i64 50}, i64 529, i64 21, %..string {i8* getelementptr inbounds ([18 x i8], [18 x i8]* @__str$e1, i64 0, i32 0), i64 17})
%69 = bitcast {%..any*, i64}* %10 to %..rawptr
%70 = call %..rawptr @__mem_zero(%..rawptr %69, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %10
store {%..any*, i64} %67, {%..any*, i64}* %10
%71 = bitcast %Source_Code_Location* %11 to %..rawptr
%72 = call %..rawptr @__mem_zero(%..rawptr %71, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %11
store %Source_Code_Location %68, %Source_Code_Location* %11
call void @imgui_console-28.logf(%..string {i8* getelementptr inbounds ([16 x i8], [16 x i8]* @__str$e2, i64 0, i32 0), i64 15}, {%..any*, i64}* %10, %Source_Code_Location* %11, %Context* noalias nonnull %__.context_ptr)
; fetch_opt
; SelectorExpr
%73 = call {%libgit2_types-55.Fetch_Options, i32} @libgit2-29.fetch_init_options(i32 1, %Context* noalias nonnull %__.context_ptr)
%74 = extractvalue {%libgit2_types-55.Fetch_Options, i32} %73, 0
%75 = extractvalue {%libgit2_types-55.Fetch_Options, i32} %73, 1
store %libgit2_types-55.Fetch_Options %74, %libgit2_types-55.Fetch_Options* %12
; AssignStmt
; SelectorExpr
%76 = getelementptr inbounds %libgit2_types-55.Fetch_Options, %libgit2_types-55.Fetch_Options* %12, i64 0, i32 1
%77 = load %libgit2_types-55.Remote_Callbacks, %libgit2_types-55.Remote_Callbacks* %4, align 8
store %libgit2_types-55.Remote_Callbacks %77, %libgit2_types-55.Remote_Callbacks* %76
; AssignStmt
; SelectorExpr
%78 = load %libgit2_types-55.Remote*, %libgit2_types-55.Remote** %2, align 8
%79 = getelementptr inbounds %libgit2_types-55.Fetch_Options, %libgit2_types-55.Fetch_Options* %12, i64 0
%80 = bitcast {%..string*, i64}* %13 to %..rawptr
%81 = call %..rawptr @__mem_zero(%..rawptr %80, i64 16)
store {%..string*, i64} zeroinitializer, {%..string*, i64}* %13
store {%..string*, i64} zeroinitializer, {%..string*, i64}* %13
%82 = call i32 @libgit2-29.remote_fetch(%libgit2_types-55.Remote* %78, {%..string*, i64}* %13, %libgit2_types-55.Fetch_Options* %79, %..string {i8* getelementptr inbounds ([6 x i8], [6 x i8]* @__str$e3, i64 0, i32 0), i64 5}, %Context* noalias nonnull %__.context_ptr)
store i32 %82, i32* %3
; IfStmt
%83 = load i32, i32* %3, align 4
%84 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$e4, i64 0, i32 0), i64 50}, i64 534, i64 17, %..string {i8* getelementptr inbounds ([18 x i8], [18 x i8]* @__str$e5, i64 0, i32 0), i64 17})
%85 = bitcast %Source_Code_Location* %14 to %..rawptr
%86 = call %..rawptr @__mem_zero(%..rawptr %85, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %14
store %Source_Code_Location %84, %Source_Code_Location* %14
%87 = call i8 @debug-30.log_if_err(i32 %83, %Source_Code_Location* %14, %Context* noalias nonnull %__.context_ptr)
%88 = trunc i8 %87 to i1
br i1 %88, label %if.done-3, label %if.then-2
if.then-2:
; SelectorExpr
%89 = bitcast %..string* %15 to %..rawptr
%90 = call %..rawptr @__mem_zero(%..rawptr %89, i64 16)
store %..string zeroinitializer, %..string* %15
store %..string {i8* getelementptr inbounds ([18 x i8], [18 x i8]* @__str$e6, i64 0, i32 0), i64 17}, %..string* %15
%91 = load %..string, %..string* %15, align 8
%92 = bitcast %..any* %16 to %..rawptr
%93 = call %..rawptr @__mem_zero(%..rawptr %92, i64 16)
store %..any zeroinitializer, %..any* %16
%94 = bitcast %..string* %15 to %..rawptr
%95 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18
%96 = getelementptr inbounds %..any, %..any* %16, i64 0, i32 0
store %..rawptr %94, %..rawptr* %96
%97 = getelementptr inbounds %..any, %..any* %16, i64 0, i32 1
store %Type_Info* %95, %Type_Info** %97
%98 = load %..any, %..any* %16, align 8
; variadic call argument generation
%99 = bitcast {%..any*, i64}* %17 to %..rawptr
%100 = call %..rawptr @__mem_zero(%..rawptr %99, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %17
%101 = bitcast [1 x %..any]* %18 to %..rawptr
%102 = call %..rawptr @__mem_zero(%..rawptr %101, i64 16)
store [1 x %..any] zeroinitializer, [1 x %..any]* %18
%103 = getelementptr inbounds [1 x %..any], [1 x %..any]* %18, i64 0, i32 0
store %..any %98, %..any* %103
%104 = getelementptr inbounds [1 x %..any], [1 x %..any]* %18, i64 0, i32 0
%105 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %17, i64 0, i32 0
store %..any* %104, %..any** %105
%106 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %17, i64 0, i32 1
store i64 1, i64* %106
%107 = load {%..any*, i64}, {%..any*, i64}* %17, align 8
%108 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$e7, i64 0, i32 0), i64 50}, i64 535, i64 25, %..string {i8* getelementptr inbounds ([18 x i8], [18 x i8]* @__str$e8, i64 0, i32 0), i64 17})
%109 = bitcast {%..any*, i64}* %19 to %..rawptr
%110 = call %..rawptr @__mem_zero(%..rawptr %109, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %19
store {%..any*, i64} %107, {%..any*, i64}* %19
%111 = bitcast %Source_Code_Location* %20 to %..rawptr
%112 = call %..rawptr @__mem_zero(%..rawptr %111, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %20
store %Source_Code_Location %108, %Source_Code_Location* %20
call void @imgui_console-28.log({%..any*, i64}* %19, %Source_Code_Location* %20, %Context* noalias nonnull %__.context_ptr)
br label %if.done-3
if.done-3:
; SelectorExpr
%113 = load %libgit2_types-55.Remote*, %libgit2_types-55.Remote** %2, align 8
call cc 64 void @git_remote_free(%libgit2_types-55.Remote* %113)
br label %if.done-4
if.done-4:
%114 = load %main-0.do_async_fetch._payload-1215*, %main-0.do_async_fetch._payload-1215** %1, align 8
%115 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$e9, i64 0, i32 0), i64 50}, i64 539, i64 9, %..string {i8* getelementptr inbounds ([18 x i8], [18 x i8]* @__str$ea, i64 0, i32 0), i64 17})
%116 = bitcast %main-0.do_async_fetch._payload-1215* %114 to %..rawptr
%117 = bitcast %Source_Code_Location* %21 to %..rawptr
%118 = call %..rawptr @__mem_zero(%..rawptr %117, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %21
store %Source_Code_Location %115, %Source_Code_Location* %21
call void @free_ptr(%..rawptr %116, %Source_Code_Location* %21, %Context* noalias nonnull %__.context_ptr)
; ReturnStmt
%119 = load i32, i32* %3, align 4
%120 = sext i32 %119 to i64
ret i64 %120
}
define void @main-0.do_async_push(%libgit2_types-55.Repository* %repo, {%branch-35.Branch*, i64}* %branches_to_push, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %libgit2_types-55.Repository*, align 16
%1 = alloca %..string, align 16
%2 = alloca %..any, align 16
%3 = alloca {%..any*, i64}, align 16
%4 = alloca [1 x %..any], align 16
%5 = alloca {%..any*, i64}, align 16
%6 = alloca %Source_Code_Location, align 16
%7 = alloca %main-0.do_async_push._payload-1216*, align 16
%8 = alloca %Source_Code_Location, align 16
%9 = alloca %thread-13.Thread*, align 16
store %libgit2_types-55.Repository* %repo, %libgit2_types-55.Repository** %0
%10 = load {%branch-35.Branch*, i64}, {%branch-35.Branch*, i64}* %branches_to_push, align 8
; SelectorExpr
%11 = bitcast %..string* %1 to %..rawptr
%12 = call %..rawptr @__mem_zero(%..rawptr %11, i64 16)
store %..string zeroinitializer, %..string* %1
store %..string {i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__str$eb, i64 0, i32 0), i64 16}, %..string* %1
%13 = load %..string, %..string* %1, align 8
%14 = bitcast %..any* %2 to %..rawptr
%15 = call %..rawptr @__mem_zero(%..rawptr %14, i64 16)
store %..any zeroinitializer, %..any* %2
%16 = bitcast %..string* %1 to %..rawptr
%17 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18
%18 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 0
store %..rawptr %16, %..rawptr* %18
%19 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 1
store %Type_Info* %17, %Type_Info** %19
%20 = load %..any, %..any* %2, align 8
; variadic call argument generation
%21 = bitcast {%..any*, i64}* %3 to %..rawptr
%22 = call %..rawptr @__mem_zero(%..rawptr %21, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %3
%23 = bitcast [1 x %..any]* %4 to %..rawptr
%24 = call %..rawptr @__mem_zero(%..rawptr %23, i64 16)
store [1 x %..any] zeroinitializer, [1 x %..any]* %4
%25 = getelementptr inbounds [1 x %..any], [1 x %..any]* %4, i64 0, i32 0
store %..any %20, %..any* %25
%26 = getelementptr inbounds [1 x %..any], [1 x %..any]* %4, i64 0, i32 0
%27 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %3, i64 0, i32 0
store %..any* %26, %..any** %27
%28 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %3, i64 0, i32 1
store i64 1, i64* %28
%29 = load {%..any*, i64}, {%..any*, i64}* %3, align 8
%30 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$ec, i64 0, i32 0), i64 50}, i64 549, i64 13, %..string {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$ed, i64 0, i32 0), i64 13})
%31 = bitcast {%..any*, i64}* %5 to %..rawptr
%32 = call %..rawptr @__mem_zero(%..rawptr %31, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %5
store {%..any*, i64} %29, {%..any*, i64}* %5
%33 = bitcast %Source_Code_Location* %6 to %..rawptr
%34 = call %..rawptr @__mem_zero(%..rawptr %33, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %6
store %Source_Code_Location %30, %Source_Code_Location* %6
call void @imgui_console-28.log({%..any*, i64}* %5, %Source_Code_Location* %6, %Context* noalias nonnull %__.context_ptr)
; p
%35 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$ee, i64 0, i32 0), i64 50}, i64 554, i64 10, %..string {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$ef, i64 0, i32 0), i64 13})
%36 = bitcast %Source_Code_Location* %8 to %..rawptr
%37 = call %..rawptr @__mem_zero(%..rawptr %36, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %8
store %Source_Code_Location %35, %Source_Code_Location* %8
%38 = call %main-0.do_async_push._payload-1216* @_preload-0.new-19582(%Source_Code_Location* %8, %Context* noalias nonnull %__.context_ptr)
store %main-0.do_async_push._payload-1216* %38, %main-0.do_async_push._payload-1216** %7
; AssignStmt
; SelectorExpr
%39 = load %main-0.do_async_push._payload-1216*, %main-0.do_async_push._payload-1216** %7, align 8
%40 = getelementptr inbounds %main-0.do_async_push._payload-1216, %main-0.do_async_push._payload-1216* %39, i64 0
%41 = getelementptr inbounds %main-0.do_async_push._payload-1216, %main-0.do_async_push._payload-1216* %40, i64 0, i32 0
%42 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %0, align 8
store %libgit2_types-55.Repository* %42, %libgit2_types-55.Repository** %41
; AssignStmt
; SelectorExpr
%43 = load %main-0.do_async_push._payload-1216*, %main-0.do_async_push._payload-1216** %7, align 8
%44 = getelementptr inbounds %main-0.do_async_push._payload-1216, %main-0.do_async_push._payload-1216* %43, i64 0
%45 = getelementptr inbounds %main-0.do_async_push._payload-1216, %main-0.do_async_push._payload-1216* %44, i64 0, i32 1
%46 = load {%branch-35.Branch*, i64}, {%branch-35.Branch*, i64}* %branches_to_push, align 8
store {%branch-35.Branch*, i64} %46, {%branch-35.Branch*, i64}* %45
; push_thread
; SelectorExpr
%47 = bitcast i64 (%thread-13.Thread*, %Context*)* @main-0.do_async_push.Push_Thread_Proc-0 to i64 (%thread-13.Thread*, %Context*)*
%48 = call %thread-13.Thread* @thread-13.create(i64 (%thread-13.Thread*, %Context*)* %47, %Context* noalias nonnull %__.context_ptr)
store %thread-13.Thread* %48, %thread-13.Thread** %9
; AssignStmt
; SelectorExpr
%49 = load %thread-13.Thread*, %thread-13.Thread** %9, align 8
%50 = getelementptr inbounds %thread-13.Thread, %thread-13.Thread* %49, i64 0
%51 = getelementptr inbounds %thread-13.Thread, %thread-13.Thread* %50, i64 0, i32 2
%52 = load %main-0.do_async_push._payload-1216*, %main-0.do_async_push._payload-1216** %7, align 8
%53 = bitcast %main-0.do_async_push._payload-1216* %52 to %..rawptr
store %..rawptr %53, %..rawptr* %51
; SelectorExpr
%54 = load %thread-13.Thread*, %thread-13.Thread** %9, align 8
call void @thread-13.start(%thread-13.Thread* %54, %Context* noalias nonnull %__.context_ptr)
ret void
}
define i64 @main-0.do_async_push.Push_Thread_Proc-0(%thread-13.Thread* %thread, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %thread-13.Thread*, align 16
%1 = alloca %main-0.do_async_push._payload-1216*, align 16
%2 = alloca %libgit2_types-55.Remote*, align 16
%3 = alloca %libgit2_types-55.Remote_Callbacks, align 16
%4 = alloca i32, align 16
%5 = alloca %Source_Code_Location, align 16
%6 = alloca %..any, align 16
%7 = alloca %..string, align 16
%8 = alloca {%..any*, i64}, align 16
%9 = alloca [1 x %..any], align 16
%10 = alloca {%..any*, i64}, align 16
%11 = alloca %Source_Code_Location, align 16
%12 = alloca {%..string*, i64, i64, %Allocator}, align 16
%13 = alloca %branch-35.Branch, align 16
%14 = alloca i64, align 16
%15 = alloca i64, align 16
%16 = alloca %..string, align 16
%17 = alloca %..string, align 16
%18 = alloca %..any, align 16
%19 = alloca %..any, align 16
%20 = alloca {%..any*, i64}, align 16
%21 = alloca [2 x %..any], align 16
%22 = alloca {%..any*, i64}, align 16
%23 = alloca {%..string*, i64}, align 16
%24 = alloca [1 x %..string], align 16
%25 = alloca {%..string*, i64}, align 16
%26 = alloca %Source_Code_Location, align 16
%27 = alloca %libgit2_types-55.Push_Options, align 16
%28 = alloca i32, align 16
%29 = alloca {%..string*, i64}, align 16
%30 = alloca {%..string*, i64}, align 16
%31 = alloca %Source_Code_Location, align 16
%32 = alloca %..string, align 16
%33 = alloca %..any, align 16
%34 = alloca {%..any*, i64}, align 16
%35 = alloca [1 x %..any], align 16
%36 = alloca {%..any*, i64}, align 16
%37 = alloca %Source_Code_Location, align 16
%38 = alloca %Source_Code_Location, align 16
%39 = alloca {%..string*, i64, i64, %Allocator}, align 16
%40 = alloca %Source_Code_Location, align 16
%41 = alloca {%..string*, i64, i64, %Allocator}, align 16
%42 = alloca %Source_Code_Location, align 16
%43 = alloca %Source_Code_Location, align 16
store %thread-13.Thread* %thread, %thread-13.Thread** %0
; p
; SelectorExpr
%44 = load %thread-13.Thread*, %thread-13.Thread** %0, align 8
%45 = getelementptr inbounds %thread-13.Thread, %thread-13.Thread* %44, i64 0
%46 = getelementptr inbounds %thread-13.Thread, %thread-13.Thread* %45, i64 0, i32 2
%47 = load %..rawptr, %..rawptr* %46, align 8
%48 = bitcast %..rawptr %47 to %main-0.do_async_push._payload-1216*
store %main-0.do_async_push._payload-1216* %48, %main-0.do_async_push._payload-1216** %1
; remote
; SelectorExpr
%49 = load %main-0.do_async_push._payload-1216*, %main-0.do_async_push._payload-1216** %1, align 8
%50 = getelementptr inbounds %main-0.do_async_push._payload-1216, %main-0.do_async_push._payload-1216* %49, i64 0
%51 = getelementptr inbounds %main-0.do_async_push._payload-1216, %main-0.do_async_push._payload-1216* %50, i64 0, i32 0
%52 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %51, align 8
%53 = call {%libgit2_types-55.Remote*, i32} @libgit2-29.remote_lookup(%libgit2_types-55.Repository* %52, %..string {i8* getelementptr inbounds ([7 x i8], [7 x i8]* @__str$f0, i64 0, i32 0), i64 6}, %Context* noalias nonnull %__.context_ptr)
%54 = extractvalue {%libgit2_types-55.Remote*, i32} %53, 0
%55 = extractvalue {%libgit2_types-55.Remote*, i32} %53, 1
store %libgit2_types-55.Remote* %54, %libgit2_types-55.Remote** %2
; remote_cb
; SelectorExpr
%56 = call {%libgit2_types-55.Remote_Callbacks, i32} @libgit2-29.remote_init_callbacks(%Context* noalias nonnull %__.context_ptr)
%57 = extractvalue {%libgit2_types-55.Remote_Callbacks, i32} %56, 0
%58 = extractvalue {%libgit2_types-55.Remote_Callbacks, i32} %56, 1
store %libgit2_types-55.Remote_Callbacks %57, %libgit2_types-55.Remote_Callbacks* %3
; AssignStmt
; SelectorExpr
%59 = getelementptr inbounds %libgit2_types-55.Remote_Callbacks, %libgit2_types-55.Remote_Callbacks* %3, i64 0, i32 3
%60 = bitcast i32 (%libgit2_types-55.Cred**, i8*, i8*, i32, %..rawptr)* @main-0.credentials_callback to i32 (%libgit2_types-55.Cred**, i8*, i8*, i32, %..rawptr)*
store i32 (%libgit2_types-55.Cred**, i8*, i8*, i32, %..rawptr)* %60, i32 (%libgit2_types-55.Cred**, i8*, i8*, i32, %..rawptr)** %59
; ok
; SelectorExpr
%61 = load %libgit2_types-55.Remote*, %libgit2_types-55.Remote** %2, align 8
%62 = getelementptr inbounds %libgit2_types-55.Remote_Callbacks, %libgit2_types-55.Remote_Callbacks* %3, i64 0
%63 = call i32 @libgit2-29.remote_connect(%libgit2_types-55.Remote* %61, i32 1, %libgit2_types-55.Remote_Callbacks* %62, %libgit2_types-55.Proxy_Options* zeroinitializer, %libgit2_types-55.Str_Array* zeroinitializer, %Context* noalias nonnull %__.context_ptr)
store i32 %63, i32* %4
; IfStmt
%64 = load i32, i32* %4, align 4
%65 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$f1, i64 0, i32 0), i64 50}, i64 564, i64 13, %..string {i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__str$f2, i64 0, i32 0), i64 16})
%66 = bitcast %Source_Code_Location* %5 to %..rawptr
%67 = call %..rawptr @__mem_zero(%..rawptr %66, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %5
store %Source_Code_Location %65, %Source_Code_Location* %5
%68 = call i8 @debug-30.log_if_err(i32 %64, %Source_Code_Location* %5, %Context* noalias nonnull %__.context_ptr)
%69 = trunc i8 %68 to i1
br i1 %69, label %if.else-7, label %if.then-1
if.then-1:
; SelectorExpr
; SelectorExpr
%70 = load %libgit2_types-55.Remote*, %libgit2_types-55.Remote** %2, align 8
%71 = call %..string @libgit2-29.remote_name(%libgit2_types-55.Remote* %70, %Context* noalias nonnull %__.context_ptr)
%72 = bitcast %..any* %6 to %..rawptr
%73 = call %..rawptr @__mem_zero(%..rawptr %72, i64 16)
store %..any zeroinitializer, %..any* %6
%74 = bitcast %..string* %7 to %..rawptr
%75 = call %..rawptr @__mem_zero(%..rawptr %74, i64 16)
store %..string zeroinitializer, %..string* %7
store %..string %71, %..string* %7
%76 = bitcast %..string* %7 to %..rawptr
%77 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18
%78 = getelementptr inbounds %..any, %..any* %6, i64 0, i32 0
store %..rawptr %76, %..rawptr* %78
%79 = getelementptr inbounds %..any, %..any* %6, i64 0, i32 1
store %Type_Info* %77, %Type_Info** %79
%80 = load %..any, %..any* %6, align 8
; variadic call argument generation
%81 = bitcast {%..any*, i64}* %8 to %..rawptr
%82 = call %..rawptr @__mem_zero(%..rawptr %81, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %8
%83 = bitcast [1 x %..any]* %9 to %..rawptr
%84 = call %..rawptr @__mem_zero(%..rawptr %83, i64 16)
store [1 x %..any] zeroinitializer, [1 x %..any]* %9
%85 = getelementptr inbounds [1 x %..any], [1 x %..any]* %9, i64 0, i32 0
store %..any %80, %..any* %85
%86 = getelementptr inbounds [1 x %..any], [1 x %..any]* %9, i64 0, i32 0
%87 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %8, i64 0, i32 0
store %..any* %86, %..any** %87
%88 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %8, i64 0, i32 1
store i64 1, i64* %88
%89 = load {%..any*, i64}, {%..any*, i64}* %8, align 8
%90 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$f3, i64 0, i32 0), i64 50}, i64 565, i64 21, %..string {i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__str$f4, i64 0, i32 0), i64 16})
%91 = bitcast {%..any*, i64}* %10 to %..rawptr
%92 = call %..rawptr @__mem_zero(%..rawptr %91, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %10
store {%..any*, i64} %89, {%..any*, i64}* %10
%93 = bitcast %Source_Code_Location* %11 to %..rawptr
%94 = call %..rawptr @__mem_zero(%..rawptr %93, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %11
store %Source_Code_Location %90, %Source_Code_Location* %11
call void @imgui_console-28.logf(%..string {i8* getelementptr inbounds ([16 x i8], [16 x i8]* @__str$f5, i64 0, i32 0), i64 15}, {%..any*, i64}* %10, %Source_Code_Location* %11, %Context* noalias nonnull %__.context_ptr)
; refspec
%95 = bitcast {%..string*, i64, i64, %Allocator}* %12 to %..rawptr
%96 = call %..rawptr @__mem_zero(%..rawptr %95, i64 40)
store {%..string*, i64, i64, %Allocator} zeroinitializer, {%..string*, i64, i64, %Allocator}* %12
; DeferStmt
; RangeStmt
; b
%97 = bitcast %branch-35.Branch* %13 to %..rawptr
%98 = call %..rawptr @__mem_zero(%..rawptr %97, i64 208)
store %branch-35.Branch zeroinitializer, %branch-35.Branch* %13
%99 = load %main-0.do_async_push._payload-1216*, %main-0.do_async_push._payload-1216** %1, align 8
%100 = getelementptr inbounds %main-0.do_async_push._payload-1216, %main-0.do_async_push._payload-1216* %99, i64 0
%101 = getelementptr inbounds %main-0.do_async_push._payload-1216, %main-0.do_async_push._payload-1216* %100, i64 0, i32 1
%102 = load {%branch-35.Branch*, i64}, {%branch-35.Branch*, i64}* %101, align 8
%103 = bitcast i64* %14 to %..rawptr
%104 = call %..rawptr @__mem_zero(%..rawptr %103, i64 8)
store i64 zeroinitializer, i64* %14
%105 = extractvalue {%branch-35.Branch*, i64} %102, 1
store i64 %105, i64* %14
%106 = bitcast i64* %15 to %..rawptr
%107 = call %..rawptr @__mem_zero(%..rawptr %106, i64 8)
store i64 zeroinitializer, i64* %15
store i64 -1, i64* %15
br label %for.index.loop-2
for.index.loop-2:
%108 = load i64, i64* %15, align 8
%109 = add i64 %108, 1
store i64 %109, i64* %15
%110 = load i64, i64* %14, align 8
%111 = icmp slt i64 %109, %110
br i1 %111, label %for.index.body-3, label %for.index.done-4
for.index.body-3:
%112 = load i64, i64* %15, align 8
%113 = extractvalue {%branch-35.Branch*, i64} %102, 0
%114 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %113, i64 %112
%115 = load %branch-35.Branch, %branch-35.Branch* %114, align 8
store %branch-35.Branch %115, %branch-35.Branch* %13
; refname
; SelectorExpr
; SelectorExpr
%116 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %13, i64 0, i32 0
%117 = load %libgit2_types-55.Reference*, %libgit2_types-55.Reference** %116, align 8
%118 = call %..string @libgit2-29.reference_name(%libgit2_types-55.Reference* %117, %Context* noalias nonnull %__.context_ptr)
store %..string %118, %..string* %16
; spec
; SelectorExpr
%119 = load %..string, %..string* %16, align 8
%120 = load %..string, %..string* %16, align 8
%121 = bitcast %..any* %18 to %..rawptr
%122 = call %..rawptr @__mem_zero(%..rawptr %121, i64 16)
store %..any zeroinitializer, %..any* %18
%123 = bitcast %..string* %16 to %..rawptr
%124 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18
%125 = getelementptr inbounds %..any, %..any* %18, i64 0, i32 0
store %..rawptr %123, %..rawptr* %125
%126 = getelementptr inbounds %..any, %..any* %18, i64 0, i32 1
store %Type_Info* %124, %Type_Info** %126
%127 = load %..any, %..any* %18, align 8
%128 = bitcast %..any* %19 to %..rawptr
%129 = call %..rawptr @__mem_zero(%..rawptr %128, i64 16)
store %..any zeroinitializer, %..any* %19
%130 = bitcast %..string* %16 to %..rawptr
%131 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18
%132 = getelementptr inbounds %..any, %..any* %19, i64 0, i32 0
store %..rawptr %130, %..rawptr* %132
%133 = getelementptr inbounds %..any, %..any* %19, i64 0, i32 1
store %Type_Info* %131, %Type_Info** %133
%134 = load %..any, %..any* %19, align 8
; variadic call argument generation
%135 = bitcast {%..any*, i64}* %20 to %..rawptr
%136 = call %..rawptr @__mem_zero(%..rawptr %135, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %20
%137 = bitcast [2 x %..any]* %21 to %..rawptr
%138 = call %..rawptr @__mem_zero(%..rawptr %137, i64 32)
store [2 x %..any] zeroinitializer, [2 x %..any]* %21
%139 = getelementptr inbounds [2 x %..any], [2 x %..any]* %21, i64 0, i32 0
store %..any %127, %..any* %139
%140 = getelementptr inbounds [2 x %..any], [2 x %..any]* %21, i64 0, i32 1
store %..any %134, %..any* %140
%141 = getelementptr inbounds [2 x %..any], [2 x %..any]* %21, i64 0, i32 0
%142 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %20, i64 0, i32 0
store %..any* %141, %..any** %142
%143 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %20, i64 0, i32 1
store i64 2, i64* %143
%144 = load {%..any*, i64}, {%..any*, i64}* %20, align 8
%145 = bitcast {%..any*, i64}* %22 to %..rawptr
%146 = call %..rawptr @__mem_zero(%..rawptr %145, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %22
store {%..any*, i64} %144, {%..any*, i64}* %22
%147 = call %..string @fmt-11.aprintf(%..string {i8* getelementptr inbounds ([6 x i8], [6 x i8]* @__str$f6, i64 0, i32 0), i64 5}, {%..any*, i64}* %22, %Context* noalias nonnull %__.context_ptr)
store %..string %147, %..string* %17
%148 = getelementptr inbounds {%..string*, i64, i64, %Allocator}, {%..string*, i64, i64, %Allocator}* %12, i64 0
%149 = load %..string, %..string* %17, align 8
; variadic call argument generation
%150 = bitcast {%..string*, i64}* %23 to %..rawptr
%151 = call %..rawptr @__mem_zero(%..rawptr %150, i64 16)
store {%..string*, i64} zeroinitializer, {%..string*, i64}* %23
%152 = bitcast [1 x %..string]* %24 to %..rawptr
%153 = call %..rawptr @__mem_zero(%..rawptr %152, i64 16)
store [1 x %..string] zeroinitializer, [1 x %..string]* %24
%154 = getelementptr inbounds [1 x %..string], [1 x %..string]* %24, i64 0, i32 0
store %..string %149, %..string* %154
%155 = getelementptr inbounds [1 x %..string], [1 x %..string]* %24, i64 0, i32 0
%156 = getelementptr inbounds {%..string*, i64}, {%..string*, i64}* %23, i64 0, i32 0
store %..string* %155, %..string** %156
%157 = getelementptr inbounds {%..string*, i64}, {%..string*, i64}* %23, i64 0, i32 1
store i64 1, i64* %157
%158 = load {%..string*, i64}, {%..string*, i64}* %23, align 8
%159 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$f7, i64 0, i32 0), i64 50}, i64 570, i64 17, %..string {i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__str$f8, i64 0, i32 0), i64 16})
%160 = bitcast {%..string*, i64}* %25 to %..rawptr
%161 = call %..rawptr @__mem_zero(%..rawptr %160, i64 16)
store {%..string*, i64} zeroinitializer, {%..string*, i64}* %25
store {%..string*, i64} %158, {%..string*, i64}* %25
%162 = bitcast %Source_Code_Location* %26 to %..rawptr
%163 = call %..rawptr @__mem_zero(%..rawptr %162, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %26
store %Source_Code_Location %159, %Source_Code_Location* %26
%164 = call i64 @_preload-0.append-20623({%..string*, i64, i64, %Allocator}* %148, {%..string*, i64}* %25, %Source_Code_Location* %26, %Context* noalias nonnull %__.context_ptr)
br label %for.index.loop-2
for.index.done-4:
; opts
; SelectorExpr
%165 = call {%libgit2_types-55.Push_Options, i32} @libgit2-29.push_init_options(i32 1, %Context* noalias nonnull %__.context_ptr)
%166 = extractvalue {%libgit2_types-55.Push_Options, i32} %165, 0
%167 = extractvalue {%libgit2_types-55.Push_Options, i32} %165, 1
store %libgit2_types-55.Push_Options %166, %libgit2_types-55.Push_Options* %27
; AssignStmt
; SelectorExpr
%168 = getelementptr inbounds %libgit2_types-55.Remote_Callbacks, %libgit2_types-55.Remote_Callbacks* %3, i64 0, i32 8
%169 = bitcast i32 (i32, i32, i64, %..rawptr)* @main-0.push_transfer_progress to i32 (i32, i32, i64, %..rawptr)*
store i32 (i32, i32, i64, %..rawptr)* %169, i32 (i32, i32, i64, %..rawptr)** %168
; AssignStmt
; SelectorExpr
%170 = getelementptr inbounds %libgit2_types-55.Remote_Callbacks, %libgit2_types-55.Remote_Callbacks* %3, i64 0, i32 12
%171 = getelementptr inbounds %main-0.TransferPayload, %main-0.TransferPayload* @main-0.tpayload, i64 0
%172 = bitcast %main-0.TransferPayload* %171 to %..rawptr
store %..rawptr %172, %..rawptr* %170
; AssignStmt
; SelectorExpr
%173 = getelementptr inbounds %libgit2_types-55.Push_Options, %libgit2_types-55.Push_Options* %27, i64 0, i32 2
%174 = load %libgit2_types-55.Remote_Callbacks, %libgit2_types-55.Remote_Callbacks* %3, align 8
store %libgit2_types-55.Remote_Callbacks %174, %libgit2_types-55.Remote_Callbacks* %173
; AssignStmt
; SelectorExpr
%175 = getelementptr inbounds %libgit2_types-55.Push_Options, %libgit2_types-55.Push_Options* %27, i64 0, i32 1
store i32 0, i32* %175
; err
; SelectorExpr
%176 = load %libgit2_types-55.Remote*, %libgit2_types-55.Remote** %2, align 8
; SliceExpr
%177 = load {%..string*, i64, i64, %Allocator}, {%..string*, i64, i64, %Allocator}* %12, align 8
%178 = extractvalue {%..string*, i64, i64, %Allocator} %177, 1
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$f9, i64 0, i32 0), i64 50}, i64 580, i64 51, i64 0, i64 %178, i64 %178)
%179 = extractvalue {%..string*, i64, i64, %Allocator} %177, 0
%180 = getelementptr inbounds %..string, %..string* %179, i64 0
%181 = sub i64 %178, 0
%182 = bitcast {%..string*, i64}* %29 to %..rawptr
%183 = call %..rawptr @__mem_zero(%..rawptr %182, i64 16)
store {%..string*, i64} zeroinitializer, {%..string*, i64}* %29
%184 = getelementptr inbounds {%..string*, i64}, {%..string*, i64}* %29, i64 0, i32 0
store %..string* %180, %..string** %184
%185 = getelementptr inbounds {%..string*, i64}, {%..string*, i64}* %29, i64 0, i32 1
store i64 %181, i64* %185
%186 = load {%..string*, i64}, {%..string*, i64}* %29, align 8
%187 = getelementptr inbounds %libgit2_types-55.Push_Options, %libgit2_types-55.Push_Options* %27, i64 0
%188 = bitcast {%..string*, i64}* %30 to %..rawptr
%189 = call %..rawptr @__mem_zero(%..rawptr %188, i64 16)
store {%..string*, i64} zeroinitializer, {%..string*, i64}* %30
store {%..string*, i64} %186, {%..string*, i64}* %30
%190 = call i32 @libgit2-29.remote_push(%libgit2_types-55.Remote* %176, {%..string*, i64}* %30, %libgit2_types-55.Push_Options* %187, %Context* noalias nonnull %__.context_ptr)
store i32 %190, i32* %28
; IfStmt
%191 = load i32, i32* %28, align 4
%192 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$fa, i64 0, i32 0), i64 50}, i64 581, i64 17, %..string {i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__str$fb, i64 0, i32 0), i64 16})
%193 = bitcast %Source_Code_Location* %31 to %..rawptr
%194 = call %..rawptr @__mem_zero(%..rawptr %193, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %31
store %Source_Code_Location %192, %Source_Code_Location* %31
%195 = call i8 @debug-30.log_if_err(i32 %191, %Source_Code_Location* %31, %Context* noalias nonnull %__.context_ptr)
%196 = trunc i8 %195 to i1
br i1 %196, label %if.done-6, label %if.then-5
if.then-5:
; SelectorExpr
%197 = bitcast %..string* %32 to %..rawptr
%198 = call %..rawptr @__mem_zero(%..rawptr %197, i64 16)
store %..string zeroinitializer, %..string* %32
store %..string {i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__str$fc, i64 0, i32 0), i64 16}, %..string* %32
%199 = load %..string, %..string* %32, align 8
%200 = bitcast %..any* %33 to %..rawptr
%201 = call %..rawptr @__mem_zero(%..rawptr %200, i64 16)
store %..any zeroinitializer, %..any* %33
%202 = bitcast %..string* %32 to %..rawptr
%203 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18
%204 = getelementptr inbounds %..any, %..any* %33, i64 0, i32 0
store %..rawptr %202, %..rawptr* %204
%205 = getelementptr inbounds %..any, %..any* %33, i64 0, i32 1
store %Type_Info* %203, %Type_Info** %205
%206 = load %..any, %..any* %33, align 8
; variadic call argument generation
%207 = bitcast {%..any*, i64}* %34 to %..rawptr
%208 = call %..rawptr @__mem_zero(%..rawptr %207, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %34
%209 = bitcast [1 x %..any]* %35 to %..rawptr
%210 = call %..rawptr @__mem_zero(%..rawptr %209, i64 16)
store [1 x %..any] zeroinitializer, [1 x %..any]* %35
%211 = getelementptr inbounds [1 x %..any], [1 x %..any]* %35, i64 0, i32 0
store %..any %206, %..any* %211
%212 = getelementptr inbounds [1 x %..any], [1 x %..any]* %35, i64 0, i32 0
%213 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %34, i64 0, i32 0
store %..any* %212, %..any** %213
%214 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %34, i64 0, i32 1
store i64 1, i64* %214
%215 = load {%..any*, i64}, {%..any*, i64}* %34, align 8
%216 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$fd, i64 0, i32 0), i64 50}, i64 582, i64 25, %..string {i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__str$fe, i64 0, i32 0), i64 16})
%217 = bitcast {%..any*, i64}* %36 to %..rawptr
%218 = call %..rawptr @__mem_zero(%..rawptr %217, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %36
store {%..any*, i64} %215, {%..any*, i64}* %36
%219 = bitcast %Source_Code_Location* %37 to %..rawptr
%220 = call %..rawptr @__mem_zero(%..rawptr %219, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %37
store %Source_Code_Location %216, %Source_Code_Location* %37
call void @imgui_console-28.log({%..any*, i64}* %36, %Source_Code_Location* %37, %Context* noalias nonnull %__.context_ptr)
br label %if.done-6
if.done-6:
; SelectorExpr
%221 = load %libgit2_types-55.Remote*, %libgit2_types-55.Remote** %2, align 8
call cc 64 void @git_remote_free(%libgit2_types-55.Remote* %221)
; AssignStmt
; SelectorExpr
%222 = getelementptr inbounds %main-0.TransferPayload, %main-0.TransferPayload* @main-0.tpayload, i64 0, i32 3
store i8 1, i8* %222
%223 = load %main-0.do_async_push._payload-1216*, %main-0.do_async_push._payload-1216** %1, align 8
%224 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$ff, i64 0, i32 0), i64 50}, i64 586, i64 13, %..string {i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__str$100, i64 0, i32 0), i64 16})
%225 = bitcast %main-0.do_async_push._payload-1216* %223 to %..rawptr
%226 = bitcast %Source_Code_Location* %38 to %..rawptr
%227 = call %..rawptr @__mem_zero(%..rawptr %226, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %38
store %Source_Code_Location %224, %Source_Code_Location* %38
call void @free_ptr(%..rawptr %225, %Source_Code_Location* %38, %Context* noalias nonnull %__.context_ptr)
; ReturnStmt
%228 = load i32, i32* %28, align 4
%229 = sext i32 %228 to i64
; defer
%230 = load {%..string*, i64, i64, %Allocator}, {%..string*, i64, i64, %Allocator}* %12, align 8
%231 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$101, i64 0, i32 0), i64 50}, i64 566, i64 46, %..string {i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__str$102, i64 0, i32 0), i64 16})
%232 = bitcast {%..string*, i64, i64, %Allocator}* %39 to %..rawptr
%233 = call %..rawptr @__mem_zero(%..rawptr %232, i64 40)
store {%..string*, i64, i64, %Allocator} zeroinitializer, {%..string*, i64, i64, %Allocator}* %39
store {%..string*, i64, i64, %Allocator} %230, {%..string*, i64, i64, %Allocator}* %39
%234 = bitcast %Source_Code_Location* %40 to %..rawptr
%235 = call %..rawptr @__mem_zero(%..rawptr %234, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %40
store %Source_Code_Location %231, %Source_Code_Location* %40
call void @_preload-0.free_dynamic_array-23064({%..string*, i64, i64, %Allocator}* %39, %Source_Code_Location* %40, %Context* noalias nonnull %__.context_ptr)
ret i64 %229
if.else-7:
%236 = load %main-0.do_async_push._payload-1216*, %main-0.do_async_push._payload-1216** %1, align 8
%237 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$103, i64 0, i32 0), i64 50}, i64 589, i64 13, %..string {i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__str$104, i64 0, i32 0), i64 16})
%238 = bitcast %main-0.do_async_push._payload-1216* %236 to %..rawptr
%239 = bitcast %Source_Code_Location* %43 to %..rawptr
%240 = call %..rawptr @__mem_zero(%..rawptr %239, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %43
store %Source_Code_Location %237, %Source_Code_Location* %43
call void @free_ptr(%..rawptr %238, %Source_Code_Location* %43, %Context* noalias nonnull %__.context_ptr)
; ReturnStmt
%241 = load i32, i32* %4, align 4
%242 = sext i32 %241 to i64
ret i64 %242
}
define void @main-0.repo_window(%state-38.State* %state, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %state-38.State*, align 16
%1 = alloca i8, align 16
%2 = alloca %dear_imgui-50.Vec2, align 16
%3 = alloca %dear_imgui-50.Vec2, align 16
%4 = alloca %dear_imgui-50.Vec2, align 16
%5 = alloca i8, align 16
%6 = alloca {i8*, i64}, align 16
%7 = alloca {i8*, i64}, align 16
%8 = alloca %dear_imgui-50.Vec2, align 16
%9 = alloca %..string, align 16
%10 = alloca %libgit2_types-55.Repository*, align 16
%11 = alloca i32, align 16
%12 = alloca %Source_Code_Location, align 16
%13 = alloca %..any, align 16
%14 = alloca {%..any*, i64}, align 16
%15 = alloca [1 x %..any], align 16
%16 = alloca {%..any*, i64}, align 16
%17 = alloca %Source_Code_Location, align 16
%18 = alloca %..any, align 16
%19 = alloca {%..any*, i64}, align 16
%20 = alloca [1 x %..any], align 16
%21 = alloca {%..any*, i64}, align 16
%22 = alloca %dear_imgui-50.Vec2, align 16
%23 = alloca %..string, align 16
%24 = alloca %libgit2_types-55.Oid, align 16
%25 = alloca %..string, align 16
%26 = alloca %libgit2_types-55.Oid, align 16
%27 = alloca i64, align 16
%28 = alloca i64, align 16
%29 = alloca %libgit2_types-55.Oid, align 16
%30 = alloca %libgit2_types-55.Oid, align 16
%31 = alloca %..any, align 16
%32 = alloca {%..any*, i64}, align 16
%33 = alloca [1 x %..any], align 16
%34 = alloca {%..any*, i64}, align 16
%35 = alloca %..any, align 16
%36 = alloca {%..any*, i64}, align 16
%37 = alloca [1 x %..any], align 16
%38 = alloca {%..any*, i64}, align 16
%39 = alloca %dear_imgui-50.Vec2, align 16
%40 = alloca {%branch-35.Branch*, i64}, align 16
%41 = alloca {%branch-35.Branch*, i64}, align 16
%42 = alloca %dear_imgui-50.Vec2, align 16
%43 = alloca %dear_imgui-50.Vec2, align 16
%44 = alloca %libgit2_types-55.Signature, align 16
%45 = alloca i32, align 16
%46 = alloca %Source_Code_Location, align 16
%47 = alloca %Source_Code_Location, align 16
%48 = alloca %dear_imgui-50.Vec2, align 16
%49 = alloca %libgit2_types-55.Stash_Apply_Options, align 16
%50 = alloca %dear_imgui-50.Vec2, align 16
%51 = alloca %..any, align 16
%52 = alloca {%..any*, i64}, align 16
%53 = alloca [1 x %..any], align 16
%54 = alloca {%..any*, i64}, align 16
store %state-38.State* %state, %state-38.State** %0
; open_push_transfer
store i8 0, i8* %1
; SelectorExpr
%55 = bitcast %dear_imgui-50.Vec2* %2 to %..rawptr
%56 = call %..rawptr @__mem_zero(%..rawptr %55, i64 8)
store %dear_imgui-50.Vec2 zeroinitializer, %dear_imgui-50.Vec2* %2
store %dear_imgui-50.Vec2 {float 0x406f400000000000, float 0x4032000000000000}, %dear_imgui-50.Vec2* %2
%57 = bitcast %dear_imgui-50.Vec2* %2 to i64*
%58 = load i64, i64* %57, align 8
%59 = bitcast %dear_imgui-50.Vec2* %3 to %..rawptr
%60 = call %..rawptr @__mem_zero(%..rawptr %59, i64 8)
store %dear_imgui-50.Vec2 zeroinitializer, %dear_imgui-50.Vec2* %3
store %dear_imgui-50.Vec2 {float 0x0000000000000000, float 0x0000000000000000}, %dear_imgui-50.Vec2* %3
%61 = bitcast %dear_imgui-50.Vec2* %3 to i64*
%62 = load i64, i64* %61, align 8
call ccc void @igSetNextWindowPos(i64 %58, i32 0, i64 %62)
; SelectorExpr
; CompoundLit
%63 = bitcast %dear_imgui-50.Vec2* %4 to %..rawptr
%64 = call %..rawptr @__mem_zero(%..rawptr %63, i64 8)
store %dear_imgui-50.Vec2 zeroinitializer, %dear_imgui-50.Vec2* %4
store %dear_imgui-50.Vec2 {float 0x4079a00000000000, float zeroinitializer}, %dear_imgui-50.Vec2* %4
%65 = load %state-38.State*, %state-38.State** %0, align 8
%66 = getelementptr inbounds %state-38.State, %state-38.State* %65, i64 0
%67 = getelementptr inbounds %state-38.State, %state-38.State* %66, i64 0, i32 8
%68 = load i64, i64* %67, align 8
%69 = sub i64 %68, 18
%70 = sitofp i64 %69 to float
%71 = getelementptr inbounds %dear_imgui-50.Vec2, %dear_imgui-50.Vec2* %4, i64 0, i32 1
store float %70, float* %71
%72 = load %dear_imgui-50.Vec2, %dear_imgui-50.Vec2* %4, align 4
%73 = bitcast %dear_imgui-50.Vec2* %4 to i64*
%74 = load i64, i64* %73, align 8
call ccc void @igSetNextWindowSize(i64 %74, i32 0)
; IfStmt
; SelectorExpr
%75 = call i8 @dear_imgui-50.begin(%..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$105, i64 0, i32 0), i64 4}, i8* zeroinitializer, i32 8230, %Context* noalias nonnull %__.context_ptr)
%76 = trunc i8 %75 to i1
br i1 %76, label %if.then-1, label %if.done-33
if.then-1:
; DeferStmt
; IfStmt
%77 = load %state-38.State*, %state-38.State** %0, align 8
%78 = getelementptr inbounds %state-38.State, %state-38.State* %77, i64 0
%79 = getelementptr inbounds %state-38.State, %state-38.State* %78, i64 0, i32 40
%80 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %79, align 8
%81 = icmp eq %libgit2_types-55.Repository* %80, zeroinitializer
%82 = zext i1 %81 to i8
%83 = trunc i8 %82 to i1
br i1 %83, label %if.then-2, label %if.else-14
if.then-2:
; ok
; SelectorExpr
; SliceExpr
%84 = load %state-38.State*, %state-38.State** %0, align 8
%85 = getelementptr inbounds %state-38.State, %state-38.State* %84, i64 0
%86 = getelementptr inbounds %state-38.State, %state-38.State* %85, i64 0, i32 24
%87 = load [256 x i8], [256 x i8]* %86, align 1
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$106, i64 0, i32 0), i64 50}, i64 610, i64 58, i64 0, i64 256, i64 256)
%88 = getelementptr inbounds [256 x i8], [256 x i8]* %86, i64 0, i32 0
%89 = getelementptr inbounds i8, i8* %88, i64 0
%90 = sub i64 256, 0
%91 = bitcast {i8*, i64}* %6 to %..rawptr
%92 = call %..rawptr @__mem_zero(%..rawptr %91, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %6
%93 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %6, i64 0, i32 0
store i8* %89, i8** %93
%94 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %6, i64 0, i32 1
store i64 %90, i64* %94
%95 = load {i8*, i64}, {i8*, i64}* %6, align 8
%96 = bitcast {i8*, i64}* %7 to %..rawptr
%97 = call %..rawptr @__mem_zero(%..rawptr %96, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %7
store {i8*, i64} %95, {i8*, i64}* %7
%98 = call i8 @dear_imgui-50.input_text(%..string {i8* getelementptr inbounds ([11 x i8], [11 x i8]* @__str$107, i64 0, i32 0), i64 10}, {i8*, i64}* %7, i32 32, i32 (%dear_imgui-50.TextEditCallbackData*)* zeroinitializer, %..rawptr zeroinitializer, %Context* noalias nonnull %__.context_ptr)
store i8 %98, i8* %5
; IfStmt
; SelectorExpr
%99 = bitcast %dear_imgui-50.Vec2* %8 to %..rawptr
%100 = call %..rawptr @__mem_zero(%..rawptr %99, i64 8)
store %dear_imgui-50.Vec2 zeroinitializer, %dear_imgui-50.Vec2* %8
store %dear_imgui-50.Vec2 {float 0x0000000000000000, float 0x0000000000000000}, %dear_imgui-50.Vec2* %8
%101 = bitcast %dear_imgui-50.Vec2* %8 to i64*
%102 = load i64, i64* %101, align 8
%103 = call i8 @dear_imgui-50.button(%..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$108, i64 0, i32 0), i64 4}, i64 %102, %Context* noalias nonnull %__.context_ptr)
%104 = trunc i8 %103 to i1
br i1 %104, label %if.then-5, label %cmp.or-3
cmp.or-3:
%105 = load i8, i8* %5, align 1
%106 = trunc i8 %105 to i1
br i1 %106, label %if.then-5, label %cmp.or-4
cmp.or-4:
%107 = load %state-38.State*, %state-38.State** %0, align 8
%108 = getelementptr inbounds %state-38.State, %state-38.State* %107, i64 0
%109 = getelementptr inbounds %state-38.State, %state-38.State* %108, i64 0, i32 37
%110 = load i8, i8* %109, align 1
%111 = trunc i8 %110 to i1
br i1 %111, label %if.then-5, label %if.done-13
if.then-5:
; path
; SelectorExpr
; IndexExpr
%112 = load %state-38.State*, %state-38.State** %0, align 8
%113 = getelementptr inbounds %state-38.State, %state-38.State* %112, i64 0
%114 = getelementptr inbounds %state-38.State, %state-38.State* %113, i64 0, i32 24
%115 = getelementptr inbounds [256 x i8], [256 x i8]* %114, i64 0, i32 0
%116 = getelementptr inbounds i8, i8* %115, i64 0
%117 = call %..string @strings-12.to_odin_string(i8* %116, %Context* noalias nonnull %__.context_ptr)
store %..string %117, %..string* %9
; IfStmt
%118 = load %state-38.State*, %state-38.State** %0, align 8
%119 = getelementptr inbounds %state-38.State, %state-38.State* %118, i64 0
%120 = getelementptr inbounds %state-38.State, %state-38.State* %119, i64 0, i32 37
%121 = load i8, i8* %120, align 1
%122 = trunc i8 %121 to i1
br i1 %122, label %if.then-6, label %if.done-7
if.then-6:
; AssignStmt
%123 = load %state-38.State*, %state-38.State** %0, align 8
%124 = getelementptr inbounds %state-38.State, %state-38.State* %123, i64 0
%125 = getelementptr inbounds %state-38.State, %state-38.State* %124, i64 0, i32 38
%126 = load %..string, %..string* %125, align 8
store %..string %126, %..string* %9
br label %if.done-7
if.done-7:
; IfStmt
; SelectorExpr
%127 = load %..string, %..string* %9, align 8
%128 = call i8 @libgit2-29.is_repository(%..string %127, %Context* noalias nonnull %__.context_ptr)
%129 = trunc i8 %128 to i1
br i1 %129, label %if.then-8, label %if.else-11
if.then-8:
; new_repo
; err
; SelectorExpr
%130 = load %..string, %..string* %9, align 8
%131 = call {%libgit2_types-55.Repository*, i32} @libgit2-29.repository_open(%..string %130, i32 1, %..string zeroinitializer, %Context* noalias nonnull %__.context_ptr)
%132 = extractvalue {%libgit2_types-55.Repository*, i32} %131, 0
%133 = extractvalue {%libgit2_types-55.Repository*, i32} %131, 1
store %libgit2_types-55.Repository* %132, %libgit2_types-55.Repository** %10
store i32 %133, i32* %11
; IfStmt
%134 = load i32, i32* %11, align 4
%135 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$109, i64 0, i32 0), i64 50}, i64 620, i64 25, %..string {i8* getelementptr inbounds ([12 x i8], [12 x i8]* @__str$10a, i64 0, i32 0), i64 11})
%136 = bitcast %Source_Code_Location* %12 to %..rawptr
%137 = call %..rawptr @__mem_zero(%..rawptr %136, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %12
store %Source_Code_Location %135, %Source_Code_Location* %12
%138 = call i8 @debug-30.log_if_err(i32 %134, %Source_Code_Location* %12, %Context* noalias nonnull %__.context_ptr)
%139 = trunc i8 %138 to i1
br i1 %139, label %if.done-10, label %if.then-9
if.then-9:
%140 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %10, align 8
%141 = load %state-38.State*, %state-38.State** %0, align 8
call void @main-0.open_repo(%libgit2_types-55.Repository* %140, %state-38.State* %141, %Context* noalias nonnull %__.context_ptr)
br label %if.done-10
if.done-10:
br label %if.done-12
if.else-11:
; SelectorExpr
%142 = load %..string, %..string* %9, align 8
%143 = bitcast %..any* %13 to %..rawptr
%144 = call %..rawptr @__mem_zero(%..rawptr %143, i64 16)
store %..any zeroinitializer, %..any* %13
%145 = bitcast %..string* %9 to %..rawptr
%146 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18
%147 = getelementptr inbounds %..any, %..any* %13, i64 0, i32 0
store %..rawptr %145, %..rawptr* %147
%148 = getelementptr inbounds %..any, %..any* %13, i64 0, i32 1
store %Type_Info* %146, %Type_Info** %148
%149 = load %..any, %..any* %13, align 8
; variadic call argument generation
%150 = bitcast {%..any*, i64}* %14 to %..rawptr
%151 = call %..rawptr @__mem_zero(%..rawptr %150, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %14
%152 = bitcast [1 x %..any]* %15 to %..rawptr
%153 = call %..rawptr @__mem_zero(%..rawptr %152, i64 16)
store [1 x %..any] zeroinitializer, [1 x %..any]* %15
%154 = getelementptr inbounds [1 x %..any], [1 x %..any]* %15, i64 0, i32 0
store %..any %149, %..any* %154
%155 = getelementptr inbounds [1 x %..any], [1 x %..any]* %15, i64 0, i32 0
%156 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %14, i64 0, i32 0
store %..any* %155, %..any** %156
%157 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %14, i64 0, i32 1
store i64 1, i64* %157
%158 = load {%..any*, i64}, {%..any*, i64}* %14, align 8
%159 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$10b, i64 0, i32 0), i64 50}, i64 624, i64 29, %..string {i8* getelementptr inbounds ([12 x i8], [12 x i8]* @__str$10c, i64 0, i32 0), i64 11})
%160 = bitcast {%..any*, i64}* %16 to %..rawptr
%161 = call %..rawptr @__mem_zero(%..rawptr %160, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %16
store {%..any*, i64} %158, {%..any*, i64}* %16
%162 = bitcast %Source_Code_Location* %17 to %..rawptr
%163 = call %..rawptr @__mem_zero(%..rawptr %162, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %17
store %Source_Code_Location %159, %Source_Code_Location* %17
call void @imgui_console-28.logf_error(%..string {i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__str$10d, i64 0, i32 0), i64 16}, {%..any*, i64}* %16, %Source_Code_Location* %17, %Context* noalias nonnull %__.context_ptr)
br label %if.done-12
if.done-12:
; AssignStmt
%164 = load %state-38.State*, %state-38.State** %0, align 8
%165 = getelementptr inbounds %state-38.State, %state-38.State* %164, i64 0
%166 = getelementptr inbounds %state-38.State, %state-38.State* %165, i64 0, i32 37
store i8 0, i8* %166
br label %if.done-13
if.done-13:
br label %if.done-32
if.else-14:
; SelectorExpr
%167 = load %state-38.State*, %state-38.State** %0, align 8
%168 = getelementptr inbounds %state-38.State, %state-38.State* %167, i64 0
%169 = getelementptr inbounds %state-38.State, %state-38.State* %168, i64 0, i32 41
%170 = load %..string, %..string* %169, align 8
%171 = bitcast %..any* %18 to %..rawptr
%172 = call %..rawptr @__mem_zero(%..rawptr %171, i64 16)
store %..any zeroinitializer, %..any* %18
%173 = bitcast %..string* %169 to %..rawptr
%174 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18
%175 = getelementptr inbounds %..any, %..any* %18, i64 0, i32 0
store %..rawptr %173, %..rawptr* %175
%176 = getelementptr inbounds %..any, %..any* %18, i64 0, i32 1
store %Type_Info* %174, %Type_Info** %176
%177 = load %..any, %..any* %18, align 8
; variadic call argument generation
%178 = bitcast {%..any*, i64}* %19 to %..rawptr
%179 = call %..rawptr @__mem_zero(%..rawptr %178, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %19
%180 = bitcast [1 x %..any]* %20 to %..rawptr
%181 = call %..rawptr @__mem_zero(%..rawptr %180, i64 16)
store [1 x %..any] zeroinitializer, [1 x %..any]* %20
%182 = getelementptr inbounds [1 x %..any], [1 x %..any]* %20, i64 0, i32 0
store %..any %177, %..any* %182
%183 = getelementptr inbounds [1 x %..any], [1 x %..any]* %20, i64 0, i32 0
%184 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %19, i64 0, i32 0
store %..any* %183, %..any** %184
%185 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %19, i64 0, i32 1
store i64 1, i64* %185
%186 = load {%..any*, i64}, {%..any*, i64}* %19, align 8
%187 = bitcast {%..any*, i64}* %21 to %..rawptr
%188 = call %..rawptr @__mem_zero(%..rawptr %187, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %21
store {%..any*, i64} %186, {%..any*, i64}* %21
call void @dear_imgui-50.text(%..string {i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__str$10e, i64 0, i32 0), i64 8}, {%..any*, i64}* %21, %Context* noalias nonnull %__.context_ptr)
; SelectorExpr
call ccc void @igSameLine(float 0x0000000000000000, float 0xbff0000000000000)
; IfStmt
; SelectorExpr
%189 = bitcast %dear_imgui-50.Vec2* %22 to %..rawptr
%190 = call %..rawptr @__mem_zero(%..rawptr %189, i64 8)
store %dear_imgui-50.Vec2 zeroinitializer, %dear_imgui-50.Vec2* %22
store %dear_imgui-50.Vec2 {float 0x0000000000000000, float 0x0000000000000000}, %dear_imgui-50.Vec2* %22
%191 = bitcast %dear_imgui-50.Vec2* %22 to i64*
%192 = load i64, i64* %191, align 8
%193 = call i8 @dear_imgui-50.button(%..string {i8* getelementptr inbounds ([11 x i8], [11 x i8]* @__str$10f, i64 0, i32 0), i64 10}, i64 %192, %Context* noalias nonnull %__.context_ptr)
%194 = trunc i8 %193 to i1
br i1 %194, label %if.then-15, label %if.else-16
if.then-15:
; AssignStmt
%195 = load %state-38.State*, %state-38.State** %0, align 8
%196 = getelementptr inbounds %state-38.State, %state-38.State* %195, i64 0
%197 = getelementptr inbounds %state-38.State, %state-38.State* %196, i64 0, i32 27
store i8 1, i8* %197
br label %if.done-31
if.else-16:
; bname
; SelectorExpr
; SelectorExpr
%198 = load %state-38.State*, %state-38.State** %0, align 8
%199 = getelementptr inbounds %state-38.State, %state-38.State* %198, i64 0
%200 = getelementptr inbounds %state-38.State, %state-38.State* %199, i64 0, i32 43
%201 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %200, i64 0, i32 0
%202 = load %libgit2_types-55.Reference*, %libgit2_types-55.Reference** %201, align 8
%203 = call %..string @libgit2-29.reference_name(%libgit2_types-55.Reference* %202, %Context* noalias nonnull %__.context_ptr)
store %..string %203, %..string* %23
; bid
; SelectorExpr
%204 = load %state-38.State*, %state-38.State** %0, align 8
%205 = getelementptr inbounds %state-38.State, %state-38.State* %204, i64 0
%206 = getelementptr inbounds %state-38.State, %state-38.State* %205, i64 0, i32 40
%207 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %206, align 8
%208 = load %..string, %..string* %23, align 8
%209 = call {%libgit2_types-55.Oid, i32} @libgit2-29.reference_name_to_id(%libgit2_types-55.Repository* %207, %..string %208, %Context* noalias nonnull %__.context_ptr)
%210 = extractvalue {%libgit2_types-55.Oid, i32} %209, 0
%211 = extractvalue {%libgit2_types-55.Oid, i32} %209, 1
store %libgit2_types-55.Oid %210, %libgit2_types-55.Oid* %24
; IfStmt
; SelectorExpr
%212 = load %state-38.State*, %state-38.State** %0, align 8
%213 = getelementptr inbounds %state-38.State, %state-38.State* %212, i64 0
%214 = getelementptr inbounds %state-38.State, %state-38.State* %213, i64 0, i32 43
%215 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %214, i64 0, i32 1
%216 = load %libgit2_types-55.Reference*, %libgit2_types-55.Reference** %215, align 8
%217 = icmp ne %libgit2_types-55.Reference* %216, zeroinitializer
%218 = zext i1 %217 to i8
%219 = trunc i8 %218 to i1
br i1 %219, label %if.then-17, label %if.done-22
if.then-17:
; uname
; SelectorExpr
; SelectorExpr
%220 = load %state-38.State*, %state-38.State** %0, align 8
%221 = getelementptr inbounds %state-38.State, %state-38.State* %220, i64 0
%222 = getelementptr inbounds %state-38.State, %state-38.State* %221, i64 0, i32 43
%223 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %222, i64 0, i32 1
%224 = load %libgit2_types-55.Reference*, %libgit2_types-55.Reference** %223, align 8
%225 = call %..string @libgit2-29.reference_name(%libgit2_types-55.Reference* %224, %Context* noalias nonnull %__.context_ptr)
store %..string %225, %..string* %25
; uid
; SelectorExpr
%226 = load %state-38.State*, %state-38.State** %0, align 8
%227 = getelementptr inbounds %state-38.State, %state-38.State* %226, i64 0
%228 = getelementptr inbounds %state-38.State, %state-38.State* %227, i64 0, i32 40
%229 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %228, align 8
%230 = load %..string, %..string* %25, align 8
%231 = call {%libgit2_types-55.Oid, i32} @libgit2-29.reference_name_to_id(%libgit2_types-55.Repository* %229, %..string %230, %Context* noalias nonnull %__.context_ptr)
%232 = extractvalue {%libgit2_types-55.Oid, i32} %231, 0
%233 = extractvalue {%libgit2_types-55.Oid, i32} %231, 1
store %libgit2_types-55.Oid %232, %libgit2_types-55.Oid* %26
; ahead
; behind
; SelectorExpr
%234 = load %state-38.State*, %state-38.State** %0, align 8
%235 = getelementptr inbounds %state-38.State, %state-38.State* %234, i64 0
%236 = getelementptr inbounds %state-38.State, %state-38.State* %235, i64 0, i32 40
%237 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %236, align 8
%238 = load %libgit2_types-55.Oid, %libgit2_types-55.Oid* %24, align 1
%239 = load %libgit2_types-55.Oid, %libgit2_types-55.Oid* %26, align 1
%240 = bitcast %libgit2_types-55.Oid* %29 to %..rawptr
%241 = call %..rawptr @__mem_zero(%..rawptr %240, i64 20)
store %libgit2_types-55.Oid zeroinitializer, %libgit2_types-55.Oid* %29
store %libgit2_types-55.Oid %238, %libgit2_types-55.Oid* %29
%242 = bitcast %libgit2_types-55.Oid* %30 to %..rawptr
%243 = call %..rawptr @__mem_zero(%..rawptr %242, i64 20)
store %libgit2_types-55.Oid zeroinitializer, %libgit2_types-55.Oid* %30
store %libgit2_types-55.Oid %239, %libgit2_types-55.Oid* %30
%244 = call {i64, i64, i32} @libgit2-29.graph_ahead_behind(%libgit2_types-55.Repository* %237, %libgit2_types-55.Oid* %29, %libgit2_types-55.Oid* %30, %Context* noalias nonnull %__.context_ptr)
%245 = extractvalue {i64, i64, i32} %244, 0
%246 = extractvalue {i64, i64, i32} %244, 1
%247 = extractvalue {i64, i64, i32} %244, 2
store i64 %245, i64* %27
store i64 %246, i64* %28
; SelectorExpr
%248 = load i64, i64* %27, align 8
%249 = bitcast %..any* %31 to %..rawptr
%250 = call %..rawptr @__mem_zero(%..rawptr %249, i64 16)
store %..any zeroinitializer, %..any* %31
%251 = bitcast i64* %27 to %..rawptr
%252 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 72
%253 = getelementptr inbounds %..any, %..any* %31, i64 0, i32 0
store %..rawptr %251, %..rawptr* %253
%254 = getelementptr inbounds %..any, %..any* %31, i64 0, i32 1
store %Type_Info* %252, %Type_Info** %254
%255 = load %..any, %..any* %31, align 8
; variadic call argument generation
%256 = bitcast {%..any*, i64}* %32 to %..rawptr
%257 = call %..rawptr @__mem_zero(%..rawptr %256, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %32
%258 = bitcast [1 x %..any]* %33 to %..rawptr
%259 = call %..rawptr @__mem_zero(%..rawptr %258, i64 16)
store [1 x %..any] zeroinitializer, [1 x %..any]* %33
%260 = getelementptr inbounds [1 x %..any], [1 x %..any]* %33, i64 0, i32 0
store %..any %255, %..any* %260
%261 = getelementptr inbounds [1 x %..any], [1 x %..any]* %33, i64 0, i32 0
%262 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %32, i64 0, i32 0
store %..any* %261, %..any** %262
%263 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %32, i64 0, i32 1
store i64 1, i64* %263
%264 = load {%..any*, i64}, {%..any*, i64}* %32, align 8
%265 = bitcast {%..any*, i64}* %34 to %..rawptr
%266 = call %..rawptr @__mem_zero(%..rawptr %265, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %34
store {%..any*, i64} %264, {%..any*, i64}* %34
call void @dear_imgui-50.text(%..string {i8* getelementptr inbounds ([27 x i8], [27 x i8]* @__str$110, i64 0, i32 0), i64 26}, {%..any*, i64}* %34, %Context* noalias nonnull %__.context_ptr)
; SelectorExpr
%267 = load i64, i64* %28, align 8
%268 = bitcast %..any* %35 to %..rawptr
%269 = call %..rawptr @__mem_zero(%..rawptr %268, i64 16)
store %..any zeroinitializer, %..any* %35
%270 = bitcast i64* %28 to %..rawptr
%271 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 72
%272 = getelementptr inbounds %..any, %..any* %35, i64 0, i32 0
store %..rawptr %270, %..rawptr* %272
%273 = getelementptr inbounds %..any, %..any* %35, i64 0, i32 1
store %Type_Info* %271, %Type_Info** %273
%274 = load %..any, %..any* %35, align 8
; variadic call argument generation
%275 = bitcast {%..any*, i64}* %36 to %..rawptr
%276 = call %..rawptr @__mem_zero(%..rawptr %275, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %36
%277 = bitcast [1 x %..any]* %37 to %..rawptr
%278 = call %..rawptr @__mem_zero(%..rawptr %277, i64 16)
store [1 x %..any] zeroinitializer, [1 x %..any]* %37
%279 = getelementptr inbounds [1 x %..any], [1 x %..any]* %37, i64 0, i32 0
store %..any %274, %..any* %279
%280 = getelementptr inbounds [1 x %..any], [1 x %..any]* %37, i64 0, i32 0
%281 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %36, i64 0, i32 0
store %..any* %280, %..any** %281
%282 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %36, i64 0, i32 1
store i64 1, i64* %282
%283 = load {%..any*, i64}, {%..any*, i64}* %36, align 8
%284 = bitcast {%..any*, i64}* %38 to %..rawptr
%285 = call %..rawptr @__mem_zero(%..rawptr %284, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %38
store {%..any*, i64} %283, {%..any*, i64}* %38
call void @dear_imgui-50.text(%..string {i8* getelementptr inbounds ([28 x i8], [28 x i8]* @__str$111, i64 0, i32 0), i64 27}, {%..any*, i64}* %38, %Context* noalias nonnull %__.context_ptr)
; IfStmt
%286 = load i64, i64* %27, align 8
%287 = icmp ugt i64 %286, 0
%288 = zext i1 %287 to i8
%289 = trunc i8 %288 to i1
br i1 %289, label %if.then-18, label %if.done-21
if.then-18:
; IfStmt
; SelectorExpr
%290 = bitcast %dear_imgui-50.Vec2* %39 to %..rawptr
%291 = call %..rawptr @__mem_zero(%..rawptr %290, i64 8)
store %dear_imgui-50.Vec2 zeroinitializer, %dear_imgui-50.Vec2* %39
store %dear_imgui-50.Vec2 {float 0x0000000000000000, float 0x0000000000000000}, %dear_imgui-50.Vec2* %39
%292 = bitcast %dear_imgui-50.Vec2* %39 to i64*
%293 = load i64, i64* %292, align 8
%294 = call i8 @dear_imgui-50.button(%..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$112, i64 0, i32 0), i64 4}, i64 %293, %Context* noalias nonnull %__.context_ptr)
%295 = trunc i8 %294 to i1
br i1 %295, label %if.then-19, label %if.done-20
if.then-19:
; AssignStmt
store i8 1, i8* %1
%296 = load %state-38.State*, %state-38.State** %0, align 8
%297 = getelementptr inbounds %state-38.State, %state-38.State* %296, i64 0
%298 = getelementptr inbounds %state-38.State, %state-38.State* %297, i64 0, i32 40
%299 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %298, align 8
; CompoundLit
%300 = bitcast {%branch-35.Branch*, i64}* %40 to %..rawptr
%301 = call %..rawptr @__mem_zero(%..rawptr %300, i64 16)
store {%branch-35.Branch*, i64} zeroinitializer, {%branch-35.Branch*, i64}* %40
%302 = getelementptr inbounds [1 x %branch-35.Branch], [1 x %branch-35.Branch]* @__csba$2, i64 0, i32 0
%303 = load %state-38.State*, %state-38.State** %0, align 8
%304 = getelementptr inbounds %state-38.State, %state-38.State* %303, i64 0
%305 = getelementptr inbounds %state-38.State, %state-38.State* %304, i64 0, i32 43
%306 = load %branch-35.Branch, %branch-35.Branch* %305, align 8
%307 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %302, i64 0
store %branch-35.Branch %306, %branch-35.Branch* %307
%308 = getelementptr inbounds {%branch-35.Branch*, i64}, {%branch-35.Branch*, i64}* %40, i64 0, i32 0
store %branch-35.Branch* %302, %branch-35.Branch** %308
%309 = getelementptr inbounds {%branch-35.Branch*, i64}, {%branch-35.Branch*, i64}* %40, i64 0, i32 1
store i64 1, i64* %309
%310 = load {%branch-35.Branch*, i64}, {%branch-35.Branch*, i64}* %40, align 8
%311 = bitcast {%branch-35.Branch*, i64}* %41 to %..rawptr
%312 = call %..rawptr @__mem_zero(%..rawptr %311, i64 16)
store {%branch-35.Branch*, i64} zeroinitializer, {%branch-35.Branch*, i64}* %41
store {%branch-35.Branch*, i64} %310, {%branch-35.Branch*, i64}* %41
call void @main-0.do_async_push(%libgit2_types-55.Repository* %299, {%branch-35.Branch*, i64}* %41, %Context* noalias nonnull %__.context_ptr)
br label %if.done-20
if.done-20:
; SelectorExpr
call ccc void @igSameLine(float 0x0000000000000000, float 0xbff0000000000000)
br label %if.done-21
if.done-21:
br label %if.done-22
if.done-22:
; IfStmt
; SelectorExpr
%313 = bitcast %dear_imgui-50.Vec2* %42 to %..rawptr
%314 = call %..rawptr @__mem_zero(%..rawptr %313, i64 8)
store %dear_imgui-50.Vec2 zeroinitializer, %dear_imgui-50.Vec2* %42
store %dear_imgui-50.Vec2 {float 0x0000000000000000, float 0x0000000000000000}, %dear_imgui-50.Vec2* %42
%315 = bitcast %dear_imgui-50.Vec2* %42 to i64*
%316 = load i64, i64* %315, align 8
%317 = call i8 @dear_imgui-50.button(%..string {i8* getelementptr inbounds ([6 x i8], [6 x i8]* @__str$113, i64 0, i32 0), i64 5}, i64 %316, %Context* noalias nonnull %__.context_ptr)
%318 = trunc i8 %317 to i1
br i1 %318, label %if.then-23, label %if.done-24
if.then-23:
%319 = load %state-38.State*, %state-38.State** %0, align 8
%320 = getelementptr inbounds %state-38.State, %state-38.State* %319, i64 0
%321 = getelementptr inbounds %state-38.State, %state-38.State* %320, i64 0, i32 40
%322 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %321, align 8
call void @main-0.do_async_fetch(%libgit2_types-55.Repository* %322, %Context* noalias nonnull %__.context_ptr)
br label %if.done-24
if.done-24:
; SelectorExpr
call ccc void @igSeparator()
; SelectorExpr
%323 = load %state-38.State*, %state-38.State** %0, align 8
%324 = getelementptr inbounds %state-38.State, %state-38.State* %323, i64 0
%325 = getelementptr inbounds %state-38.State, %state-38.State* %324, i64 0, i32 1
%326 = load double, double* %325, align 8
%327 = load %state-38.State*, %state-38.State** %0, align 8
%328 = getelementptr inbounds %state-38.State, %state-38.State* %327, i64 0
%329 = getelementptr inbounds %state-38.State, %state-38.State* %328, i64 0, i32 29
%330 = getelementptr inbounds %status-39.Status, %status-39.Status* %329, i64 0
%331 = load %state-38.State*, %state-38.State** %0, align 8
%332 = getelementptr inbounds %state-38.State, %state-38.State* %331, i64 0
%333 = getelementptr inbounds %state-38.State, %state-38.State* %332, i64 0, i32 40
%334 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %333, align 8
; SelectorExpr
%335 = load %state-38.State*, %state-38.State** %0, align 8
%336 = getelementptr inbounds %state-38.State, %state-38.State* %335, i64 0
%337 = getelementptr inbounds %state-38.State, %state-38.State* %336, i64 0, i32 48
%338 = getelementptr inbounds %diff_view-37.Context*, %diff_view-37.Context** %337, i64 0
call void @status-39.window(double %326, %status-39.Status* %330, %libgit2_types-55.Repository* %334, %diff_view-37.Context** %338, %Context* noalias nonnull %__.context_ptr)
; SelectorExpr
call ccc void @igSeparator()
%339 = load %state-38.State*, %state-38.State** %0, align 8
call void @main-0.commit_window(%state-38.State* %339, %Context* noalias nonnull %__.context_ptr)
; IfStmt
; SelectorExpr
%340 = bitcast %dear_imgui-50.Vec2* %43 to %..rawptr
%341 = call %..rawptr @__mem_zero(%..rawptr %340, i64 8)
store %dear_imgui-50.Vec2 zeroinitializer, %dear_imgui-50.Vec2* %43
store %dear_imgui-50.Vec2 {float 0x0000000000000000, float 0x0000000000000000}, %dear_imgui-50.Vec2* %43
%342 = bitcast %dear_imgui-50.Vec2* %43 to i64*
%343 = load i64, i64* %342, align 8
%344 = call i8 @dear_imgui-50.button(%..string {i8* getelementptr inbounds ([6 x i8], [6 x i8]* @__str$114, i64 0, i32 0), i64 5}, i64 %343, %Context* noalias nonnull %__.context_ptr)
%345 = trunc i8 %344 to i1
br i1 %345, label %if.then-25, label %if.done-28
if.then-25:
; IfStmt
; sig
; err
; SelectorExpr
; SelectorExpr
; SelectorExpr
; SelectorExpr
%346 = load %state-38.State*, %state-38.State** %0, align 8
%347 = getelementptr inbounds %state-38.State, %state-38.State* %346, i64 0
%348 = getelementptr inbounds %state-38.State, %state-38.State* %347, i64 0, i32 43
%349 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %348, i64 0, i32 4
%350 = getelementptr inbounds %commit-34.Commit, %commit-34.Commit* %349, i64 0, i32 2
%351 = getelementptr inbounds %libgit2_types-55.Signature, %libgit2_types-55.Signature* %350, i64 0, i32 1
%352 = load %..string, %..string* %351, align 8
; SelectorExpr
; SelectorExpr
; SelectorExpr
%353 = load %state-38.State*, %state-38.State** %0, align 8
%354 = getelementptr inbounds %state-38.State, %state-38.State* %353, i64 0
%355 = getelementptr inbounds %state-38.State, %state-38.State* %354, i64 0, i32 43
%356 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %355, i64 0, i32 4
%357 = getelementptr inbounds %commit-34.Commit, %commit-34.Commit* %356, i64 0, i32 2
%358 = getelementptr inbounds %libgit2_types-55.Signature, %libgit2_types-55.Signature* %357, i64 0, i32 2
%359 = load %..string, %..string* %358, align 8
%360 = call {%libgit2_types-55.Signature, i32} @libgit2-29.signature_now(%..string %352, %..string %359, %Context* noalias nonnull %__.context_ptr)
%361 = extractvalue {%libgit2_types-55.Signature, i32} %360, 0
%362 = extractvalue {%libgit2_types-55.Signature, i32} %360, 1
store %libgit2_types-55.Signature %361, %libgit2_types-55.Signature* %44
store i32 %362, i32* %45
%363 = load i32, i32* %45, align 4
%364 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$115, i64 0, i32 0), i64 50}, i64 669, i64 103, %..string {i8* getelementptr inbounds ([12 x i8], [12 x i8]* @__str$116, i64 0, i32 0), i64 11})
%365 = bitcast %Source_Code_Location* %46 to %..rawptr
%366 = call %..rawptr @__mem_zero(%..rawptr %365, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %46
store %Source_Code_Location %364, %Source_Code_Location* %46
%367 = call i8 @debug-30.log_if_err(i32 %363, %Source_Code_Location* %46, %Context* noalias nonnull %__.context_ptr)
%368 = trunc i8 %367 to i1
br i1 %368, label %if.done-27, label %if.then-26
if.then-26:
; AssignStmt
; SelectorExpr
%369 = load %state-38.State*, %state-38.State** %0, align 8
%370 = getelementptr inbounds %state-38.State, %state-38.State* %369, i64 0
%371 = getelementptr inbounds %state-38.State, %state-38.State* %370, i64 0, i32 40
%372 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %371, align 8
%373 = getelementptr inbounds %libgit2_types-55.Signature, %libgit2_types-55.Signature* %44, i64 0
%374 = call {%libgit2_types-55.Oid, i32} @libgit2-29.stash_save(%libgit2_types-55.Repository* %372, %libgit2_types-55.Signature* %373, %..string {i8* getelementptr inbounds ([13 x i8], [13 x i8]* @__str$117, i64 0, i32 0), i64 12}, i32 0, %Context* noalias nonnull %__.context_ptr)
%375 = extractvalue {%libgit2_types-55.Oid, i32} %374, 0
%376 = extractvalue {%libgit2_types-55.Oid, i32} %374, 1
store i32 %376, i32* %45
%377 = load i32, i32* %45, align 4
%378 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$118, i64 0, i32 0), i64 50}, i64 673, i64 25, %..string {i8* getelementptr inbounds ([12 x i8], [12 x i8]* @__str$119, i64 0, i32 0), i64 11})
%379 = bitcast %Source_Code_Location* %47 to %..rawptr
%380 = call %..rawptr @__mem_zero(%..rawptr %379, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %47
store %Source_Code_Location %378, %Source_Code_Location* %47
%381 = call i8 @debug-30.log_if_err(i32 %377, %Source_Code_Location* %47, %Context* noalias nonnull %__.context_ptr)
br label %if.done-27
if.done-27:
br label %if.done-28
if.done-28:
; SelectorExpr
call ccc void @igSameLine(float 0x0000000000000000, float 0xbff0000000000000)
; IfStmt
; SelectorExpr
%382 = bitcast %dear_imgui-50.Vec2* %48 to %..rawptr
%383 = call %..rawptr @__mem_zero(%..rawptr %382, i64 8)
store %dear_imgui-50.Vec2 zeroinitializer, %dear_imgui-50.Vec2* %48
store %dear_imgui-50.Vec2 {float 0x0000000000000000, float 0x0000000000000000}, %dear_imgui-50.Vec2* %48
%384 = bitcast %dear_imgui-50.Vec2* %48 to i64*
%385 = load i64, i64* %384, align 8
%386 = call i8 @dear_imgui-50.button(%..string {i8* getelementptr inbounds ([4 x i8], [4 x i8]* @__str$11a, i64 0, i32 0), i64 3}, i64 %385, %Context* noalias nonnull %__.context_ptr)
%387 = trunc i8 %386 to i1
br i1 %387, label %if.then-29, label %if.done-30
if.then-29:
; opts
; SelectorExpr
%388 = call {%libgit2_types-55.Stash_Apply_Options, i32} @libgit2-29.stash_apply_init_options(i32 1, %Context* noalias nonnull %__.context_ptr)
%389 = extractvalue {%libgit2_types-55.Stash_Apply_Options, i32} %388, 0
%390 = extractvalue {%libgit2_types-55.Stash_Apply_Options, i32} %388, 1
store %libgit2_types-55.Stash_Apply_Options %389, %libgit2_types-55.Stash_Apply_Options* %49
; SelectorExpr
%391 = load %state-38.State*, %state-38.State** %0, align 8
%392 = getelementptr inbounds %state-38.State, %state-38.State* %391, i64 0
%393 = getelementptr inbounds %state-38.State, %state-38.State* %392, i64 0, i32 40
%394 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %393, align 8
%395 = getelementptr inbounds %libgit2_types-55.Stash_Apply_Options, %libgit2_types-55.Stash_Apply_Options* %49, i64 0
%396 = call i32 @libgit2-29.stash_pop(%libgit2_types-55.Repository* %394, i64 0, %libgit2_types-55.Stash_Apply_Options* %395, %Context* noalias nonnull %__.context_ptr)
br label %if.done-30
if.done-30:
br label %if.done-31
if.done-31:
br label %if.done-32
if.done-32:
; defer
; SelectorExpr
call ccc void @igEnd()
br label %if.done-33
if.done-33:
; IfStmt
%397 = load i8, i8* %1, align 1
%398 = trunc i8 %397 to i1
br i1 %398, label %if.then-34, label %if.done-35
if.then-34:
; SelectorExpr
call void @dear_imgui-50.open_popup(%..string {i8* getelementptr inbounds ([26 x i8], [26 x i8]* @__str$11b, i64 0, i32 0), i64 25}, %Context* noalias nonnull %__.context_ptr)
br label %if.done-35
if.done-35:
; IfStmt
; SelectorExpr
%399 = call i8 @dear_imgui-50.begin_popup(%..string {i8* getelementptr inbounds ([26 x i8], [26 x i8]* @__str$11c, i64 0, i32 0), i64 25}, %Context* noalias nonnull %__.context_ptr)
%400 = trunc i8 %399 to i1
br i1 %400, label %if.then-36, label %if.done-39
if.then-36:
; DeferStmt
; SelectorExpr
%401 = getelementptr inbounds %sync_windows-43.Mutex, %sync_windows-43.Mutex* @main-0.push_lock, i64 0
call void @sync_windows-43.mutex_lock(%sync_windows-43.Mutex* %401, %Context* noalias nonnull %__.context_ptr)
; IfStmt
; SelectorExpr
%402 = getelementptr inbounds %main-0.TransferPayload, %main-0.TransferPayload* @main-0.tpayload, i64 0, i32 3
%403 = load i8, i8* %402, align 1
%404 = trunc i8 %403 to i1
br i1 %404, label %if.then-37, label %if.done-38
if.then-37:
; AssignStmt
store %main-0.TransferPayload {i64 zeroinitializer, i64 zeroinitializer, i64 zeroinitializer, i8 0}, %main-0.TransferPayload* @main-0.tpayload
; SelectorExpr
call ccc void @igCloseCurrentPopup()
br label %if.done-38
if.done-38:
; size
store %dear_imgui-50.Vec2 {float 0x0000000000000000, float 0x0000000000000000}, %dear_imgui-50.Vec2* %50
; SelectorExpr
; SelectorExpr
%405 = getelementptr inbounds %main-0.TransferPayload, %main-0.TransferPayload* @main-0.tpayload, i64 0, i32 0
%406 = load i64, i64* %405, align 8
%407 = uitofp i64 %406 to float
; SelectorExpr
%408 = getelementptr inbounds %main-0.TransferPayload, %main-0.TransferPayload* @main-0.tpayload, i64 0, i32 1
%409 = load i64, i64* %408, align 8
%410 = uitofp i64 %409 to float
%411 = fdiv float %407, %410
%412 = getelementptr inbounds %dear_imgui-50.Vec2, %dear_imgui-50.Vec2* %50, i64 0
call void @dear_imgui-50.progress_bar(float %411, %dear_imgui-50.Vec2* %412, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$11d, i64 0, i32 0), i64 1}, %Context* noalias nonnull %__.context_ptr)
; SelectorExpr
; SelectorExpr
%413 = getelementptr inbounds %main-0.TransferPayload, %main-0.TransferPayload* @main-0.tpayload, i64 0, i32 2
%414 = load i64, i64* %413, align 8
%415 = bitcast %..any* %51 to %..rawptr
%416 = call %..rawptr @__mem_zero(%..rawptr %415, i64 16)
store %..any zeroinitializer, %..any* %51
%417 = bitcast i64* %413 to %..rawptr
%418 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 72
%419 = getelementptr inbounds %..any, %..any* %51, i64 0, i32 0
store %..rawptr %417, %..rawptr* %419
%420 = getelementptr inbounds %..any, %..any* %51, i64 0, i32 1
store %Type_Info* %418, %Type_Info** %420
%421 = load %..any, %..any* %51, align 8
; variadic call argument generation
%422 = bitcast {%..any*, i64}* %52 to %..rawptr
%423 = call %..rawptr @__mem_zero(%..rawptr %422, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %52
%424 = bitcast [1 x %..any]* %53 to %..rawptr
%425 = call %..rawptr @__mem_zero(%..rawptr %424, i64 16)
store [1 x %..any] zeroinitializer, [1 x %..any]* %53
%426 = getelementptr inbounds [1 x %..any], [1 x %..any]* %53, i64 0, i32 0
store %..any %421, %..any* %426
%427 = getelementptr inbounds [1 x %..any], [1 x %..any]* %53, i64 0, i32 0
%428 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %52, i64 0, i32 0
store %..any* %427, %..any** %428
%429 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %52, i64 0, i32 1
store i64 1, i64* %429
%430 = load {%..any*, i64}, {%..any*, i64}* %52, align 8
%431 = bitcast {%..any*, i64}* %54 to %..rawptr
%432 = call %..rawptr @__mem_zero(%..rawptr %431, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %54
store {%..any*, i64} %430, {%..any*, i64}* %54
call void @dear_imgui-50.text(%..string {i8* getelementptr inbounds ([15 x i8], [15 x i8]* @__str$11e, i64 0, i32 0), i64 14}, {%..any*, i64}* %54, %Context* noalias nonnull %__.context_ptr)
; SelectorExpr
%433 = getelementptr inbounds %sync_windows-43.Mutex, %sync_windows-43.Mutex* @main-0.push_lock, i64 0
call void @sync_windows-43.mutex_unlock(%sync_windows-43.Mutex* %433, %Context* noalias nonnull %__.context_ptr)
; defer
; SelectorExpr
call ccc void @igEndPopup()
br label %if.done-39
if.done-39:
; IfStmt
%434 = load %state-38.State*, %state-38.State** %0, align 8
%435 = getelementptr inbounds %state-38.State, %state-38.State* %434, i64 0
%436 = getelementptr inbounds %state-38.State, %state-38.State* %435, i64 0, i32 27
%437 = load i8, i8* %436, align 1
%438 = trunc i8 %437 to i1
br i1 %438, label %if.then-40, label %if.done-41
if.then-40:
; SelectorExpr
%439 = load %state-38.State*, %state-38.State** %0, align 8
%440 = getelementptr inbounds %state-38.State, %state-38.State* %439, i64 0
%441 = getelementptr inbounds %state-38.State, %state-38.State* %440, i64 0, i32 40
%442 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %441, align 8
call cc 64 void @git_repository_free(%libgit2_types-55.Repository* %442)
; AssignStmt
%443 = load %state-38.State*, %state-38.State** %0, align 8
%444 = getelementptr inbounds %state-38.State, %state-38.State* %443, i64 0
%445 = getelementptr inbounds %state-38.State, %state-38.State* %444, i64 0, i32 40
store %libgit2_types-55.Repository* zeroinitializer, %libgit2_types-55.Repository** %445
; AssignStmt
%446 = load %state-38.State*, %state-38.State** %0, align 8
%447 = getelementptr inbounds %state-38.State, %state-38.State* %446, i64 0
%448 = getelementptr inbounds %state-38.State, %state-38.State* %447, i64 0, i32 27
store i8 0, i8* %448
br label %if.done-41
if.done-41:
ret void
}
define void @main-0.commit_window(%state-38.State* %state, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %state-38.State*, align 16
%1 = alloca {%..any*, i64}, align 16
%2 = alloca {%..any*, i64}, align 16
%3 = alloca {i8*, i64}, align 16
%4 = alloca {i8*, i64}, align 16
%5 = alloca {i8*, i64}, align 16
%6 = alloca {i8*, i64}, align 16
%7 = alloca %dear_imgui-50.Vec2, align 16
%8 = alloca %dear_imgui-50.Vec2, align 16
%9 = alloca %..string, align 16
%10 = alloca %..any, align 16
%11 = alloca %..string, align 16
%12 = alloca %..any, align 16
%13 = alloca %..string, align 16
%14 = alloca {%..any*, i64}, align 16
%15 = alloca [2 x %..any], align 16
%16 = alloca {%..any*, i64}, align 16
%17 = alloca %libgit2_types-55.Signature, align 16
%18 = alloca %libgit2_types-55.Signature, align 16
%19 = alloca %libgit2_types-55.Reference*, align 16
%20 = alloca i32, align 16
%21 = alloca %Source_Code_Location, align 16
%22 = alloca %..string, align 16
%23 = alloca %libgit2_types-55.Oid, align 16
%24 = alloca i32, align 16
%25 = alloca %commit-34.Commit, align 16
%26 = alloca %libgit2_types-55.Oid, align 16
%27 = alloca %libgit2_types-55.Index*, align 16
%28 = alloca i32, align 16
%29 = alloca %Source_Code_Location, align 16
%30 = alloca %libgit2_types-55.Oid, align 16
%31 = alloca i32, align 16
%32 = alloca %Source_Code_Location, align 16
%33 = alloca %libgit2_types-55.Object*, align 16
%34 = alloca i32, align 16
%35 = alloca %libgit2_types-55.Oid, align 16
%36 = alloca %Source_Code_Location, align 16
%37 = alloca %libgit2_types-55.Oid, align 16
%38 = alloca i32, align 16
%39 = alloca {%libgit2_types-55.Commit**, i64}, align 16
%40 = alloca [1 x %libgit2_types-55.Commit*], align 16
%41 = alloca {%libgit2_types-55.Commit**, i64}, align 16
%42 = alloca %Source_Code_Location, align 16
%43 = alloca %libgit2_types-55.Reference*, align 16
%44 = alloca i32, align 16
%45 = alloca %Source_Code_Location, align 16
%46 = alloca %..string, align 16
%47 = alloca i32, align 16
%48 = alloca %..string, align 16
%49 = alloca %libgit2_types-55.Oid, align 16
%50 = alloca i32, align 16
%51 = alloca %commit-34.Commit, align 16
%52 = alloca %libgit2_types-55.Oid, align 16
%53 = alloca %libgit2_types-55.Reference*, align 16
%54 = alloca %branch-35.Branch, align 16
%55 = alloca %Source_Code_Location, align 16
store %state-38.State* %state, %state-38.State** %0
; IfStmt
; SelectorExpr
%56 = load %state-38.State*, %state-38.State** %0, align 8
%57 = getelementptr inbounds %state-38.State, %state-38.State* %56, i64 0
%58 = getelementptr inbounds %state-38.State, %state-38.State* %57, i64 0, i32 29
%59 = getelementptr inbounds %status-39.Status, %status-39.Status* %58, i64 0, i32 1
%60 = load {%libgit2_types-55.Status_Entry**, i64, i64, %Allocator}, {%libgit2_types-55.Status_Entry**, i64, i64, %Allocator}* %59, align 8
%61 = extractvalue {%libgit2_types-55.Status_Entry**, i64, i64, %Allocator} %60, 1
%62 = icmp sgt i64 %61, 0
%63 = zext i1 %62 to i8
%64 = trunc i8 %63 to i1
br i1 %64, label %if.then-1, label %if.done-16
if.then-1:
; SelectorExpr
; variadic call argument generation
%65 = bitcast {%..any*, i64}* %1 to %..rawptr
%66 = call %..rawptr @__mem_zero(%..rawptr %65, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %1
%67 = load {%..any*, i64}, {%..any*, i64}* %1, align 8
%68 = bitcast {%..any*, i64}* %2 to %..rawptr
%69 = call %..rawptr @__mem_zero(%..rawptr %68, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %2
store {%..any*, i64} %67, {%..any*, i64}* %2
call void @dear_imgui-50.text(%..string {i8* getelementptr inbounds ([16 x i8], [16 x i8]* @__str$11f, i64 0, i32 0), i64 15}, {%..any*, i64}* %2, %Context* noalias nonnull %__.context_ptr)
; SelectorExpr
; SliceExpr
%70 = load %state-38.State*, %state-38.State** %0, align 8
%71 = getelementptr inbounds %state-38.State, %state-38.State* %70, i64 0
%72 = getelementptr inbounds %state-38.State, %state-38.State* %71, i64 0, i32 46
%73 = load [513 x i8], [513 x i8]* %72, align 1
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$120, i64 0, i32 0), i64 50}, i64 714, i64 58, i64 0, i64 513, i64 513)
%74 = getelementptr inbounds [513 x i8], [513 x i8]* %72, i64 0, i32 0
%75 = getelementptr inbounds i8, i8* %74, i64 0
%76 = sub i64 513, 0
%77 = bitcast {i8*, i64}* %3 to %..rawptr
%78 = call %..rawptr @__mem_zero(%..rawptr %77, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %3
%79 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %3, i64 0, i32 0
store i8* %75, i8** %79
%80 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %3, i64 0, i32 1
store i64 %76, i64* %80
%81 = load {i8*, i64}, {i8*, i64}* %3, align 8
%82 = bitcast {i8*, i64}* %4 to %..rawptr
%83 = call %..rawptr @__mem_zero(%..rawptr %82, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %4
store {i8*, i64} %81, {i8*, i64}* %4
%84 = call i8 @dear_imgui-50.input_text(%..string {i8* getelementptr inbounds ([8 x i8], [8 x i8]* @__str$121, i64 0, i32 0), i64 7}, {i8*, i64}* %4, i32 0, i32 (%dear_imgui-50.TextEditCallbackData*)* zeroinitializer, %..rawptr zeroinitializer, %Context* noalias nonnull %__.context_ptr)
; SelectorExpr
; SliceExpr
%85 = load %state-38.State*, %state-38.State** %0, align 8
%86 = getelementptr inbounds %state-38.State, %state-38.State* %85, i64 0
%87 = getelementptr inbounds %state-38.State, %state-38.State* %86, i64 0, i32 47
%88 = load [4097 x i8], [4097 x i8]* %87, align 1
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$122, i64 0, i32 0), i64 50}, i64 715, i64 58, i64 0, i64 4097, i64 4097)
%89 = getelementptr inbounds [4097 x i8], [4097 x i8]* %87, i64 0, i32 0
%90 = getelementptr inbounds i8, i8* %89, i64 0
%91 = sub i64 4097, 0
%92 = bitcast {i8*, i64}* %5 to %..rawptr
%93 = call %..rawptr @__mem_zero(%..rawptr %92, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %5
%94 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %5, i64 0, i32 0
store i8* %90, i8** %94
%95 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %5, i64 0, i32 1
store i64 %91, i64* %95
%96 = load {i8*, i64}, {i8*, i64}* %5, align 8
%97 = bitcast {i8*, i64}* %6 to %..rawptr
%98 = call %..rawptr @__mem_zero(%..rawptr %97, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %6
store {i8*, i64} %96, {i8*, i64}* %6
%99 = bitcast %dear_imgui-50.Vec2* %7 to %..rawptr
%100 = call %..rawptr @__mem_zero(%..rawptr %99, i64 8)
store %dear_imgui-50.Vec2 zeroinitializer, %dear_imgui-50.Vec2* %7
store %dear_imgui-50.Vec2 {float 0x0000000000000000, float 0x4059000000000000}, %dear_imgui-50.Vec2* %7
%101 = bitcast %dear_imgui-50.Vec2* %7 to i64*
%102 = load i64, i64* %101, align 8
%103 = call i8 @dear_imgui-50.input_text_multiline(%..string {i8* getelementptr inbounds ([8 x i8], [8 x i8]* @__str$123, i64 0, i32 0), i64 7}, {i8*, i64}* %6, i64 %102, i32 0, i32 (%dear_imgui-50.TextEditCallbackData*)* zeroinitializer, %..rawptr zeroinitializer, %Context* noalias nonnull %__.context_ptr)
; IfStmt
; SelectorExpr
%104 = bitcast %dear_imgui-50.Vec2* %8 to %..rawptr
%105 = call %..rawptr @__mem_zero(%..rawptr %104, i64 8)
store %dear_imgui-50.Vec2 zeroinitializer, %dear_imgui-50.Vec2* %8
store %dear_imgui-50.Vec2 {float 0x0000000000000000, float 0x0000000000000000}, %dear_imgui-50.Vec2* %8
%106 = bitcast %dear_imgui-50.Vec2* %8 to i64*
%107 = load i64, i64* %106, align 8
%108 = call i8 @dear_imgui-50.button(%..string {i8* getelementptr inbounds ([7 x i8], [7 x i8]* @__str$124, i64 0, i32 0), i64 6}, i64 %107, %Context* noalias nonnull %__.context_ptr)
%109 = trunc i8 %108 to i1
br i1 %109, label %if.then-2, label %if.done-15
if.then-2:
; commit_msg
; SelectorExpr
; SelectorExpr
; IndexExpr
%110 = load %state-38.State*, %state-38.State** %0, align 8
%111 = getelementptr inbounds %state-38.State, %state-38.State* %110, i64 0
%112 = getelementptr inbounds %state-38.State, %state-38.State* %111, i64 0, i32 46
%113 = getelementptr inbounds [513 x i8], [513 x i8]* %112, i64 0, i32 0
%114 = getelementptr inbounds i8, i8* %113, i64 0
%115 = call %..string @strings-12.to_odin_string(i8* %114, %Context* noalias nonnull %__.context_ptr)
; SelectorExpr
; IndexExpr
%116 = load %state-38.State*, %state-38.State** %0, align 8
%117 = getelementptr inbounds %state-38.State, %state-38.State* %116, i64 0
%118 = getelementptr inbounds %state-38.State, %state-38.State* %117, i64 0, i32 47
%119 = getelementptr inbounds [4097 x i8], [4097 x i8]* %118, i64 0, i32 0
%120 = getelementptr inbounds i8, i8* %119, i64 0
%121 = call %..string @strings-12.to_odin_string(i8* %120, %Context* noalias nonnull %__.context_ptr)
%122 = bitcast %..any* %10 to %..rawptr
%123 = call %..rawptr @__mem_zero(%..rawptr %122, i64 16)
store %..any zeroinitializer, %..any* %10
%124 = bitcast %..string* %11 to %..rawptr
%125 = call %..rawptr @__mem_zero(%..rawptr %124, i64 16)
store %..string zeroinitializer, %..string* %11
store %..string %115, %..string* %11
%126 = bitcast %..string* %11 to %..rawptr
%127 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18
%128 = getelementptr inbounds %..any, %..any* %10, i64 0, i32 0
store %..rawptr %126, %..rawptr* %128
%129 = getelementptr inbounds %..any, %..any* %10, i64 0, i32 1
store %Type_Info* %127, %Type_Info** %129
%130 = load %..any, %..any* %10, align 8
%131 = bitcast %..any* %12 to %..rawptr
%132 = call %..rawptr @__mem_zero(%..rawptr %131, i64 16)
store %..any zeroinitializer, %..any* %12
%133 = bitcast %..string* %13 to %..rawptr
%134 = call %..rawptr @__mem_zero(%..rawptr %133, i64 16)
store %..string zeroinitializer, %..string* %13
store %..string %121, %..string* %13
%135 = bitcast %..string* %13 to %..rawptr
%136 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18
%137 = getelementptr inbounds %..any, %..any* %12, i64 0, i32 0
store %..rawptr %135, %..rawptr* %137
%138 = getelementptr inbounds %..any, %..any* %12, i64 0, i32 1
store %Type_Info* %136, %Type_Info** %138
%139 = load %..any, %..any* %12, align 8
; variadic call argument generation
%140 = bitcast {%..any*, i64}* %14 to %..rawptr
%141 = call %..rawptr @__mem_zero(%..rawptr %140, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %14
%142 = bitcast [2 x %..any]* %15 to %..rawptr
%143 = call %..rawptr @__mem_zero(%..rawptr %142, i64 32)
store [2 x %..any] zeroinitializer, [2 x %..any]* %15
%144 = getelementptr inbounds [2 x %..any], [2 x %..any]* %15, i64 0, i32 0
store %..any %130, %..any* %144
%145 = getelementptr inbounds [2 x %..any], [2 x %..any]* %15, i64 0, i32 1
store %..any %139, %..any* %145
%146 = getelementptr inbounds [2 x %..any], [2 x %..any]* %15, i64 0, i32 0
%147 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %14, i64 0, i32 0
store %..any* %146, %..any** %147
%148 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %14, i64 0, i32 1
store i64 2, i64* %148
%149 = load {%..any*, i64}, {%..any*, i64}* %14, align 8
%150 = bitcast {%..any*, i64}* %16 to %..rawptr
%151 = call %..rawptr @__mem_zero(%..rawptr %150, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %16
store {%..any*, i64} %149, {%..any*, i64}* %16
%152 = call %..string @fmt-11.aprintf(%..string {i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__str$125, i64 0, i32 0), i64 8}, {%..any*, i64}* %16, %Context* noalias nonnull %__.context_ptr)
store %..string %152, %..string* %9
; DeferStmt
; committer
; SelectorExpr
; SelectorExpr
; SelectorExpr
%153 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 2
%154 = load %..string, %..string* %153, align 8
; SelectorExpr
; SelectorExpr
%155 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 3
%156 = load %..string, %..string* %155, align 8
%157 = call {%libgit2_types-55.Signature, i32} @libgit2-29.signature_now(%..string %154, %..string %156, %Context* noalias nonnull %__.context_ptr)
%158 = extractvalue {%libgit2_types-55.Signature, i32} %157, 0
%159 = extractvalue {%libgit2_types-55.Signature, i32} %157, 1
store %libgit2_types-55.Signature %158, %libgit2_types-55.Signature* %17
; author
%160 = load %libgit2_types-55.Signature, %libgit2_types-55.Signature* %17, align 8
store %libgit2_types-55.Signature %160, %libgit2_types-55.Signature* %18
; IfStmt
; ref
; err
; SelectorExpr
%161 = load %state-38.State*, %state-38.State** %0, align 8
%162 = getelementptr inbounds %state-38.State, %state-38.State* %161, i64 0
%163 = getelementptr inbounds %state-38.State, %state-38.State* %162, i64 0, i32 40
%164 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %163, align 8
%165 = call {%libgit2_types-55.Reference*, i32} @libgit2-29.repository_head(%libgit2_types-55.Repository* %164, %Context* noalias nonnull %__.context_ptr)
%166 = extractvalue {%libgit2_types-55.Reference*, i32} %165, 0
%167 = extractvalue {%libgit2_types-55.Reference*, i32} %165, 1
store %libgit2_types-55.Reference* %166, %libgit2_types-55.Reference** %19
store i32 %167, i32* %20
%168 = load i32, i32* %20, align 4
%169 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$126, i64 0, i32 0), i64 50}, i64 728, i64 56, %..string {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$127, i64 0, i32 0), i64 13})
%170 = bitcast %Source_Code_Location* %21 to %..rawptr
%171 = call %..rawptr @__mem_zero(%..rawptr %170, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %21
store %Source_Code_Location %169, %Source_Code_Location* %21
%172 = call i8 @debug-30.log_if_err(i32 %168, %Source_Code_Location* %21, %Context* noalias nonnull %__.context_ptr)
%173 = trunc i8 %172 to i1
br i1 %173, label %if.done-14, label %if.then-3
if.then-3:
; refname
; SelectorExpr
%174 = load %libgit2_types-55.Reference*, %libgit2_types-55.Reference** %19, align 8
%175 = call %..string @libgit2-29.reference_name(%libgit2_types-55.Reference* %174, %Context* noalias nonnull %__.context_ptr)
store %..string %175, %..string* %22
; oid
; ok
; SelectorExpr
%176 = load %state-38.State*, %state-38.State** %0, align 8
%177 = getelementptr inbounds %state-38.State, %state-38.State* %176, i64 0
%178 = getelementptr inbounds %state-38.State, %state-38.State* %177, i64 0, i32 40
%179 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %178, align 8
%180 = load %..string, %..string* %22, align 8
%181 = call {%libgit2_types-55.Oid, i32} @libgit2-29.reference_name_to_id(%libgit2_types-55.Repository* %179, %..string %180, %Context* noalias nonnull %__.context_ptr)
%182 = extractvalue {%libgit2_types-55.Oid, i32} %181, 0
%183 = extractvalue {%libgit2_types-55.Oid, i32} %181, 1
store %libgit2_types-55.Oid %182, %libgit2_types-55.Oid* %23
store i32 %183, i32* %24
; commit
; SelectorExpr
%184 = load %state-38.State*, %state-38.State** %0, align 8
%185 = getelementptr inbounds %state-38.State, %state-38.State* %184, i64 0
%186 = getelementptr inbounds %state-38.State, %state-38.State* %185, i64 0, i32 40
%187 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %186, align 8
%188 = load %libgit2_types-55.Oid, %libgit2_types-55.Oid* %23, align 1
%189 = bitcast %libgit2_types-55.Oid* %26 to %..rawptr
%190 = call %..rawptr @__mem_zero(%..rawptr %189, i64 20)
store %libgit2_types-55.Oid zeroinitializer, %libgit2_types-55.Oid* %26
store %libgit2_types-55.Oid %188, %libgit2_types-55.Oid* %26
%191 = call %commit-34.Commit @commit-34.from_oid(%libgit2_types-55.Repository* %187, %libgit2_types-55.Oid* %26, %Context* noalias nonnull %__.context_ptr)
store %commit-34.Commit %191, %commit-34.Commit* %25
; IfStmt
; index
; err
; SelectorExpr
%192 = load %state-38.State*, %state-38.State** %0, align 8
%193 = getelementptr inbounds %state-38.State, %state-38.State* %192, i64 0
%194 = getelementptr inbounds %state-38.State, %state-38.State* %193, i64 0, i32 40
%195 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %194, align 8
%196 = call {%libgit2_types-55.Index*, i32} @libgit2-29.repository_index(%libgit2_types-55.Repository* %195, %Context* noalias nonnull %__.context_ptr)
%197 = extractvalue {%libgit2_types-55.Index*, i32} %196, 0
%198 = extractvalue {%libgit2_types-55.Index*, i32} %196, 1
store %libgit2_types-55.Index* %197, %libgit2_types-55.Index** %27
store i32 %198, i32* %28
%199 = load i32, i32* %28, align 4
%200 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$128, i64 0, i32 0), i64 50}, i64 733, i64 63, %..string {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$129, i64 0, i32 0), i64 13})
%201 = bitcast %Source_Code_Location* %29 to %..rawptr
%202 = call %..rawptr @__mem_zero(%..rawptr %201, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %29
store %Source_Code_Location %200, %Source_Code_Location* %29
%203 = call i8 @debug-30.log_if_err(i32 %199, %Source_Code_Location* %29, %Context* noalias nonnull %__.context_ptr)
%204 = trunc i8 %203 to i1
br i1 %204, label %if.done-13, label %if.then-4
if.then-4:
; IfStmt
; tree_id
; err
; SelectorExpr
%205 = load %libgit2_types-55.Index*, %libgit2_types-55.Index** %27, align 8
%206 = call {%libgit2_types-55.Oid, i32} @libgit2-29.index_write_tree(%libgit2_types-55.Index* %205, %Context* noalias nonnull %__.context_ptr)
%207 = extractvalue {%libgit2_types-55.Oid, i32} %206, 0
%208 = extractvalue {%libgit2_types-55.Oid, i32} %206, 1
store %libgit2_types-55.Oid %207, %libgit2_types-55.Oid* %30
store i32 %208, i32* %31
%209 = load i32, i32* %31, align 4
%210 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$12a, i64 0, i32 0), i64 50}, i64 735, i64 70, %..string {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$12b, i64 0, i32 0), i64 13})
%211 = bitcast %Source_Code_Location* %32 to %..rawptr
%212 = call %..rawptr @__mem_zero(%..rawptr %211, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %32
store %Source_Code_Location %210, %Source_Code_Location* %32
%213 = call i8 @debug-30.log_if_err(i32 %209, %Source_Code_Location* %32, %Context* noalias nonnull %__.context_ptr)
%214 = trunc i8 %213 to i1
br i1 %214, label %if.done-12, label %if.then-5
if.then-5:
; IfStmt
; tree
; err
; SelectorExpr
%215 = load %state-38.State*, %state-38.State** %0, align 8
%216 = getelementptr inbounds %state-38.State, %state-38.State* %215, i64 0
%217 = getelementptr inbounds %state-38.State, %state-38.State* %216, i64 0, i32 40
%218 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %217, align 8
%219 = load %libgit2_types-55.Oid, %libgit2_types-55.Oid* %30, align 1
%220 = bitcast %libgit2_types-55.Oid* %35 to %..rawptr
%221 = call %..rawptr @__mem_zero(%..rawptr %220, i64 20)
store %libgit2_types-55.Oid zeroinitializer, %libgit2_types-55.Oid* %35
store %libgit2_types-55.Oid %219, %libgit2_types-55.Oid* %35
%222 = call {%libgit2_types-55.Object*, i32} @libgit2-29.object_lookup(%libgit2_types-55.Repository* %218, %libgit2_types-55.Oid* %35, i32 2, %Context* noalias nonnull %__.context_ptr)
%223 = extractvalue {%libgit2_types-55.Object*, i32} %222, 0
%224 = extractvalue {%libgit2_types-55.Object*, i32} %222, 1
store %libgit2_types-55.Object* %223, %libgit2_types-55.Object** %33
store i32 %224, i32* %34
%225 = load i32, i32* %34, align 4
%226 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$12c, i64 0, i32 0), i64 50}, i64 737, i64 95, %..string {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$12d, i64 0, i32 0), i64 13})
%227 = bitcast %Source_Code_Location* %36 to %..rawptr
%228 = call %..rawptr @__mem_zero(%..rawptr %227, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %36
store %Source_Code_Location %226, %Source_Code_Location* %36
%229 = call i8 @debug-30.log_if_err(i32 %225, %Source_Code_Location* %36, %Context* noalias nonnull %__.context_ptr)
%230 = trunc i8 %229 to i1
br i1 %230, label %if.done-11, label %if.then-6
if.then-6:
; IfStmt
; id
; err
; SelectorExpr
%231 = load %state-38.State*, %state-38.State** %0, align 8
%232 = getelementptr inbounds %state-38.State, %state-38.State* %231, i64 0
%233 = getelementptr inbounds %state-38.State, %state-38.State* %232, i64 0, i32 40
%234 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %233, align 8
%235 = getelementptr inbounds %libgit2_types-55.Signature, %libgit2_types-55.Signature* %18, i64 0
%236 = getelementptr inbounds %libgit2_types-55.Signature, %libgit2_types-55.Signature* %17, i64 0
%237 = load %..string, %..string* %9, align 8
%238 = load %libgit2_types-55.Object*, %libgit2_types-55.Object** %33, align 8
%239 = bitcast %libgit2_types-55.Object* %238 to %libgit2_types-55.Tree*
; SelectorExpr
%240 = getelementptr inbounds %commit-34.Commit, %commit-34.Commit* %25, i64 0, i32 0
%241 = load %libgit2_types-55.Commit*, %libgit2_types-55.Commit** %240, align 8
; variadic call argument generation
%242 = bitcast {%libgit2_types-55.Commit**, i64}* %39 to %..rawptr
%243 = call %..rawptr @__mem_zero(%..rawptr %242, i64 16)
store {%libgit2_types-55.Commit**, i64} zeroinitializer, {%libgit2_types-55.Commit**, i64}* %39
%244 = bitcast [1 x %libgit2_types-55.Commit*]* %40 to %..rawptr
%245 = call %..rawptr @__mem_zero(%..rawptr %244, i64 8)
store [1 x %libgit2_types-55.Commit*] zeroinitializer, [1 x %libgit2_types-55.Commit*]* %40
%246 = getelementptr inbounds [1 x %libgit2_types-55.Commit*], [1 x %libgit2_types-55.Commit*]* %40, i64 0, i32 0
store %libgit2_types-55.Commit* %241, %libgit2_types-55.Commit** %246
%247 = getelementptr inbounds [1 x %libgit2_types-55.Commit*], [1 x %libgit2_types-55.Commit*]* %40, i64 0, i32 0
%248 = getelementptr inbounds {%libgit2_types-55.Commit**, i64}, {%libgit2_types-55.Commit**, i64}* %39, i64 0, i32 0
store %libgit2_types-55.Commit** %247, %libgit2_types-55.Commit*** %248
%249 = getelementptr inbounds {%libgit2_types-55.Commit**, i64}, {%libgit2_types-55.Commit**, i64}* %39, i64 0, i32 1
store i64 1, i64* %249
%250 = load {%libgit2_types-55.Commit**, i64}, {%libgit2_types-55.Commit**, i64}* %39, align 8
%251 = bitcast {%libgit2_types-55.Commit**, i64}* %41 to %..rawptr
%252 = call %..rawptr @__mem_zero(%..rawptr %251, i64 16)
store {%libgit2_types-55.Commit**, i64} zeroinitializer, {%libgit2_types-55.Commit**, i64}* %41
store {%libgit2_types-55.Commit**, i64} %250, {%libgit2_types-55.Commit**, i64}* %41
%253 = call {%libgit2_types-55.Oid, i32} @libgit2-29.commit_create(%libgit2_types-55.Repository* %234, %..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$12e, i64 0, i32 0), i64 4}, %libgit2_types-55.Signature* %235, %libgit2_types-55.Signature* %236, %..string %237, %libgit2_types-55.Tree* %239, {%libgit2_types-55.Commit**, i64}* %41, %Context* noalias nonnull %__.context_ptr)
%254 = extractvalue {%libgit2_types-55.Oid, i32} %253, 0
%255 = extractvalue {%libgit2_types-55.Oid, i32} %253, 1
store %libgit2_types-55.Oid %254, %libgit2_types-55.Oid* %37
store i32 %255, i32* %38
%256 = load i32, i32* %38, align 4
%257 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$12f, i64 0, i32 0), i64 50}, i64 740, i64 104, %..string {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$130, i64 0, i32 0), i64 13})
%258 = bitcast %Source_Code_Location* %42 to %..rawptr
%259 = call %..rawptr @__mem_zero(%..rawptr %258, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %42
store %Source_Code_Location %257, %Source_Code_Location* %42
%260 = call i8 @debug-30.log_if_err(i32 %256, %Source_Code_Location* %42, %Context* noalias nonnull %__.context_ptr)
%261 = trunc i8 %260 to i1
br i1 %261, label %if.done-10, label %if.then-7
if.then-7:
; IfStmt
; ref
; err
; SelectorExpr
%262 = load %state-38.State*, %state-38.State** %0, align 8
%263 = getelementptr inbounds %state-38.State, %state-38.State* %262, i64 0
%264 = getelementptr inbounds %state-38.State, %state-38.State* %263, i64 0, i32 40
%265 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %264, align 8
%266 = call {%libgit2_types-55.Reference*, i32} @libgit2-29.repository_head(%libgit2_types-55.Repository* %265, %Context* noalias nonnull %__.context_ptr)
%267 = extractvalue {%libgit2_types-55.Reference*, i32} %266, 0
%268 = extractvalue {%libgit2_types-55.Reference*, i32} %266, 1
store %libgit2_types-55.Reference* %267, %libgit2_types-55.Reference** %43
store i32 %268, i32* %44
%269 = load i32, i32* %44, align 4
%270 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$131, i64 0, i32 0), i64 50}, i64 742, i64 76, %..string {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$132, i64 0, i32 0), i64 13})
%271 = bitcast %Source_Code_Location* %45 to %..rawptr
%272 = call %..rawptr @__mem_zero(%..rawptr %271, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %45
store %Source_Code_Location %270, %Source_Code_Location* %45
%273 = call i8 @debug-30.log_if_err(i32 %269, %Source_Code_Location* %45, %Context* noalias nonnull %__.context_ptr)
%274 = trunc i8 %273 to i1
br i1 %274, label %if.done-9, label %if.then-8
if.then-8:
; bname
; err
; SelectorExpr
%275 = load %libgit2_types-55.Reference*, %libgit2_types-55.Reference** %43, align 8
%276 = call {%..string, i32} @libgit2-29.branch_name(%libgit2_types-55.Reference* %275, %Context* noalias nonnull %__.context_ptr)
%277 = extractvalue {%..string, i32} %276, 0
%278 = extractvalue {%..string, i32} %276, 1
store %..string %277, %..string* %46
store i32 %278, i32* %47
; refname
; SelectorExpr
%279 = load %libgit2_types-55.Reference*, %libgit2_types-55.Reference** %43, align 8
%280 = call %..string @libgit2-29.reference_name(%libgit2_types-55.Reference* %279, %Context* noalias nonnull %__.context_ptr)
store %..string %280, %..string* %48
; oid
; ok
; SelectorExpr
%281 = load %state-38.State*, %state-38.State** %0, align 8
%282 = getelementptr inbounds %state-38.State, %state-38.State* %281, i64 0
%283 = getelementptr inbounds %state-38.State, %state-38.State* %282, i64 0, i32 40
%284 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %283, align 8
%285 = load %..string, %..string* %48, align 8
%286 = call {%libgit2_types-55.Oid, i32} @libgit2-29.reference_name_to_id(%libgit2_types-55.Repository* %284, %..string %285, %Context* noalias nonnull %__.context_ptr)
%287 = extractvalue {%libgit2_types-55.Oid, i32} %286, 0
%288 = extractvalue {%libgit2_types-55.Oid, i32} %286, 1
store %libgit2_types-55.Oid %287, %libgit2_types-55.Oid* %49
store i32 %288, i32* %50
; commit
; SelectorExpr
%289 = load %state-38.State*, %state-38.State** %0, align 8
%290 = getelementptr inbounds %state-38.State, %state-38.State* %289, i64 0
%291 = getelementptr inbounds %state-38.State, %state-38.State* %290, i64 0, i32 40
%292 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %291, align 8
%293 = load %libgit2_types-55.Oid, %libgit2_types-55.Oid* %49, align 1
%294 = bitcast %libgit2_types-55.Oid* %52 to %..rawptr
%295 = call %..rawptr @__mem_zero(%..rawptr %294, i64 20)
store %libgit2_types-55.Oid zeroinitializer, %libgit2_types-55.Oid* %52
store %libgit2_types-55.Oid %293, %libgit2_types-55.Oid* %52
%296 = call %commit-34.Commit @commit-34.from_oid(%libgit2_types-55.Repository* %292, %libgit2_types-55.Oid* %52, %Context* noalias nonnull %__.context_ptr)
store %commit-34.Commit %296, %commit-34.Commit* %51
; upstream
; SelectorExpr
%297 = load %libgit2_types-55.Reference*, %libgit2_types-55.Reference** %43, align 8
%298 = call {%libgit2_types-55.Reference*, i32} @libgit2-29.branch_upstream(%libgit2_types-55.Reference* %297, %Context* noalias nonnull %__.context_ptr)
%299 = extractvalue {%libgit2_types-55.Reference*, i32} %298, 0
%300 = extractvalue {%libgit2_types-55.Reference*, i32} %298, 1
store %libgit2_types-55.Reference* %299, %libgit2_types-55.Reference** %53
; AssignStmt
%301 = load %state-38.State*, %state-38.State** %0, align 8
%302 = getelementptr inbounds %state-38.State, %state-38.State* %301, i64 0
%303 = getelementptr inbounds %state-38.State, %state-38.State* %302, i64 0, i32 43
; CompoundLit
%304 = bitcast %branch-35.Branch* %54 to %..rawptr
%305 = call %..rawptr @__mem_zero(%..rawptr %304, i64 208)
store %branch-35.Branch zeroinitializer, %branch-35.Branch* %54
store %branch-35.Branch {%libgit2_types-55.Reference* zeroinitializer, %libgit2_types-55.Reference* zeroinitializer, %..string zeroinitializer, i32 1, %commit-34.Commit zeroinitializer, i64 0, i64 0}, %branch-35.Branch* %54
%306 = load %libgit2_types-55.Reference*, %libgit2_types-55.Reference** %43, align 8
%307 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %54, i64 0, i32 0
store %libgit2_types-55.Reference* %306, %libgit2_types-55.Reference** %307
%308 = load %libgit2_types-55.Reference*, %libgit2_types-55.Reference** %53, align 8
%309 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %54, i64 0, i32 1
store %libgit2_types-55.Reference* %308, %libgit2_types-55.Reference** %309
%310 = load %..string, %..string* %46, align 8
%311 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %54, i64 0, i32 2
store %..string %310, %..string* %311
%312 = load %commit-34.Commit, %commit-34.Commit* %51, align 8
%313 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %54, i64 0, i32 4
store %commit-34.Commit %312, %commit-34.Commit* %313
%314 = load %branch-35.Branch, %branch-35.Branch* %54, align 8
store %branch-35.Branch %314, %branch-35.Branch* %303
br label %if.done-9
if.done-9:
br label %if.done-10
if.done-10:
br label %if.done-11
if.done-11:
br label %if.done-12
if.done-12:
br label %if.done-13
if.done-13:
br label %if.done-14
if.done-14:
; AssignStmt
%315 = load %state-38.State*, %state-38.State** %0, align 8
%316 = getelementptr inbounds %state-38.State, %state-38.State* %315, i64 0
%317 = getelementptr inbounds %state-38.State, %state-38.State* %316, i64 0, i32 46
store [513 x i8] zeroinitializer, [513 x i8]* %317
; AssignStmt
%318 = load %state-38.State*, %state-38.State** %0, align 8
%319 = getelementptr inbounds %state-38.State, %state-38.State* %318, i64 0
%320 = getelementptr inbounds %state-38.State, %state-38.State* %319, i64 0, i32 47
store [4097 x i8] zeroinitializer, [4097 x i8]* %320
; defer
; SelectorExpr
%321 = load %..string, %..string* %9, align 8
%322 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$133, i64 0, i32 0), i64 50}, i64 720, i64 27, %..string {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$134, i64 0, i32 0), i64 13})
%323 = bitcast %Source_Code_Location* %55 to %..rawptr
%324 = call %..rawptr @__mem_zero(%..rawptr %323, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %55
store %Source_Code_Location %322, %Source_Code_Location* %55
call void @free_string(%..string %321, %Source_Code_Location* %55, %Context* noalias nonnull %__.context_ptr)
br label %if.done-15
if.done-15:
; SelectorExpr
call ccc void @igSameLine(float 0x0000000000000000, float 0xbff0000000000000)
br label %if.done-16
if.done-16:
ret void
}
define cc 64 i32 @main-0.push_transfer_progress(i32 %current, i32 %total, i64 %bytes, %..rawptr %payload) #0 {
decls-0:
%0 = alloca i32, align 16
%1 = alloca i32, align 16
%2 = alloca i64, align 16
%3 = alloca %..rawptr, align 16
%4 = alloca %Context, align 16
%5 = bitcast %Context* %4 to %..rawptr
%6 = call %..rawptr @__mem_zero(%..rawptr %5, i64 72)
store %Context zeroinitializer, %Context* %4
%7 = load %Context, %Context* @__ggv$0, align 8
store %Context %7, %Context* %4
%8 = getelementptr inbounds %Context, %Context* %4, i64 0, i32 0
%9 = call %Allocator @default_allocator(%Context* noalias nonnull %4)
store %Allocator %9, %Allocator* %8
%10 = alloca %main-0.TransferPayload*, align 16
%11 = alloca %..any, align 16
%12 = alloca %..any, align 16
%13 = alloca %..any, align 16
%14 = alloca {%..any*, i64}, align 16
%15 = alloca [3 x %..any], align 16
%16 = alloca {%..any*, i64}, align 16
%17 = alloca %Source_Code_Location, align 16
store i32 %current, i32* %0
store i32 %total, i32* %1
store i64 %bytes, i64* %2
store %..rawptr %payload, %..rawptr* %3
; SelectorExpr
%18 = getelementptr inbounds %sync_windows-43.Mutex, %sync_windows-43.Mutex* @main-0.push_lock, i64 0
call void @sync_windows-43.mutex_lock(%sync_windows-43.Mutex* %18, %Context* noalias nonnull %4)
; tp
%19 = load %..rawptr, %..rawptr* %3, align 8
%20 = bitcast %..rawptr %19 to %main-0.TransferPayload*
store %main-0.TransferPayload* %20, %main-0.TransferPayload** %10
; SelectorExpr
%21 = load i32, i32* %0, align 4
%22 = load i32, i32* %1, align 4
%23 = load i64, i64* %2, align 8
%24 = bitcast %..any* %11 to %..rawptr
%25 = call %..rawptr @__mem_zero(%..rawptr %24, i64 16)
store %..any zeroinitializer, %..any* %11
%26 = bitcast i32* %0 to %..rawptr
%27 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 3
%28 = getelementptr inbounds %..any, %..any* %11, i64 0, i32 0
store %..rawptr %26, %..rawptr* %28
%29 = getelementptr inbounds %..any, %..any* %11, i64 0, i32 1
store %Type_Info* %27, %Type_Info** %29
%30 = load %..any, %..any* %11, align 8
%31 = bitcast %..any* %12 to %..rawptr
%32 = call %..rawptr @__mem_zero(%..rawptr %31, i64 16)
store %..any zeroinitializer, %..any* %12
%33 = bitcast i32* %1 to %..rawptr
%34 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 3
%35 = getelementptr inbounds %..any, %..any* %12, i64 0, i32 0
store %..rawptr %33, %..rawptr* %35
%36 = getelementptr inbounds %..any, %..any* %12, i64 0, i32 1
store %Type_Info* %34, %Type_Info** %36
%37 = load %..any, %..any* %12, align 8
%38 = bitcast %..any* %13 to %..rawptr
%39 = call %..rawptr @__mem_zero(%..rawptr %38, i64 16)
store %..any zeroinitializer, %..any* %13
%40 = bitcast i64* %2 to %..rawptr
%41 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 72
%42 = getelementptr inbounds %..any, %..any* %13, i64 0, i32 0
store %..rawptr %40, %..rawptr* %42
%43 = getelementptr inbounds %..any, %..any* %13, i64 0, i32 1
store %Type_Info* %41, %Type_Info** %43
%44 = load %..any, %..any* %13, align 8
; variadic call argument generation
%45 = bitcast {%..any*, i64}* %14 to %..rawptr
%46 = call %..rawptr @__mem_zero(%..rawptr %45, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %14
%47 = bitcast [3 x %..any]* %15 to %..rawptr
%48 = call %..rawptr @__mem_zero(%..rawptr %47, i64 48)
store [3 x %..any] zeroinitializer, [3 x %..any]* %15
%49 = getelementptr inbounds [3 x %..any], [3 x %..any]* %15, i64 0, i32 0
store %..any %30, %..any* %49
%50 = getelementptr inbounds [3 x %..any], [3 x %..any]* %15, i64 0, i32 1
store %..any %37, %..any* %50
%51 = getelementptr inbounds [3 x %..any], [3 x %..any]* %15, i64 0, i32 2
store %..any %44, %..any* %51
%52 = getelementptr inbounds [3 x %..any], [3 x %..any]* %15, i64 0, i32 0
%53 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %14, i64 0, i32 0
store %..any* %52, %..any** %53
%54 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %14, i64 0, i32 1
store i64 3, i64* %54
%55 = load {%..any*, i64}, {%..any*, i64}* %14, align 8
%56 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$135, i64 0, i32 0), i64 50}, i64 786, i64 17, %..string {i8* getelementptr inbounds ([23 x i8], [23 x i8]* @__str$136, i64 0, i32 0), i64 22})
%57 = bitcast {%..any*, i64}* %16 to %..rawptr
%58 = call %..rawptr @__mem_zero(%..rawptr %57, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %16
store {%..any*, i64} %55, {%..any*, i64}* %16
%59 = bitcast %Source_Code_Location* %17 to %..rawptr
%60 = call %..rawptr @__mem_zero(%..rawptr %59, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %17
store %Source_Code_Location %56, %Source_Code_Location* %17
call void @imgui_console-28.logf(%..string {i8* getelementptr inbounds ([30 x i8], [30 x i8]* @__str$137, i64 0, i32 0), i64 29}, {%..any*, i64}* %16, %Source_Code_Location* %17, %Context* noalias nonnull %4)
; AssignStmt
; SelectorExpr
%61 = load %main-0.TransferPayload*, %main-0.TransferPayload** %10, align 8
%62 = getelementptr inbounds %main-0.TransferPayload, %main-0.TransferPayload* %61, i64 0
%63 = getelementptr inbounds %main-0.TransferPayload, %main-0.TransferPayload* %62, i64 0, i32 0
%64 = load i32, i32* %0, align 4
%65 = zext i32 %64 to i64
store i64 %65, i64* %63
; AssignStmt
; SelectorExpr
%66 = load %main-0.TransferPayload*, %main-0.TransferPayload** %10, align 8
%67 = getelementptr inbounds %main-0.TransferPayload, %main-0.TransferPayload* %66, i64 0
%68 = getelementptr inbounds %main-0.TransferPayload, %main-0.TransferPayload* %67, i64 0, i32 1
%69 = load i32, i32* %1, align 4
%70 = zext i32 %69 to i64
store i64 %70, i64* %68
; AssignStmt
; SelectorExpr
%71 = load %main-0.TransferPayload*, %main-0.TransferPayload** %10, align 8
%72 = getelementptr inbounds %main-0.TransferPayload, %main-0.TransferPayload* %71, i64 0
%73 = getelementptr inbounds %main-0.TransferPayload, %main-0.TransferPayload* %72, i64 0, i32 2
%74 = load i64, i64* %2, align 8
store i64 %74, i64* %73
; SelectorExpr
%75 = getelementptr inbounds %sync_windows-43.Mutex, %sync_windows-43.Mutex* @main-0.push_lock, i64 0
call void @sync_windows-43.mutex_unlock(%sync_windows-43.Mutex* %75, %Context* noalias nonnull %4)
; ReturnStmt
ret i32 0
}
define i8* @main-0.MAKEINTRESOURCEA(i16 %i, %Context* noalias nonnull %__.context_ptr) alwaysinline #1 {
decls-0:
%0 = alloca i16, align 16
store i16 %i, i16* %0
; ReturnStmt
%1 = load i16, i16* %0, align 2
%2 = zext i16 %1 to i64
%3 = bitcast i64 %2 to i64
%4 = inttoptr i64 %3 to %..rawptr
%5 = bitcast %..rawptr %4 to i8*
ret i8* %5
}
define void @main-0.set_cursor(%Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca i32, align 16
; cur
; SelectorExpr
%1 = call ccc i32 @igGetMouseCursor()
store i32 %1, i32* %0
; SwitchStmt
%2 = load i32, i32* %0, align 4
%3 = icmp eq i32 %2, 0
br i1 %3, label %switch.case.body-2, label %switch.case.next-1
switch.case.next-1:
%4 = icmp eq i32 %2, 1
br i1 %4, label %switch.fall.body-4, label %switch.case.next-3
switch.case.body-2:
; SelectorExpr
%5 = load %..rawptr, %..rawptr* @main-0.IDC_ARROW, align 8
%6 = call cc 64 %..rawptr @SetCursor(%..rawptr %5)
br label %switch.done-13
switch.case.next-3:
%7 = icmp eq i32 %2, 3
br i1 %7, label %switch.fall.body-6, label %switch.case.next-5
switch.fall.body-4:
; SelectorExpr
%8 = load %..rawptr, %..rawptr* @main-0.IDC_IBEAM, align 8
%9 = call cc 64 %..rawptr @SetCursor(%..rawptr %8)
br label %switch.done-13
switch.case.next-5:
%10 = icmp eq i32 %2, 4
br i1 %10, label %switch.fall.body-8, label %switch.case.next-7
switch.fall.body-6:
; SelectorExpr
%11 = load %..rawptr, %..rawptr* @main-0.IDC_SIZENS, align 8
%12 = call cc 64 %..rawptr @SetCursor(%..rawptr %11)
br label %switch.done-13
switch.case.next-7:
%13 = icmp eq i32 %2, 5
br i1 %13, label %switch.fall.body-10, label %switch.case.next-9
switch.fall.body-8:
; SelectorExpr
%14 = load %..rawptr, %..rawptr* @main-0.IDC_SIZEWE, align 8
%15 = call cc 64 %..rawptr @SetCursor(%..rawptr %14)
br label %switch.done-13
switch.case.next-9:
%16 = icmp eq i32 %2, 6
br i1 %16, label %switch.fall.body-12, label %switch.case.next-11
switch.fall.body-10:
; SelectorExpr
%17 = load %..rawptr, %..rawptr* @main-0.IDC_SIZENESW, align 8
%18 = call cc 64 %..rawptr @SetCursor(%..rawptr %17)
br label %switch.done-13
switch.case.next-11:
br label %switch.done-13
switch.fall.body-12:
; SelectorExpr
%19 = load %..rawptr, %..rawptr* @main-0.IDC_SIZENWSE, align 8
%20 = call cc 64 %..rawptr @SetCursor(%..rawptr %19)
br label %switch.done-13
switch.done-13:
ret void
}
define void @main-0.main() #0 {
decls-0:
%0 = alloca %Context, align 16
%1 = bitcast %Context* %0 to %..rawptr
%2 = call %..rawptr @__mem_zero(%..rawptr %1, i64 72)
store %Context zeroinitializer, %Context* %0
%3 = load %Context, %Context* @__ggv$0, align 8
store %Context %3, %Context* %0
%4 = getelementptr inbounds %Context, %Context* %0, i64 0, i32 0
%5 = call %Allocator @default_allocator(%Context* noalias nonnull %0)
store %Allocator %5, %Allocator* %4
%6 = alloca %..string, align 16
%7 = alloca %..any, align 16
%8 = alloca {%..any*, i64}, align 16
%9 = alloca [1 x %..any], align 16
%10 = alloca {%..any*, i64}, align 16
%11 = alloca %Source_Code_Location, align 16
%12 = alloca %state-38.State, align 16
%13 = alloca i32, align 16
%14 = alloca %..string, align 16
%15 = alloca %..any, align 16
%16 = alloca {%..any*, i64}, align 16
%17 = alloca [1 x %..any], align 16
%18 = alloca {%..any*, i64}, align 16
%19 = alloca %Source_Code_Location, align 16
%20 = alloca %..any, align 16
%21 = alloca %..string, align 16
%22 = alloca {%..any*, i64}, align 16
%23 = alloca [1 x %..any], align 16
%24 = alloca {%..any*, i64}, align 16
%25 = alloca %Source_Code_Location, align 16
%26 = alloca %..any, align 16
%27 = alloca %..string, align 16
%28 = alloca {%..any*, i64}, align 16
%29 = alloca [1 x %..any], align 16
%30 = alloca {%..any*, i64}, align 16
%31 = alloca %Source_Code_Location, align 16
%32 = alloca %..any, align 16
%33 = alloca %..string, align 16
%34 = alloca {%..any*, i64}, align 16
%35 = alloca [1 x %..any], align 16
%36 = alloca {%..any*, i64}, align 16
%37 = alloca %Source_Code_Location, align 16
%38 = alloca %..any, align 16
%39 = alloca %..string, align 16
%40 = alloca {%..any*, i64}, align 16
%41 = alloca [1 x %..any], align 16
%42 = alloca {%..any*, i64}, align 16
%43 = alloca %Source_Code_Location, align 16
%44 = alloca %debug-30.Debug_Settings, align 16
%45 = alloca %debug-30.Debug_Settings, align 16
%46 = alloca {i8*, i64}, align 16
%47 = alloca {i8*, i64}, align 16
%48 = alloca i8, align 16
; SelectorExpr
call void @settings-36.load(%Context* noalias nonnull %0)
; SelectorExpr
call void @settings-36.save(%Context* noalias nonnull %0)
; DeferStmt
; SelectorExpr
%49 = bitcast %..string* %6 to %..rawptr
%50 = call %..rawptr @__mem_zero(%..rawptr %49, i64 16)
store %..string zeroinitializer, %..string* %6
store %..string {i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__str$138, i64 0, i32 0), i64 16}, %..string* %6
%51 = load %..string, %..string* %6, align 8
%52 = bitcast %..any* %7 to %..rawptr
%53 = call %..rawptr @__mem_zero(%..rawptr %52, i64 16)
store %..any zeroinitializer, %..any* %7
%54 = bitcast %..string* %6 to %..rawptr
%55 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18
%56 = getelementptr inbounds %..any, %..any* %7, i64 0, i32 0
store %..rawptr %54, %..rawptr* %56
%57 = getelementptr inbounds %..any, %..any* %7, i64 0, i32 1
store %Type_Info* %55, %Type_Info** %57
%58 = load %..any, %..any* %7, align 8
; variadic call argument generation
%59 = bitcast {%..any*, i64}* %8 to %..rawptr
%60 = call %..rawptr @__mem_zero(%..rawptr %59, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %8
%61 = bitcast [1 x %..any]* %9 to %..rawptr
%62 = call %..rawptr @__mem_zero(%..rawptr %61, i64 16)
store [1 x %..any] zeroinitializer, [1 x %..any]* %9
%63 = getelementptr inbounds [1 x %..any], [1 x %..any]* %9, i64 0, i32 0
store %..any %58, %..any* %63
%64 = getelementptr inbounds [1 x %..any], [1 x %..any]* %9, i64 0, i32 0
%65 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %8, i64 0, i32 0
store %..any* %64, %..any** %65
%66 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %8, i64 0, i32 1
store i64 1, i64* %66
%67 = load {%..any*, i64}, {%..any*, i64}* %8, align 8
%68 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$139, i64 0, i32 0), i64 50}, i64 826, i64 13, %..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$13a, i64 0, i32 0), i64 4})
%69 = bitcast {%..any*, i64}* %10 to %..rawptr
%70 = call %..rawptr @__mem_zero(%..rawptr %69, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %10
store {%..any*, i64} %67, {%..any*, i64}* %10
%71 = bitcast %Source_Code_Location* %11 to %..rawptr
%72 = call %..rawptr @__mem_zero(%..rawptr %71, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %11
store %Source_Code_Location %68, %Source_Code_Location* %11
call void @imgui_console-28.log({%..any*, i64}* %10, %Source_Code_Location* %11, %Context* noalias nonnull %0)
; SelectorExpr
call void @imgui_console-28.add_default_commands(%Context* noalias nonnull %0)
; SelectorExpr
%73 = bitcast void ({%..string*, i64}*, %Context*)* @main-0.set_user to void ({%..string*, i64}*, %Context*)*
call void @imgui_console-28.add_command(%..string {i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__str$13b, i64 0, i32 0), i64 8}, void ({%..string*, i64}*, %Context*)* %73, %Context* noalias nonnull %0)
; SelectorExpr
%74 = bitcast void ({%..string*, i64}*, %Context*)* @main-0.set_signature to void ({%..string*, i64}*, %Context*)*
call void @imgui_console-28.add_command(%..string {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$13c, i64 0, i32 0), i64 13}, void ({%..string*, i64}*, %Context*)* %74, %Context* noalias nonnull %0)
; SelectorExpr
; SelectorExpr
%75 = bitcast void ({%..string*, i64}*, %Context*)* @settings-36.save_settings_cmd to void ({%..string*, i64}*, %Context*)*
call void @imgui_console-28.add_command(%..string {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$13d, i64 0, i32 0), i64 13}, void ({%..string*, i64}*, %Context*)* %75, %Context* noalias nonnull %0)
; SelectorExpr
; SelectorExpr
%76 = bitcast void ({%..string*, i64}*, %Context*)* @settings-36.load_settings_cmd to void ({%..string*, i64}*, %Context*)*
call void @imgui_console-28.add_command(%..string {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$13e, i64 0, i32 0), i64 13}, void ({%..string*, i64}*, %Context*)* %76, %Context* noalias nonnull %0)
; SelectorExpr
%77 = getelementptr inbounds %sync_windows-43.Mutex, %sync_windows-43.Mutex* @main-0.push_lock, i64 0
call void @sync_windows-43.mutex_init(%sync_windows-43.Mutex* %77, i64 0, %Context* noalias nonnull %0)
; state
store %state-38.State {i8 0, double zeroinitializer, %..rawptr zeroinitializer, %..rawptr zeroinitializer, %..rawptr zeroinitializer, %brew_imgui-23.State* zeroinitializer, %msg-46.Msg zeroinitializer, i64 1280, i64 720, i8 0, %brew_imgui-23.FrameState zeroinitializer, i8 0, i8 0, %misc-49.TimeData zeroinitializer, i64 0, i64 0, i8 0, i8 0, i8 1, i8 0, i32 zeroinitializer, i32 zeroinitializer, i32 zeroinitializer, %..string zeroinitializer, [256 x i8] zeroinitializer, [1024 x i8] zeroinitializer, [1024 x i8] zeroinitializer, i8 0, %log-33.Log zeroinitializer, %status-39.Status zeroinitializer, i8 1, [1024 x i8] zeroinitializer, [1024 x i8] zeroinitializer, [1024 x i8] zeroinitializer, [1024 x i8] zeroinitializer, [1024 x i8] zeroinitializer, [1024 x i8] zeroinitializer, i8 0, %..string zeroinitializer, i32 (%libgit2_types-55.Cred**, i8*, i8*, i32, %..rawptr)* zeroinitializer, %libgit2_types-55.Repository* zeroinitializer, %..string zeroinitializer, %libgit2_types-55.Status_List* zeroinitializer, %branch-35.Branch zeroinitializer, {%branch-35.Branch_Collection*, i64} zeroinitializer, {%branch-35.Branch_Collection*, i64} zeroinitializer, [513 x i8] zeroinitializer, [4097 x i8] zeroinitializer, %diff_view-37.Context* zeroinitializer}, %state-38.State* %12
%78 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0
call void @main-0.init(%state-38.State* %78, %Context* noalias nonnull %0)
; SelectorExpr
%79 = call i32 @libgit2-29.lib_init(%Context* noalias nonnull %0)
; lib_features
; SelectorExpr
%80 = call i32 @libgit2-29.lib_features(%Context* noalias nonnull %0)
store i32 %80, i32* %13
; SelectorExpr
%81 = bitcast %..string* %14 to %..rawptr
%82 = call %..rawptr @__mem_zero(%..rawptr %81, i64 16)
store %..string zeroinitializer, %..string* %14
store %..string {i8* getelementptr inbounds ([22 x i8], [22 x i8]* @__str$13f, i64 0, i32 0), i64 21}, %..string* %14
%83 = load %..string, %..string* %14, align 8
%84 = bitcast %..any* %15 to %..rawptr
%85 = call %..rawptr @__mem_zero(%..rawptr %84, i64 16)
store %..any zeroinitializer, %..any* %15
%86 = bitcast %..string* %14 to %..rawptr
%87 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18
%88 = getelementptr inbounds %..any, %..any* %15, i64 0, i32 0
store %..rawptr %86, %..rawptr* %88
%89 = getelementptr inbounds %..any, %..any* %15, i64 0, i32 1
store %Type_Info* %87, %Type_Info** %89
%90 = load %..any, %..any* %15, align 8
; variadic call argument generation
%91 = bitcast {%..any*, i64}* %16 to %..rawptr
%92 = call %..rawptr @__mem_zero(%..rawptr %91, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %16
%93 = bitcast [1 x %..any]* %17 to %..rawptr
%94 = call %..rawptr @__mem_zero(%..rawptr %93, i64 16)
store [1 x %..any] zeroinitializer, [1 x %..any]* %17
%95 = getelementptr inbounds [1 x %..any], [1 x %..any]* %17, i64 0, i32 0
store %..any %90, %..any* %95
%96 = getelementptr inbounds [1 x %..any], [1 x %..any]* %17, i64 0, i32 0
%97 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %16, i64 0, i32 0
store %..any* %96, %..any** %97
%98 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %16, i64 0, i32 1
store i64 1, i64* %98
%99 = load {%..any*, i64}, {%..any*, i64}* %16, align 8
%100 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$140, i64 0, i32 0), i64 50}, i64 843, i64 13, %..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$141, i64 0, i32 0), i64 4})
%101 = bitcast {%..any*, i64}* %18 to %..rawptr
%102 = call %..rawptr @__mem_zero(%..rawptr %101, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %18
store {%..any*, i64} %99, {%..any*, i64}* %18
%103 = bitcast %Source_Code_Location* %19 to %..rawptr
%104 = call %..rawptr @__mem_zero(%..rawptr %103, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %19
store %Source_Code_Location %100, %Source_Code_Location* %19
call void @imgui_console-28.log({%..any*, i64}* %18, %Source_Code_Location* %19, %Context* noalias nonnull %0)
; SelectorExpr
; TernaryExpr
%105 = load i32, i32* %13, align 4
%106 = call i8 @main-0.main.feature_set-0(i32 1, i32 %105, %Context* noalias nonnull %0)
%107 = trunc i8 %106 to i1
br i1 %107, label %if.then-1, label %if.else-2
if.then-1:
br label %if.done-3
if.else-2:
br label %if.done-3
if.done-3:
%108 = phi %..string [ {i8* getelementptr inbounds ([13 x i8], [13 x i8]* @__str$142, i64 0, i32 0), i64 12}, %if.then-1 ], [ {i8* getelementptr inbounds ([16 x i8], [16 x i8]* @__str$143, i64 0, i32 0), i64 15}, %if.else-2 ]
%109 = bitcast %..any* %20 to %..rawptr
%110 = call %..rawptr @__mem_zero(%..rawptr %109, i64 16)
store %..any zeroinitializer, %..any* %20
%111 = bitcast %..string* %21 to %..rawptr
%112 = call %..rawptr @__mem_zero(%..rawptr %111, i64 16)
store %..string zeroinitializer, %..string* %21
store %..string %108, %..string* %21
%113 = bitcast %..string* %21 to %..rawptr
%114 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18
%115 = getelementptr inbounds %..any, %..any* %20, i64 0, i32 0
store %..rawptr %113, %..rawptr* %115
%116 = getelementptr inbounds %..any, %..any* %20, i64 0, i32 1
store %Type_Info* %114, %Type_Info** %116
%117 = load %..any, %..any* %20, align 8
; variadic call argument generation
%118 = bitcast {%..any*, i64}* %22 to %..rawptr
%119 = call %..rawptr @__mem_zero(%..rawptr %118, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %22
%120 = bitcast [1 x %..any]* %23 to %..rawptr
%121 = call %..rawptr @__mem_zero(%..rawptr %120, i64 16)
store [1 x %..any] zeroinitializer, [1 x %..any]* %23
%122 = getelementptr inbounds [1 x %..any], [1 x %..any]* %23, i64 0, i32 0
store %..any %117, %..any* %122
%123 = getelementptr inbounds [1 x %..any], [1 x %..any]* %23, i64 0, i32 0
%124 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %22, i64 0, i32 0
store %..any* %123, %..any** %124
%125 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %22, i64 0, i32 1
store i64 1, i64* %125
%126 = load {%..any*, i64}, {%..any*, i64}* %22, align 8
%127 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$144, i64 0, i32 0), i64 50}, i64 844, i64 13, %..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$145, i64 0, i32 0), i64 4})
%128 = bitcast {%..any*, i64}* %24 to %..rawptr
%129 = call %..rawptr @__mem_zero(%..rawptr %128, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %24
store {%..any*, i64} %126, {%..any*, i64}* %24
%130 = bitcast %Source_Code_Location* %25 to %..rawptr
%131 = call %..rawptr @__mem_zero(%..rawptr %130, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %25
store %Source_Code_Location %127, %Source_Code_Location* %25
call void @imgui_console-28.logf(%..string {i8* getelementptr inbounds ([15 x i8], [15 x i8]* @__str$146, i64 0, i32 0), i64 14}, {%..any*, i64}* %24, %Source_Code_Location* %25, %Context* noalias nonnull %0)
; SelectorExpr
; TernaryExpr
%132 = load i32, i32* %13, align 4
%133 = call i8 @main-0.main.feature_set-0(i32 2, i32 %132, %Context* noalias nonnull %0)
%134 = trunc i8 %133 to i1
br i1 %134, label %if.then-4, label %if.else-5
if.then-4:
br label %if.done-6
if.else-5:
br label %if.done-6
if.done-6:
%135 = phi %..string [ {i8* getelementptr inbounds ([11 x i8], [11 x i8]* @__str$147, i64 0, i32 0), i64 10}, %if.then-4 ], [ {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$148, i64 0, i32 0), i64 13}, %if.else-5 ]
%136 = bitcast %..any* %26 to %..rawptr
%137 = call %..rawptr @__mem_zero(%..rawptr %136, i64 16)
store %..any zeroinitializer, %..any* %26
%138 = bitcast %..string* %27 to %..rawptr
%139 = call %..rawptr @__mem_zero(%..rawptr %138, i64 16)
store %..string zeroinitializer, %..string* %27
store %..string %135, %..string* %27
%140 = bitcast %..string* %27 to %..rawptr
%141 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18
%142 = getelementptr inbounds %..any, %..any* %26, i64 0, i32 0
store %..rawptr %140, %..rawptr* %142
%143 = getelementptr inbounds %..any, %..any* %26, i64 0, i32 1
store %Type_Info* %141, %Type_Info** %143
%144 = load %..any, %..any* %26, align 8
; variadic call argument generation
%145 = bitcast {%..any*, i64}* %28 to %..rawptr
%146 = call %..rawptr @__mem_zero(%..rawptr %145, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %28
%147 = bitcast [1 x %..any]* %29 to %..rawptr
%148 = call %..rawptr @__mem_zero(%..rawptr %147, i64 16)
store [1 x %..any] zeroinitializer, [1 x %..any]* %29
%149 = getelementptr inbounds [1 x %..any], [1 x %..any]* %29, i64 0, i32 0
store %..any %144, %..any* %149
%150 = getelementptr inbounds [1 x %..any], [1 x %..any]* %29, i64 0, i32 0
%151 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %28, i64 0, i32 0
store %..any* %150, %..any** %151
%152 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %28, i64 0, i32 1
store i64 1, i64* %152
%153 = load {%..any*, i64}, {%..any*, i64}* %28, align 8
%154 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$149, i64 0, i32 0), i64 50}, i64 846, i64 13, %..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$14a, i64 0, i32 0), i64 4})
%155 = bitcast {%..any*, i64}* %30 to %..rawptr
%156 = call %..rawptr @__mem_zero(%..rawptr %155, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %30
store {%..any*, i64} %153, {%..any*, i64}* %30
%157 = bitcast %Source_Code_Location* %31 to %..rawptr
%158 = call %..rawptr @__mem_zero(%..rawptr %157, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %31
store %Source_Code_Location %154, %Source_Code_Location* %31
call void @imgui_console-28.logf(%..string {i8* getelementptr inbounds ([13 x i8], [13 x i8]* @__str$14b, i64 0, i32 0), i64 12}, {%..any*, i64}* %30, %Source_Code_Location* %31, %Context* noalias nonnull %0)
; SelectorExpr
; TernaryExpr
%159 = load i32, i32* %13, align 4
%160 = call i8 @main-0.main.feature_set-0(i32 4, i32 %159, %Context* noalias nonnull %0)
%161 = trunc i8 %160 to i1
br i1 %161, label %if.then-7, label %if.else-8
if.then-7:
br label %if.done-9
if.else-8:
br label %if.done-9
if.done-9:
%162 = phi %..string [ {i8* getelementptr inbounds ([11 x i8], [11 x i8]* @__str$14c, i64 0, i32 0), i64 10}, %if.then-7 ], [ {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$14d, i64 0, i32 0), i64 13}, %if.else-8 ]
%163 = bitcast %..any* %32 to %..rawptr
%164 = call %..rawptr @__mem_zero(%..rawptr %163, i64 16)
store %..any zeroinitializer, %..any* %32
%165 = bitcast %..string* %33 to %..rawptr
%166 = call %..rawptr @__mem_zero(%..rawptr %165, i64 16)
store %..string zeroinitializer, %..string* %33
store %..string %162, %..string* %33
%167 = bitcast %..string* %33 to %..rawptr
%168 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18
%169 = getelementptr inbounds %..any, %..any* %32, i64 0, i32 0
store %..rawptr %167, %..rawptr* %169
%170 = getelementptr inbounds %..any, %..any* %32, i64 0, i32 1
store %Type_Info* %168, %Type_Info** %170
%171 = load %..any, %..any* %32, align 8
; variadic call argument generation
%172 = bitcast {%..any*, i64}* %34 to %..rawptr
%173 = call %..rawptr @__mem_zero(%..rawptr %172, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %34
%174 = bitcast [1 x %..any]* %35 to %..rawptr
%175 = call %..rawptr @__mem_zero(%..rawptr %174, i64 16)
store [1 x %..any] zeroinitializer, [1 x %..any]* %35
%176 = getelementptr inbounds [1 x %..any], [1 x %..any]* %35, i64 0, i32 0
store %..any %171, %..any* %176
%177 = getelementptr inbounds [1 x %..any], [1 x %..any]* %35, i64 0, i32 0
%178 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %34, i64 0, i32 0
store %..any* %177, %..any** %178
%179 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %34, i64 0, i32 1
store i64 1, i64* %179
%180 = load {%..any*, i64}, {%..any*, i64}* %34, align 8
%181 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$14e, i64 0, i32 0), i64 50}, i64 848, i64 13, %..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$14f, i64 0, i32 0), i64 4})
%182 = bitcast {%..any*, i64}* %36 to %..rawptr
%183 = call %..rawptr @__mem_zero(%..rawptr %182, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %36
store {%..any*, i64} %180, {%..any*, i64}* %36
%184 = bitcast %Source_Code_Location* %37 to %..rawptr
%185 = call %..rawptr @__mem_zero(%..rawptr %184, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %37
store %Source_Code_Location %181, %Source_Code_Location* %37
call void @imgui_console-28.logf(%..string {i8* getelementptr inbounds ([11 x i8], [11 x i8]* @__str$150, i64 0, i32 0), i64 10}, {%..any*, i64}* %36, %Source_Code_Location* %37, %Context* noalias nonnull %0)
; SelectorExpr
; TernaryExpr
%186 = load i32, i32* %13, align 4
%187 = call i8 @main-0.main.feature_set-0(i32 8, i32 %186, %Context* noalias nonnull %0)
%188 = trunc i8 %187 to i1
br i1 %188, label %if.then-10, label %if.else-11
if.then-10:
br label %if.done-12
if.else-11:
br label %if.done-12
if.done-12:
%189 = phi %..string [ {i8* getelementptr inbounds ([11 x i8], [11 x i8]* @__str$151, i64 0, i32 0), i64 10}, %if.then-10 ], [ {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$152, i64 0, i32 0), i64 13}, %if.else-11 ]
%190 = bitcast %..any* %38 to %..rawptr
%191 = call %..rawptr @__mem_zero(%..rawptr %190, i64 16)
store %..any zeroinitializer, %..any* %38
%192 = bitcast %..string* %39 to %..rawptr
%193 = call %..rawptr @__mem_zero(%..rawptr %192, i64 16)
store %..string zeroinitializer, %..string* %39
store %..string %189, %..string* %39
%194 = bitcast %..string* %39 to %..rawptr
%195 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18
%196 = getelementptr inbounds %..any, %..any* %38, i64 0, i32 0
store %..rawptr %194, %..rawptr* %196
%197 = getelementptr inbounds %..any, %..any* %38, i64 0, i32 1
store %Type_Info* %195, %Type_Info** %197
%198 = load %..any, %..any* %38, align 8
; variadic call argument generation
%199 = bitcast {%..any*, i64}* %40 to %..rawptr
%200 = call %..rawptr @__mem_zero(%..rawptr %199, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %40
%201 = bitcast [1 x %..any]* %41 to %..rawptr
%202 = call %..rawptr @__mem_zero(%..rawptr %201, i64 16)
store [1 x %..any] zeroinitializer, [1 x %..any]* %41
%203 = getelementptr inbounds [1 x %..any], [1 x %..any]* %41, i64 0, i32 0
store %..any %198, %..any* %203
%204 = getelementptr inbounds [1 x %..any], [1 x %..any]* %41, i64 0, i32 0
%205 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %40, i64 0, i32 0
store %..any* %204, %..any** %205
%206 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %40, i64 0, i32 1
store i64 1, i64* %206
%207 = load {%..any*, i64}, {%..any*, i64}* %40, align 8
%208 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$153, i64 0, i32 0), i64 50}, i64 850, i64 13, %..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$154, i64 0, i32 0), i64 4})
%209 = bitcast {%..any*, i64}* %42 to %..rawptr
%210 = call %..rawptr @__mem_zero(%..rawptr %209, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %42
store {%..any*, i64} %207, {%..any*, i64}* %42
%211 = bitcast %Source_Code_Location* %43 to %..rawptr
%212 = call %..rawptr @__mem_zero(%..rawptr %211, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %43
store %Source_Code_Location %208, %Source_Code_Location* %43
call void @imgui_console-28.logf(%..string {i8* getelementptr inbounds ([12 x i8], [12 x i8]* @__str$155, i64 0, i32 0), i64 11}, {%..any*, i64}* %42, %Source_Code_Location* %43, %Context* noalias nonnull %0)
; _settings
%213 = call %debug-30.Debug_Settings @debug-30.debug_get_settings(%Context* noalias nonnull %0)
store %debug-30.Debug_Settings %213, %debug-30.Debug_Settings* %44
; AssignStmt
; SelectorExpr
%214 = getelementptr inbounds %debug-30.Debug_Settings, %debug-30.Debug_Settings* %44, i64 0, i32 0
store i8 1, i8* %214
%215 = load %debug-30.Debug_Settings, %debug-30.Debug_Settings* %44, align 1
%216 = bitcast %debug-30.Debug_Settings* %45 to %..rawptr
%217 = call %..rawptr @__mem_zero(%..rawptr %216, i64 3)
store %debug-30.Debug_Settings {i8 0, i8 1, i8 1}, %debug-30.Debug_Settings* %45
store %debug-30.Debug_Settings %215, %debug-30.Debug_Settings* %45
call void @debug-30.debug_set_settings(%debug-30.Debug_Settings* %45, %Context* noalias nonnull %0)
; AssignStmt
; SelectorExpr
%218 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 39
%219 = bitcast i32 (%libgit2_types-55.Cred**, i8*, i8*, i32, %..rawptr)* @main-0.credentials_callback to i32 (%libgit2_types-55.Cred**, i8*, i8*, i32, %..rawptr)*
store i32 (%libgit2_types-55.Cred**, i8*, i8*, i32, %..rawptr)* %219, i32 (%libgit2_types-55.Cred**, i8*, i8*, i32, %..rawptr)** %218
; AssignStmt
; SelectorExpr
%220 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 0
store i8 1, i8* %220
; ForStmt
br label %for.loop-13
for.loop-13:
; SelectorExpr
%221 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 0
%222 = load i8, i8* %221, align 1
%223 = trunc i8 %222 to i1
br i1 %223, label %for.body-14, label %for.done-27
for.body-14:
%224 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0
call void @main-0.begin_frame(%state-38.State* %224, %Context* noalias nonnull %0)
%225 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0
call void @main-0.main_menu(%state-38.State* %225, %Context* noalias nonnull %0)
%226 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0
call void @main-0.repo_window(%state-38.State* %226, %Context* noalias nonnull %0)
; SelectorExpr
; SelectorExpr
%227 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0
; SelectorExpr
%228 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 8
%229 = load i64, i64* %228, align 8
; SelectorExpr
%230 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 40
%231 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %230, align 8
; SliceExpr
; SelectorExpr
%232 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 26
%233 = load [1024 x i8], [1024 x i8]* %232, align 1
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$156, i64 0, i32 0), i64 50}, i64 867, i64 58, i64 0, i64 1024, i64 1024)
%234 = getelementptr inbounds [1024 x i8], [1024 x i8]* %232, i64 0, i32 0
%235 = getelementptr inbounds i8, i8* %234, i64 0
%236 = sub i64 1024, 0
%237 = bitcast {i8*, i64}* %46 to %..rawptr
%238 = call %..rawptr @__mem_zero(%..rawptr %237, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %46
%239 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %46, i64 0, i32 0
store i8* %235, i8** %239
%240 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %46, i64 0, i32 1
store i64 %236, i64* %240
%241 = load {i8*, i64}, {i8*, i64}* %46, align 8
; SelectorExpr
%242 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 43
%243 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %242, i64 0
; SelectorExpr
%244 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 39
%245 = load i32 (%libgit2_types-55.Cred**, i8*, i8*, i32, %..rawptr)*, i32 (%libgit2_types-55.Cred**, i8*, i8*, i32, %..rawptr)** %244, align 8
; SelectorExpr
%246 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 44
%247 = getelementptr inbounds {%branch-35.Branch_Collection*, i64}, {%branch-35.Branch_Collection*, i64}* %246, i64 0
; SelectorExpr
%248 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 45
%249 = getelementptr inbounds {%branch-35.Branch_Collection*, i64}, {%branch-35.Branch_Collection*, i64}* %248, i64 0
%250 = bitcast {i8*, i64}* %47 to %..rawptr
%251 = call %..rawptr @__mem_zero(%..rawptr %250, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %47
store {i8*, i64} %241, {i8*, i64}* %47
call void @branch-35.window(%settings-36.Settings* %227, i64 %229, %libgit2_types-55.Repository* %231, {i8*, i64}* %47, %branch-35.Branch* %243, i32 (%libgit2_types-55.Cred**, i8*, i8*, i32, %..rawptr)* %245, {%branch-35.Branch_Collection*, i64}* %247, {%branch-35.Branch_Collection*, i64}* %249, %Context* noalias nonnull %0)
; SelectorExpr
; SelectorExpr
%252 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 28
%253 = getelementptr inbounds %log-33.Log, %log-33.Log* %252, i64 0
; SelectorExpr
%254 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 40
%255 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %254, align 8
; SelectorExpr
; SelectorExpr
%256 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 43
%257 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %256, i64 0, i32 0
%258 = load %libgit2_types-55.Reference*, %libgit2_types-55.Reference** %257, align 8
call void @log-33.window(%log-33.Log* %253, %libgit2_types-55.Repository* %255, %libgit2_types-55.Reference* %258, %Context* noalias nonnull %0)
; IfStmt
; SelectorExpr
%259 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 48
%260 = load %diff_view-37.Context*, %diff_view-37.Context** %259, align 8
%261 = icmp ne %diff_view-37.Context* %260, zeroinitializer
%262 = zext i1 %261 to i8
%263 = trunc i8 %262 to i1
br i1 %263, label %if.then-15, label %if.done-18
if.then-15:
; keep_open
store i8 1, i8* %48
; SelectorExpr
; SelectorExpr
%264 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 48
%265 = load %diff_view-37.Context*, %diff_view-37.Context** %264, align 8
%266 = getelementptr inbounds i8, i8* %48, i64 0
call void @diff_view-37.window(%diff_view-37.Context* %265, i8* %266, %Context* noalias nonnull %0)
; IfStmt
%267 = load i8, i8* %48, align 1
%268 = trunc i8 %267 to i1
br i1 %268, label %if.done-17, label %if.then-16
if.then-16:
; SelectorExpr
; SelectorExpr
%269 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 48
%270 = load %diff_view-37.Context*, %diff_view-37.Context** %269, align 8
call void @diff_view-37.free(%diff_view-37.Context* %270, %Context* noalias nonnull %0)
; AssignStmt
; SelectorExpr
%271 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 48
store %diff_view-37.Context* zeroinitializer, %diff_view-37.Context** %271
br label %if.done-17
if.done-17:
br label %if.done-18
if.done-18:
; IfStmt
; SelectorExpr
%272 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 18
%273 = load i8, i8* %272, align 1
%274 = trunc i8 %273 to i1
br i1 %274, label %if.then-19, label %if.done-20
if.then-19:
; SelectorExpr
; SelectorExpr
%275 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 18
%276 = getelementptr inbounds i8, i8* %275, i64 0
; SelectorExpr
%277 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 16
%278 = getelementptr inbounds i8, i8* %277, i64 0
; SelectorExpr
%279 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 17
%280 = getelementptr inbounds i8, i8* %279, i64 0
call void @imgui_console-28.draw_console(i8* %276, i8* %278, i8* %280, %Context* noalias nonnull %0)
br label %if.done-20
if.done-20:
; IfStmt
; SelectorExpr
%281 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 16
%282 = load i8, i8* %281, align 1
%283 = trunc i8 %282 to i1
br i1 %283, label %if.then-21, label %if.done-22
if.then-21:
; SelectorExpr
; SelectorExpr
%284 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 16
%285 = getelementptr inbounds i8, i8* %284, i64 0
call void @imgui_console-28.draw_log(i8* %285, %Context* noalias nonnull %0)
br label %if.done-22
if.done-22:
; IfStmt
; SelectorExpr
%286 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 17
%287 = load i8, i8* %286, align 1
%288 = trunc i8 %287 to i1
br i1 %288, label %if.then-23, label %if.done-24
if.then-23:
; SelectorExpr
; SelectorExpr
%289 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 17
%290 = getelementptr inbounds i8, i8* %289, i64 0
call void @imgui_console-28.draw_history(i8* %290, %Context* noalias nonnull %0)
br label %if.done-24
if.done-24:
; IfStmt
; SelectorExpr
%291 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 19
%292 = load i8, i8* %291, align 1
%293 = trunc i8 %292 to i1
br i1 %293, label %if.then-25, label %if.done-26
if.then-25:
; SelectorExpr
; SelectorExpr
%294 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 19
%295 = getelementptr inbounds i8, i8* %294, i64 0
call ccc void @igShowDemoWindow(i8* %295)
br label %if.done-26
if.done-26:
%296 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0
call void @main-0.end_frame(%state-38.State* %296, %Context* noalias nonnull %0)
br label %for.loop-13
for.done-27:
; SelectorExpr
%297 = call i32 @libgit2-29.lib_shutdown(%Context* noalias nonnull %0)
; defer
; SelectorExpr
call void @settings-36.save(%Context* noalias nonnull %0)
ret void
}
define i8 @main-0.main.feature_set-0(i32 %test, i32 %value, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca i32, align 16
%1 = alloca i32, align 16
store i32 %test, i32* %0
store i32 %value, i32* %1
; ReturnStmt
%2 = load i32, i32* %0, align 4
%3 = load i32, i32* %1, align 4
%4 = and i32 %2, %3
%5 = load i32, i32* %0, align 4
%6 = icmp eq i32 %4, %5
%7 = zext i1 %6 to i8
ret i8 %7
}
define {i64, i64} @os_windows-6.open(%..string %path, i64 %mode, i32 %perm, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %..string, align 16
%1 = alloca i64, align 16
%2 = alloca i32, align 16
%3 = alloca {i64, i64}, align 16
%4 = alloca i32, align 16
%5 = alloca i32, align 16
%6 = alloca %windows-15.Security_Attributes*, align 16
%7 = alloca %windows-15.Security_Attributes, align 16
%8 = alloca i32, align 16
%9 = alloca [300 x i8], align 16
%10 = alloca {i8*, i64}, align 16
%11 = alloca i8*, align 16
%12 = alloca {i8*, i64}, align 16
%13 = alloca {i8*, i64}, align 16
%14 = alloca {i8*, i64}, align 16
%15 = alloca i64, align 16
%16 = alloca {i64, i64}, align 16
%17 = alloca i64, align 16
%18 = alloca {i64, i64}, align 16
store %..string %path, %..string* %0
store i64 %mode, i64* %1
store i32 %perm, i32* %2
; IfStmt
%19 = load %..string, %..string* %0, align 8
%20 = extractvalue %..string %19, 1
%21 = icmp eq i64 %20, 0
%22 = zext i1 %21 to i8
%23 = trunc i8 %22 to i1
br i1 %23, label %if.then-1, label %if.done-2
if.then-1:
; ReturnStmt
%24 = bitcast {i64, i64}* %3 to %..rawptr
%25 = call %..rawptr @__mem_zero(%..rawptr %24, i64 16)
store {i64, i64} zeroinitializer, {i64, i64}* %3
%26 = getelementptr inbounds {i64, i64}, {i64, i64}* %3, i64 0, i32 0
store i64 -1, i64* %26
%27 = getelementptr inbounds {i64, i64}, {i64, i64}* %3, i64 0, i32 1
store i64 2, i64* %27
%28 = load {i64, i64}, {i64, i64}* %3, align 8
ret {i64, i64} %28
if.done-2:
; access
%29 = bitcast i32* %4 to %..rawptr
%30 = call %..rawptr @__mem_zero(%..rawptr %29, i64 4)
store i32 zeroinitializer, i32* %4
; SwitchStmt
%31 = load i64, i64* %1, align 8
%32 = and i64 %31, 3
%33 = icmp eq i64 %32, 0
br i1 %33, label %switch.case.body-4, label %switch.case.next-3
switch.case.next-3:
%34 = icmp eq i64 %32, 1
br i1 %34, label %switch.fall.body-6, label %switch.case.next-5
switch.case.body-4:
; AssignStmt
store i32 2147483648, i32* %4
br label %switch.done-9
switch.case.next-5:
%35 = icmp eq i64 %32, 2
br i1 %35, label %switch.fall.body-8, label %switch.case.next-7
switch.fall.body-6:
; AssignStmt
store i32 1073741824, i32* %4
br label %switch.done-9
switch.case.next-7:
br label %switch.done-9
switch.fall.body-8:
; AssignStmt
store i32 3221225472, i32* %4
br label %switch.done-9
switch.done-9:
; IfStmt
%36 = load i64, i64* %1, align 8
%37 = and i64 %36, 64
%38 = icmp ne i64 %37, 0
%39 = zext i1 %38 to i8
%40 = trunc i8 %39 to i1
br i1 %40, label %if.then-10, label %if.done-11
if.then-10:
; AssignStmt
%41 = load i32, i32* %4, align 4
%42 = or i32 %41, 1073741824
store i32 %42, i32* %4
br label %if.done-11
if.done-11:
; IfStmt
%43 = load i64, i64* %1, align 8
%44 = and i64 %43, 1024
%45 = icmp ne i64 %44, 0
%46 = zext i1 %45 to i8
%47 = trunc i8 %46 to i1
br i1 %47, label %if.then-12, label %if.done-13
if.then-12:
; AssignStmt
%48 = load i32, i32* %4, align 4
%49 = xor i32 1073741824, -1
%50 = and i32 %48, %49
store i32 %50, i32* %4
; AssignStmt
%51 = load i32, i32* %4, align 4
%52 = or i32 %51, 4
store i32 %52, i32* %4
br label %if.done-13
if.done-13:
; share_mode
store i32 3, i32* %5
; sa
store %windows-15.Security_Attributes* zeroinitializer, %windows-15.Security_Attributes** %6
; sa_inherit
store %windows-15.Security_Attributes {i32 24, %..rawptr zeroinitializer, i32 1}, %windows-15.Security_Attributes* %7
; IfStmt
%53 = load i64, i64* %1, align 8
%54 = and i64 %53, 524288
%55 = icmp eq i64 %54, 0
%56 = zext i1 %55 to i8
%57 = trunc i8 %56 to i1
br i1 %57, label %if.then-14, label %if.done-15
if.then-14:
; AssignStmt
%58 = getelementptr inbounds %windows-15.Security_Attributes, %windows-15.Security_Attributes* %7, i64 0
store %windows-15.Security_Attributes* %58, %windows-15.Security_Attributes** %6
br label %if.done-15
if.done-15:
; create_mode
%59 = bitcast i32* %8 to %..rawptr
%60 = call %..rawptr @__mem_zero(%..rawptr %59, i64 4)
store i32 zeroinitializer, i32* %8
; SwitchStmt
%61 = load i64, i64* %1, align 8
%62 = and i64 %61, 192
%63 = icmp eq i64 %62, 192
%64 = zext i1 %63 to i8
%65 = icmp eq i8 1, %64
br i1 %65, label %switch.case.body-17, label %switch.case.next-16
switch.case.next-16:
%66 = load i64, i64* %1, align 8
%67 = and i64 %66, 576
%68 = icmp eq i64 %67, 576
%69 = zext i1 %68 to i8
%70 = icmp eq i8 1, %69
br i1 %70, label %switch.fall.body-19, label %switch.case.next-18
switch.case.body-17:
; AssignStmt
store i32 1, i32* %8
br label %switch.done-24
switch.case.next-18:
%71 = load i64, i64* %1, align 8
%72 = and i64 %71, 64
%73 = icmp eq i64 %72, 64
%74 = zext i1 %73 to i8
%75 = icmp eq i8 1, %74
br i1 %75, label %switch.fall.body-21, label %switch.case.next-20
switch.fall.body-19:
; AssignStmt
store i32 2, i32* %8
br label %switch.done-24
switch.case.next-20:
%76 = load i64, i64* %1, align 8
%77 = and i64 %76, 512
%78 = icmp eq i64 %77, 512
%79 = zext i1 %78 to i8
%80 = icmp eq i8 1, %79
br i1 %80, label %switch.fall.body-23, label %switch.case.next-22
switch.fall.body-21:
; AssignStmt
store i32 4, i32* %8
br label %switch.done-24
switch.case.next-22:
; AssignStmt
store i32 3, i32* %8
br label %switch.done-24
switch.fall.body-23:
; AssignStmt
store i32 5, i32* %8
br label %switch.done-24
switch.done-24:
; buf
%81 = bitcast [300 x i8]* %9 to %..rawptr
%82 = call %..rawptr @__mem_zero(%..rawptr %81, i64 300)
store [300 x i8] zeroinitializer, [300 x i8]* %9
; SliceExpr
%83 = load [300 x i8], [300 x i8]* %9, align 1
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([54 x i8], [54 x i8]* @__str$157, i64 0, i32 0), i64 53}, i64 99, i64 10, i64 0, i64 300, i64 300)
%84 = getelementptr inbounds [300 x i8], [300 x i8]* %9, i64 0, i32 0
%85 = getelementptr inbounds i8, i8* %84, i64 0
%86 = sub i64 300, 0
%87 = bitcast {i8*, i64}* %10 to %..rawptr
%88 = call %..rawptr @__mem_zero(%..rawptr %87, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %10
%89 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %10, i64 0, i32 0
store i8* %85, i8** %89
%90 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %10, i64 0, i32 1
store i64 %86, i64* %90
%91 = load {i8*, i64}, {i8*, i64}* %10, align 8
%92 = load %..string, %..string* %0, align 8
%93 = extractvalue %..string %92, 0
%94 = bitcast i8** %11 to %..rawptr
%95 = call %..rawptr @__mem_zero(%..rawptr %94, i64 8)
store i8* zeroinitializer, i8** %11
store i8* %93, i8** %11
%96 = extractvalue %..string %92, 1
%97 = sub i64 %96, 0
%98 = load i8*, i8** %11, align 8
%99 = getelementptr inbounds i8, i8* %98, i64 0
%100 = bitcast {i8*, i64}* %12 to %..rawptr
%101 = call %..rawptr @__mem_zero(%..rawptr %100, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %12
%102 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %12, i64 0, i32 0
store i8* %99, i8** %102
%103 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %12, i64 0, i32 1
store i64 %97, i64* %103
%104 = load {i8*, i64}, {i8*, i64}* %12, align 8
%105 = bitcast {i8*, i64}* %13 to %..rawptr
%106 = call %..rawptr @__mem_zero(%..rawptr %105, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %13
store {i8*, i64} %91, {i8*, i64}* %13
%107 = bitcast {i8*, i64}* %14 to %..rawptr
%108 = call %..rawptr @__mem_zero(%..rawptr %107, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %14
store {i8*, i64} %104, {i8*, i64}* %14
%109 = call i64 @_preload-0.copy-19783({i8*, i64}* %13, {i8*, i64}* %14)
; handle
; SelectorExpr
; IndexExpr
%110 = getelementptr inbounds [300 x i8], [300 x i8]* %9, i64 0, i32 0
%111 = getelementptr inbounds i8, i8* %110, i64 0
%112 = load i32, i32* %4, align 4
%113 = load i32, i32* %5, align 4
%114 = load %windows-15.Security_Attributes*, %windows-15.Security_Attributes** %6, align 8
%115 = load i32, i32* %8, align 4
%116 = bitcast %windows-15.Security_Attributes* %114 to %..rawptr
%117 = call cc 64 %..rawptr @CreateFileA(i8* %111, i32 %112, i32 %113, %..rawptr %116, i32 %115, i32 128, %..rawptr zeroinitializer)
%118 = ptrtoint %..rawptr %117 to i64
store i64 %118, i64* %15
; IfStmt
%119 = load i64, i64* %15, align 8
%120 = icmp ne i64 %119, -1
%121 = zext i1 %120 to i8
%122 = trunc i8 %121 to i1
br i1 %122, label %if.then-25, label %if.done-26
if.then-25:
; ReturnStmt
%123 = load i64, i64* %15, align 8
%124 = bitcast {i64, i64}* %16 to %..rawptr
%125 = call %..rawptr @__mem_zero(%..rawptr %124, i64 16)
store {i64, i64} zeroinitializer, {i64, i64}* %16
%126 = getelementptr inbounds {i64, i64}, {i64, i64}* %16, i64 0, i32 0
store i64 %123, i64* %126
%127 = getelementptr inbounds {i64, i64}, {i64, i64}* %16, i64 0, i32 1
store i64 0, i64* %127
%128 = load {i64, i64}, {i64, i64}* %16, align 8
ret {i64, i64} %128
if.done-26:
; err
; SelectorExpr
%129 = call cc 64 i32 @GetLastError()
%130 = sext i32 %129 to i64
store i64 %130, i64* %17
; ReturnStmt
%131 = load i64, i64* %17, align 8
%132 = bitcast {i64, i64}* %18 to %..rawptr
%133 = call %..rawptr @__mem_zero(%..rawptr %132, i64 16)
store {i64, i64} zeroinitializer, {i64, i64}* %18
%134 = getelementptr inbounds {i64, i64}, {i64, i64}* %18, i64 0, i32 0
store i64 -1, i64* %134
%135 = getelementptr inbounds {i64, i64}, {i64, i64}* %18, i64 0, i32 1
store i64 %131, i64* %135
%136 = load {i64, i64}, {i64, i64}* %18, align 8
ret {i64, i64} %136
}
define void @os_windows-6.close(i64 %fd, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca i64, align 16
store i64 %fd, i64* %0
; SelectorExpr
%1 = load i64, i64* %0, align 8
%2 = inttoptr i64 %1 to %..rawptr
%3 = call cc 64 i32 @CloseHandle(%..rawptr %2)
ret void
}
define {i64, i64} @os_windows-6.write(i64 %fd, {i8*, i64}* %data, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca i64, align 16
%1 = alloca {i64, i64}, align 16
%2 = alloca i32, align 16
%3 = alloca i64, align 16
%4 = alloca i64, align 16
%5 = alloca i64, align 16
%6 = alloca i32, align 16
%7 = alloca i32, align 16
%8 = alloca i64, align 16
%9 = alloca {i64, i64}, align 16
%10 = alloca {i64, i64}, align 16
store i64 %fd, i64* %0
%11 = load {i8*, i64}, {i8*, i64}* %data, align 8
; IfStmt
%12 = load {i8*, i64}, {i8*, i64}* %data, align 8
%13 = extractvalue {i8*, i64} %12, 1
%14 = icmp eq i64 %13, 0
%15 = zext i1 %14 to i8
%16 = trunc i8 %15 to i1
br i1 %16, label %if.then-1, label %if.done-2
if.then-1:
; ReturnStmt
%17 = bitcast {i64, i64}* %1 to %..rawptr
%18 = call %..rawptr @__mem_zero(%..rawptr %17, i64 16)
store {i64, i64} zeroinitializer, {i64, i64}* %1
%19 = getelementptr inbounds {i64, i64}, {i64, i64}* %1, i64 0, i32 0
store i64 0, i64* %19
%20 = getelementptr inbounds {i64, i64}, {i64, i64}* %1, i64 0, i32 1
store i64 0, i64* %20
%21 = load {i64, i64}, {i64, i64}* %1, align 8
ret {i64, i64} %21
if.done-2:
; single_write_length
%22 = bitcast i32* %2 to %..rawptr
%23 = call %..rawptr @__mem_zero(%..rawptr %22, i64 4)
store i32 zeroinitializer, i32* %2
; total_write
%24 = bitcast i64* %3 to %..rawptr
%25 = call %..rawptr @__mem_zero(%..rawptr %24, i64 8)
store i64 zeroinitializer, i64* %3
; length
%26 = load {i8*, i64}, {i8*, i64}* %data, align 8
%27 = extractvalue {i8*, i64} %26, 1
%28 = bitcast i64 %27 to i64
store i64 %28, i64* %4
; ForStmt
br label %for.loop-3
for.loop-3:
%29 = load i64, i64* %3, align 8
%30 = load i64, i64* %4, align 8
%31 = icmp slt i64 %29, %30
%32 = zext i1 %31 to i8
%33 = trunc i8 %32 to i1
br i1 %33, label %for.body-4, label %for.done-8
for.body-4:
; remaining
%34 = load i64, i64* %4, align 8
%35 = load i64, i64* %3, align 8
%36 = sub i64 %34, %35
store i64 %36, i64* %5
; to_write
; min
%37 = load i64, i64* %5, align 8
%38 = trunc i64 %37 to i32
%39 = icmp slt i32 %38, 2147483647
%40 = select i1 %39, i32 %38, i32 2147483647
store i32 %40, i32* %6
; e
; SelectorExpr
%41 = load i64, i64* %0, align 8
%42 = inttoptr i64 %41 to %..rawptr
; IndexExpr
%43 = load {i8*, i64}, {i8*, i64}* %data, align 8
%44 = extractvalue {i8*, i64} %43, 0
%45 = load i64, i64* %3, align 8
%46 = bitcast i64 %45 to i64
%47 = extractvalue {i8*, i64} %43, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([54 x i8], [54 x i8]* @__str$158, i64 0, i32 0), i64 53}, i64 125, i64 49, i64 %46, i64 %47)
%48 = getelementptr inbounds i8, i8* %44, i64 %46
%49 = getelementptr inbounds i8, i8* %48, i64 0
%50 = load i32, i32* %6, align 4
%51 = getelementptr inbounds i32, i32* %2, i64 0
%52 = bitcast i8* %49 to %..rawptr
%53 = call cc 64 i32 @WriteFile(%..rawptr %42, %..rawptr %52, i32 %50, i32* %51, %..rawptr zeroinitializer)
store i32 %53, i32* %7
; IfStmt
%54 = load i32, i32* %2, align 4
%55 = icmp sle i32 %54, 0
%56 = zext i1 %55 to i32
%57 = icmp ne i32 %56, 0
%58 = zext i1 %57 to i8
%59 = trunc i8 %58 to i1
br i1 %59, label %if.then-6, label %cmp.or-5
cmp.or-5:
%60 = load i32, i32* %7, align 4
%61 = icmp ne i32 %60, 0
%62 = zext i1 %61 to i8
%63 = trunc i8 %62 to i1
br i1 %63, label %if.done-7, label %if.then-6
if.then-6:
; err
; SelectorExpr
%64 = call cc 64 i32 @GetLastError()
%65 = sext i32 %64 to i64
store i64 %65, i64* %8
; ReturnStmt
%66 = load i64, i64* %3, align 8
%67 = bitcast i64 %66 to i64
%68 = load i64, i64* %8, align 8
%69 = bitcast {i64, i64}* %9 to %..rawptr
%70 = call %..rawptr @__mem_zero(%..rawptr %69, i64 16)
store {i64, i64} zeroinitializer, {i64, i64}* %9
%71 = getelementptr inbounds {i64, i64}, {i64, i64}* %9, i64 0, i32 0
store i64 %67, i64* %71
%72 = getelementptr inbounds {i64, i64}, {i64, i64}* %9, i64 0, i32 1
store i64 %68, i64* %72
%73 = load {i64, i64}, {i64, i64}* %9, align 8
ret {i64, i64} %73
if.done-7:
; AssignStmt
%74 = load i32, i32* %2, align 4
%75 = sext i32 %74 to i64
%76 = load i64, i64* %3, align 8
%77 = add i64 %76, %75
store i64 %77, i64* %3
br label %for.loop-3
for.done-8:
; ReturnStmt
%78 = load i64, i64* %3, align 8
%79 = bitcast i64 %78 to i64
%80 = bitcast {i64, i64}* %10 to %..rawptr
%81 = call %..rawptr @__mem_zero(%..rawptr %80, i64 16)
store {i64, i64} zeroinitializer, {i64, i64}* %10
%82 = getelementptr inbounds {i64, i64}, {i64, i64}* %10, i64 0, i32 0
store i64 %79, i64* %82
%83 = getelementptr inbounds {i64, i64}, {i64, i64}* %10, i64 0, i32 1
store i64 0, i64* %83
%84 = load {i64, i64}, {i64, i64}* %10, align 8
ret {i64, i64} %84
}
define {i64, i64} @os_windows-6.read(i64 %fd, {i8*, i64}* %data, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca i64, align 16
%1 = alloca {i64, i64}, align 16
%2 = alloca i32, align 16
%3 = alloca i64, align 16
%4 = alloca i64, align 16
%5 = alloca i64, align 16
%6 = alloca i32, align 16
%7 = alloca i32, align 16
%8 = alloca i64, align 16
%9 = alloca {i64, i64}, align 16
%10 = alloca {i64, i64}, align 16
store i64 %fd, i64* %0
%11 = load {i8*, i64}, {i8*, i64}* %data, align 8
; IfStmt
%12 = load {i8*, i64}, {i8*, i64}* %data, align 8
%13 = extractvalue {i8*, i64} %12, 1
%14 = icmp eq i64 %13, 0
%15 = zext i1 %14 to i8
%16 = trunc i8 %15 to i1
br i1 %16, label %if.then-1, label %if.done-2
if.then-1:
; ReturnStmt
%17 = bitcast {i64, i64}* %1 to %..rawptr
%18 = call %..rawptr @__mem_zero(%..rawptr %17, i64 16)
store {i64, i64} zeroinitializer, {i64, i64}* %1
%19 = getelementptr inbounds {i64, i64}, {i64, i64}* %1, i64 0, i32 0
store i64 0, i64* %19
%20 = getelementptr inbounds {i64, i64}, {i64, i64}* %1, i64 0, i32 1
store i64 0, i64* %20
%21 = load {i64, i64}, {i64, i64}* %1, align 8
ret {i64, i64} %21
if.done-2:
; single_read_length
%22 = bitcast i32* %2 to %..rawptr
%23 = call %..rawptr @__mem_zero(%..rawptr %22, i64 4)
store i32 zeroinitializer, i32* %2
; total_read
%24 = bitcast i64* %3 to %..rawptr
%25 = call %..rawptr @__mem_zero(%..rawptr %24, i64 8)
store i64 zeroinitializer, i64* %3
; length
%26 = load {i8*, i64}, {i8*, i64}* %data, align 8
%27 = extractvalue {i8*, i64} %26, 1
%28 = bitcast i64 %27 to i64
store i64 %28, i64* %4
; ForStmt
br label %for.loop-3
for.loop-3:
%29 = load i64, i64* %3, align 8
%30 = load i64, i64* %4, align 8
%31 = icmp slt i64 %29, %30
%32 = zext i1 %31 to i8
%33 = trunc i8 %32 to i1
br i1 %33, label %for.body-4, label %for.done-8
for.body-4:
; remaining
%34 = load i64, i64* %4, align 8
%35 = load i64, i64* %3, align 8
%36 = sub i64 %34, %35
store i64 %36, i64* %5
; to_read
; min
%37 = load i64, i64* %5, align 8
%38 = trunc i64 %37 to i32
%39 = icmp ult i32 %38, 4294967295
%40 = select i1 %39, i32 %38, i32 4294967295
store i32 %40, i32* %6
; e
; SelectorExpr
%41 = load i64, i64* %0, align 8
%42 = inttoptr i64 %41 to %..rawptr
; IndexExpr
%43 = load {i8*, i64}, {i8*, i64}* %data, align 8
%44 = extractvalue {i8*, i64} %43, 0
%45 = load i64, i64* %3, align 8
%46 = bitcast i64 %45 to i64
%47 = extractvalue {i8*, i64} %43, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([54 x i8], [54 x i8]* @__str$159, i64 0, i32 0), i64 53}, i64 147, i64 48, i64 %46, i64 %47)
%48 = getelementptr inbounds i8, i8* %44, i64 %46
%49 = getelementptr inbounds i8, i8* %48, i64 0
%50 = load i32, i32* %6, align 4
%51 = getelementptr inbounds i32, i32* %2, i64 0
%52 = bitcast i8* %49 to %..rawptr
%53 = call cc 64 i32 @ReadFile(%..rawptr %42, %..rawptr %52, i32 %50, i32* %51, %..rawptr zeroinitializer)
store i32 %53, i32* %7
; IfStmt
%54 = load i32, i32* %2, align 4
%55 = icmp sle i32 %54, 0
%56 = zext i1 %55 to i32
%57 = icmp ne i32 %56, 0
%58 = zext i1 %57 to i8
%59 = trunc i8 %58 to i1
br i1 %59, label %if.then-6, label %cmp.or-5
cmp.or-5:
%60 = load i32, i32* %7, align 4
%61 = icmp ne i32 %60, 0
%62 = zext i1 %61 to i8
%63 = trunc i8 %62 to i1
br i1 %63, label %if.done-7, label %if.then-6
if.then-6:
; err
; SelectorExpr
%64 = call cc 64 i32 @GetLastError()
%65 = sext i32 %64 to i64
store i64 %65, i64* %8
; ReturnStmt
%66 = load i64, i64* %3, align 8
%67 = bitcast i64 %66 to i64
%68 = load i64, i64* %8, align 8
%69 = bitcast {i64, i64}* %9 to %..rawptr
%70 = call %..rawptr @__mem_zero(%..rawptr %69, i64 16)
store {i64, i64} zeroinitializer, {i64, i64}* %9
%71 = getelementptr inbounds {i64, i64}, {i64, i64}* %9, i64 0, i32 0
store i64 %67, i64* %71
%72 = getelementptr inbounds {i64, i64}, {i64, i64}* %9, i64 0, i32 1
store i64 %68, i64* %72
%73 = load {i64, i64}, {i64, i64}* %9, align 8
ret {i64, i64} %73
if.done-7:
; AssignStmt
%74 = load i32, i32* %2, align 4
%75 = sext i32 %74 to i64
%76 = load i64, i64* %3, align 8
%77 = add i64 %76, %75
store i64 %77, i64* %3
br label %for.loop-3
for.done-8:
; ReturnStmt
%78 = load i64, i64* %3, align 8
%79 = bitcast i64 %78 to i64
%80 = bitcast {i64, i64}* %10 to %..rawptr
%81 = call %..rawptr @__mem_zero(%..rawptr %80, i64 16)
store {i64, i64} zeroinitializer, {i64, i64}* %10
%82 = getelementptr inbounds {i64, i64}, {i64, i64}* %10, i64 0, i32 0
store i64 %79, i64* %82
%83 = getelementptr inbounds {i64, i64}, {i64, i64}* %10, i64 0, i32 1
store i64 0, i64* %83
%84 = load {i64, i64}, {i64, i64}* %10, align 8
ret {i64, i64} %84
}
define {i64, i64} @os_windows-6.file_size(i64 %fd, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca i64, align 16
%1 = alloca i64, align 16
%2 = alloca i64, align 16
%3 = alloca {i64, i64}, align 16
store i64 %fd, i64* %0
; length
%4 = bitcast i64* %1 to %..rawptr
%5 = call %..rawptr @__mem_zero(%..rawptr %4, i64 8)
store i64 zeroinitializer, i64* %1
; err
%6 = bitcast i64* %2 to %..rawptr
%7 = call %..rawptr @__mem_zero(%..rawptr %6, i64 8)
store i64 zeroinitializer, i64* %2
; IfStmt
; SelectorExpr
%8 = load i64, i64* %0, align 8
%9 = inttoptr i64 %8 to %..rawptr
%10 = getelementptr inbounds i64, i64* %1, i64 0
%11 = call cc 64 i32 @GetFileSizeEx(%..rawptr %9, i64* %10)
%12 = icmp ne i32 %11, 0
%13 = zext i1 %12 to i8
%14 = trunc i8 %13 to i1
br i1 %14, label %if.done-2, label %if.then-1
if.then-1:
; AssignStmt
; SelectorExpr
%15 = call cc 64 i32 @GetLastError()
%16 = sext i32 %15 to i64
store i64 %16, i64* %2
br label %if.done-2
if.done-2:
; ReturnStmt
%17 = load i64, i64* %1, align 8
%18 = load i64, i64* %2, align 8
%19 = bitcast {i64, i64}* %3 to %..rawptr
%20 = call %..rawptr @__mem_zero(%..rawptr %19, i64 16)
store {i64, i64} zeroinitializer, {i64, i64}* %3
%21 = getelementptr inbounds {i64, i64}, {i64, i64}* %3, i64 0, i32 0
store i64 %17, i64* %21
%22 = getelementptr inbounds {i64, i64}, {i64, i64}* %3, i64 0, i32 1
store i64 %18, i64* %22
%23 = load {i64, i64}, {i64, i64}* %3, align 8
ret {i64, i64} %23
}
define i64 @os_windows-6.get_std_handle(i64 %h, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca i64, align 16
%1 = alloca %..rawptr, align 16
store i64 %h, i64* %0
; fd
; SelectorExpr
%2 = load i64, i64* %0, align 8
%3 = trunc i64 %2 to i32
%4 = call cc 64 %..rawptr @GetStdHandle(i32 %3)
store %..rawptr %4, %..rawptr* %1
; SelectorExpr
%5 = load %..rawptr, %..rawptr* %1, align 8
%6 = call cc 64 i32 @SetHandleInformation(%..rawptr %5, i32 1, i32 0)
; ReturnStmt
%7 = load %..rawptr, %..rawptr* %1, align 8
%8 = ptrtoint %..rawptr %7 to i64
ret i64 %8
}
define %..rawptr @os_windows-6.heap_alloc(i64 %size, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca i64, align 16
store i64 %size, i64* %0
; ReturnStmt
; SelectorExpr
; SelectorExpr
%1 = call cc 64 %..rawptr @GetProcessHeap()
%2 = load i64, i64* %0, align 8
%3 = call cc 64 %..rawptr @HeapAlloc(%..rawptr %1, i32 8, i64 %2)
ret %..rawptr %3
}
define %..rawptr @os_windows-6.heap_resize(%..rawptr %ptr, i64 %new_size, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %..rawptr, align 16
%1 = alloca i64, align 16
store %..rawptr %ptr, %..rawptr* %0
store i64 %new_size, i64* %1
; IfStmt
%2 = load i64, i64* %1, align 8
%3 = icmp eq i64 %2, 0
%4 = zext i1 %3 to i8
%5 = trunc i8 %4 to i1
br i1 %5, label %if.then-1, label %if.done-2
if.then-1:
%6 = load %..rawptr, %..rawptr* %0, align 8
call void @os_windows-6.heap_free(%..rawptr %6, %Context* noalias nonnull %__.context_ptr)
; ReturnStmt
ret %..rawptr zeroinitializer
if.done-2:
; IfStmt
%7 = load %..rawptr, %..rawptr* %0, align 8
%8 = icmp eq %..rawptr %7, zeroinitializer
%9 = zext i1 %8 to i8
%10 = trunc i8 %9 to i1
br i1 %10, label %if.then-3, label %if.done-4
if.then-3:
; ReturnStmt
%11 = load i64, i64* %1, align 8
%12 = call %..rawptr @os_windows-6.heap_alloc(i64 %11, %Context* noalias nonnull %__.context_ptr)
ret %..rawptr %12
if.done-4:
; ReturnStmt
; SelectorExpr
; SelectorExpr
%13 = call cc 64 %..rawptr @GetProcessHeap()
%14 = load %..rawptr, %..rawptr* %0, align 8
%15 = load i64, i64* %1, align 8
%16 = call cc 64 %..rawptr @HeapReAlloc(%..rawptr %13, i32 8, %..rawptr %14, i64 %15)
ret %..rawptr %16
}
define void @os_windows-6.heap_free(%..rawptr %ptr, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %..rawptr, align 16
store %..rawptr %ptr, %..rawptr* %0
; IfStmt
%1 = load %..rawptr, %..rawptr* %0, align 8
%2 = icmp eq %..rawptr %1, zeroinitializer
%3 = zext i1 %2 to i8
%4 = trunc i8 %3 to i1
br i1 %4, label %if.then-1, label %if.done-2
if.then-1:
; ReturnStmt
ret void
if.done-2:
; SelectorExpr
; SelectorExpr
%5 = call cc 64 %..rawptr @GetProcessHeap()
%6 = load %..rawptr, %..rawptr* %0, align 8
%7 = call cc 64 i32 @HeapFree(%..rawptr %5, i32 0, %..rawptr %6)
ret void
}
define i64 @os_windows-6.current_thread_id(%Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
; ReturnStmt
; SelectorExpr
%0 = call cc 64 i32 @GetCurrentThreadId()
%1 = zext i32 %0 to i64
ret i64 %1
}
define %..rawptr @mem-10.set(%..rawptr %data, i32 %value, i64 %len) #0 {
decls-0:
%0 = alloca %..rawptr, align 16
%1 = alloca i32, align 16
%2 = alloca i64, align 16
store %..rawptr %data, %..rawptr* %0
store i32 %value, i32* %1
store i64 %len, i64* %2
; ReturnStmt
%3 = load %..rawptr, %..rawptr* %0, align 8
%4 = load i32, i32* %1, align 4
%5 = load i64, i64* %2, align 8
%6 = call %..rawptr @__mem_set(%..rawptr %3, i32 %4, i64 %5)
ret %..rawptr %6
}
define %..rawptr @mem-10.zero(%..rawptr %data, i64 %len) #0 {
decls-0:
%0 = alloca %..rawptr, align 16
%1 = alloca i64, align 16
store %..rawptr %data, %..rawptr* %0
store i64 %len, i64* %1
; ReturnStmt
%2 = load %..rawptr, %..rawptr* %0, align 8
%3 = load i64, i64* %1, align 8
%4 = call %..rawptr @__mem_zero(%..rawptr %2, i64 %3)
ret %..rawptr %4
}
define %..rawptr @mem-10.copy(%..rawptr %dst, %..rawptr %src, i64 %len) #0 {
decls-0:
%0 = alloca %..rawptr, align 16
%1 = alloca %..rawptr, align 16
%2 = alloca i64, align 16
store %..rawptr %dst, %..rawptr* %0
store %..rawptr %src, %..rawptr* %1
store i64 %len, i64* %2
; ReturnStmt
%3 = load %..rawptr, %..rawptr* %0, align 8
%4 = load %..rawptr, %..rawptr* %1, align 8
%5 = load i64, i64* %2, align 8
%6 = call %..rawptr @__mem_copy(%..rawptr %3, %..rawptr %4, i64 %5)
ret %..rawptr %6
}
define %Context @mem-10.context_from_allocator(%Allocator* %a, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %Context, align 16
%1 = load %Allocator, %Allocator* %a, align 8
; c
%2 = load %Context, %Context* %__.context_ptr, align 8
store %Context %2, %Context* %0
; AssignStmt
; SelectorExpr
%3 = getelementptr inbounds %Context, %Context* %0, i64 0, i32 0
%4 = load %Allocator, %Allocator* %a, align 8
store %Allocator %4, %Allocator* %3
; ReturnStmt
%5 = load %Context, %Context* %0, align 8
ret %Context %5
}
define {i8*, i64, i64, %Allocator} @fmt-11.string_buffer_from_slice({i8*, i64}* %backing, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %raw-5.Slice, align 16
%1 = alloca %raw-5.Dynamic_Array, align 16
%2 = alloca %raw-5.Dynamic_Array, align 16
%3 = load {i8*, i64}, {i8*, i64}* %backing, align 8
; s
%4 = load {i8*, i64}, {i8*, i64}* %backing, align 8
%5 = bitcast {i8*, i64}* %backing to %raw-5.Slice*
%6 = load %raw-5.Slice, %raw-5.Slice* %5, align 8
store %raw-5.Slice %6, %raw-5.Slice* %0
; d
; CompoundLit
%7 = bitcast %raw-5.Dynamic_Array* %2 to %..rawptr
%8 = call %..rawptr @__mem_zero(%..rawptr %7, i64 40)
store %raw-5.Dynamic_Array zeroinitializer, %raw-5.Dynamic_Array* %2
store %raw-5.Dynamic_Array {%..rawptr zeroinitializer, i64 0, i64 zeroinitializer, %Allocator zeroinitializer}, %raw-5.Dynamic_Array* %2
; SelectorExpr
%9 = getelementptr inbounds %raw-5.Slice, %raw-5.Slice* %0, i64 0, i32 0
%10 = load %..rawptr, %..rawptr* %9, align 8
%11 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %2, i64 0, i32 0
store %..rawptr %10, %..rawptr* %11
; SelectorExpr
%12 = getelementptr inbounds %raw-5.Slice, %raw-5.Slice* %0, i64 0, i32 1
%13 = load i64, i64* %12, align 8
%14 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %2, i64 0, i32 2
store i64 %13, i64* %14
%15 = call %Allocator @nil_allocator(%Context* noalias nonnull %__.context_ptr)
%16 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %2, i64 0, i32 3
store %Allocator %15, %Allocator* %16
%17 = load %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %2, align 8
store %raw-5.Dynamic_Array %17, %raw-5.Dynamic_Array* %1
; ReturnStmt
%18 = load %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %1, align 8
%19 = bitcast %raw-5.Dynamic_Array* %1 to {i8*, i64, i64, %Allocator}*
%20 = load {i8*, i64, i64, %Allocator}, {i8*, i64, i64, %Allocator}* %19, align 8
ret {i8*, i64, i64, %Allocator} %20
}
define %..string @fmt-11.to_string({i8*, i64, i64, %Allocator}* %buf, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca {i8*, i64}, align 16
%1 = alloca %..string, align 16
%2 = load {i8*, i64, i64, %Allocator}, {i8*, i64, i64, %Allocator}* %buf, align 8
; ReturnStmt
; SliceExpr
%3 = load {i8*, i64, i64, %Allocator}, {i8*, i64, i64, %Allocator}* %buf, align 8
%4 = extractvalue {i8*, i64, i64, %Allocator} %3, 1
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$15a, i64 0, i32 0), i64 46}, i64 46, i64 19, i64 0, i64 %4, i64 %4)
%5 = extractvalue {i8*, i64, i64, %Allocator} %3, 0
%6 = getelementptr inbounds i8, i8* %5, i64 0
%7 = sub i64 %4, 0
%8 = bitcast {i8*, i64}* %0 to %..rawptr
%9 = call %..rawptr @__mem_zero(%..rawptr %8, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %0
%10 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %0, i64 0, i32 0
store i8* %6, i8** %10
%11 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %0, i64 0, i32 1
store i64 %7, i64* %11
%12 = load {i8*, i64}, {i8*, i64}* %0, align 8
%13 = extractvalue {i8*, i64} %12, 0
%14 = extractvalue {i8*, i64} %12, 1
%15 = bitcast %..string* %1 to %..rawptr
%16 = call %..rawptr @__mem_zero(%..rawptr %15, i64 16)
store %..string zeroinitializer, %..string* %1
%17 = getelementptr inbounds %..string, %..string* %1, i64 0, i32 0
store i8* %13, i8** %17
%18 = getelementptr inbounds %..string, %..string* %1, i64 0, i32 1
store i64 %14, i64* %18
%19 = load %..string, %..string* %1, align 8
ret %..string %19
}
define void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %buf, %..string %s, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca {i8*, i64, i64, %Allocator}*, align 16
%1 = alloca %..string, align 16
%2 = alloca {%..string*, i64}, align 16
%3 = alloca [1 x %..string], align 16
%4 = alloca {%..string*, i64}, align 16
%5 = alloca %Source_Code_Location, align 16
store {i8*, i64, i64, %Allocator}* %buf, {i8*, i64, i64, %Allocator}** %0
store %..string %s, %..string* %1
%6 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
%7 = load %..string, %..string* %1, align 8
; variadic call argument generation
%8 = bitcast {%..string*, i64}* %2 to %..rawptr
%9 = call %..rawptr @__mem_zero(%..rawptr %8, i64 16)
store {%..string*, i64} zeroinitializer, {%..string*, i64}* %2
%10 = bitcast [1 x %..string]* %3 to %..rawptr
%11 = call %..rawptr @__mem_zero(%..rawptr %10, i64 16)
store [1 x %..string] zeroinitializer, [1 x %..string]* %3
%12 = getelementptr inbounds [1 x %..string], [1 x %..string]* %3, i64 0, i32 0
store %..string %7, %..string* %12
%13 = getelementptr inbounds [1 x %..string], [1 x %..string]* %3, i64 0, i32 0
%14 = getelementptr inbounds {%..string*, i64}, {%..string*, i64}* %2, i64 0, i32 0
store %..string* %13, %..string** %14
%15 = getelementptr inbounds {%..string*, i64}, {%..string*, i64}* %2, i64 0, i32 1
store i64 1, i64* %15
%16 = load {%..string*, i64}, {%..string*, i64}* %2, align 8
%17 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$15b, i64 0, i32 0), i64 46}, i64 51, i64 2, %..string {i8* getelementptr inbounds ([13 x i8], [13 x i8]* @__str$15c, i64 0, i32 0), i64 12})
%18 = bitcast {%..string*, i64}* %4 to %..rawptr
%19 = call %..rawptr @__mem_zero(%..rawptr %18, i64 16)
store {%..string*, i64} zeroinitializer, {%..string*, i64}* %4
store {%..string*, i64} %16, {%..string*, i64}* %4
%20 = bitcast %Source_Code_Location* %5 to %..rawptr
%21 = call %..rawptr @__mem_zero(%..rawptr %20, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %5
store %Source_Code_Location %17, %Source_Code_Location* %5
%22 = call i64 @_preload-0.append_string-19886({i8*, i64, i64, %Allocator}* %6, {%..string*, i64}* %4, %Source_Code_Location* %5, %Context* noalias nonnull %__.context_ptr)
ret void
}
define void @fmt-11.write_bytes({i8*, i64, i64, %Allocator}* %buf, {i8*, i64}* %data, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca {i8*, i64, i64, %Allocator}*, align 16
%1 = alloca {i8*, i64}, align 16
%2 = alloca %Source_Code_Location, align 16
store {i8*, i64, i64, %Allocator}* %buf, {i8*, i64, i64, %Allocator}** %0
%3 = load {i8*, i64}, {i8*, i64}* %data, align 8
%4 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
%5 = load {i8*, i64}, {i8*, i64}* %data, align 8
%6 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$15d, i64 0, i32 0), i64 46}, i64 54, i64 2, %..string {i8* getelementptr inbounds ([12 x i8], [12 x i8]* @__str$15e, i64 0, i32 0), i64 11})
%7 = bitcast {i8*, i64}* %1 to %..rawptr
%8 = call %..rawptr @__mem_zero(%..rawptr %7, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %1
store {i8*, i64} %5, {i8*, i64}* %1
%9 = bitcast %Source_Code_Location* %2 to %..rawptr
%10 = call %..rawptr @__mem_zero(%..rawptr %9, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %2
store %Source_Code_Location %6, %Source_Code_Location* %2
%11 = call i64 @_preload-0.append-19894({i8*, i64, i64, %Allocator}* %4, {i8*, i64}* %1, %Source_Code_Location* %2, %Context* noalias nonnull %__.context_ptr)
ret void
}
define void @fmt-11.write_byte({i8*, i64, i64, %Allocator}* %buf, i8 %data, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca {i8*, i64, i64, %Allocator}*, align 16
%1 = alloca i8, align 16
%2 = alloca {i8*, i64}, align 16
%3 = alloca [1 x i8], align 16
%4 = alloca {i8*, i64}, align 16
%5 = alloca %Source_Code_Location, align 16
store {i8*, i64, i64, %Allocator}* %buf, {i8*, i64, i64, %Allocator}** %0
store i8 %data, i8* %1
%6 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
%7 = load i8, i8* %1, align 1
; variadic call argument generation
%8 = bitcast {i8*, i64}* %2 to %..rawptr
%9 = call %..rawptr @__mem_zero(%..rawptr %8, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %2
%10 = bitcast [1 x i8]* %3 to %..rawptr
%11 = call %..rawptr @__mem_zero(%..rawptr %10, i64 1)
store [1 x i8] zeroinitializer, [1 x i8]* %3
%12 = getelementptr inbounds [1 x i8], [1 x i8]* %3, i64 0, i32 0
store i8 %7, i8* %12
%13 = getelementptr inbounds [1 x i8], [1 x i8]* %3, i64 0, i32 0
%14 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %2, i64 0, i32 0
store i8* %13, i8** %14
%15 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %2, i64 0, i32 1
store i64 1, i64* %15
%16 = load {i8*, i64}, {i8*, i64}* %2, align 8
%17 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$15f, i64 0, i32 0), i64 46}, i64 57, i64 2, %..string {i8* getelementptr inbounds ([11 x i8], [11 x i8]* @__str$160, i64 0, i32 0), i64 10})
%18 = bitcast {i8*, i64}* %4 to %..rawptr
%19 = call %..rawptr @__mem_zero(%..rawptr %18, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %4
store {i8*, i64} %16, {i8*, i64}* %4
%20 = bitcast %Source_Code_Location* %5 to %..rawptr
%21 = call %..rawptr @__mem_zero(%..rawptr %20, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %5
store %Source_Code_Location %17, %Source_Code_Location* %5
%22 = call i64 @_preload-0.append-19894({i8*, i64, i64, %Allocator}* %6, {i8*, i64}* %4, %Source_Code_Location* %5, %Context* noalias nonnull %__.context_ptr)
ret void
}
define void @fmt-11.write_rune({i8*, i64, i64, %Allocator}* %buf, i32 %r, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca {i8*, i64, i64, %Allocator}*, align 16
%1 = alloca i32, align 16
%2 = alloca [4 x i8], align 16
%3 = alloca i64, align 16
%4 = alloca {i8*, i64}, align 16
%5 = alloca {i8*, i64}, align 16
store {i8*, i64, i64, %Allocator}* %buf, {i8*, i64, i64, %Allocator}** %0
store i32 %r, i32* %1
; IfStmt
%6 = load i32, i32* %1, align 4
%7 = icmp slt i32 %6, 128
%8 = zext i1 %7 to i8
%9 = trunc i8 %8 to i1
br i1 %9, label %if.then-1, label %if.done-2
if.then-1:
%10 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
%11 = load i32, i32* %1, align 4
%12 = trunc i32 %11 to i8
call void @fmt-11.write_byte({i8*, i64, i64, %Allocator}* %10, i8 %12, %Context* noalias nonnull %__.context_ptr)
; ReturnStmt
ret void
if.done-2:
; b
; n
; SelectorExpr
%13 = load i32, i32* %1, align 4
%14 = call {[4 x i8], i64} @utf8-4.encode_rune(i32 %13, %Context* noalias nonnull %__.context_ptr)
%15 = extractvalue {[4 x i8], i64} %14, 0
%16 = extractvalue {[4 x i8], i64} %14, 1
store [4 x i8] %15, [4 x i8]* %2
store i64 %16, i64* %3
%17 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
; SliceExpr
%18 = load i64, i64* %3, align 8
%19 = load [4 x i8], [4 x i8]* %2, align 1
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$161, i64 0, i32 0), i64 46}, i64 66, i64 20, i64 0, i64 %18, i64 4)
%20 = getelementptr inbounds [4 x i8], [4 x i8]* %2, i64 0, i32 0
%21 = getelementptr inbounds i8, i8* %20, i64 0
%22 = sub i64 %18, 0
%23 = bitcast {i8*, i64}* %4 to %..rawptr
%24 = call %..rawptr @__mem_zero(%..rawptr %23, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %4
%25 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %4, i64 0, i32 0
store i8* %21, i8** %25
%26 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %4, i64 0, i32 1
store i64 %22, i64* %26
%27 = load {i8*, i64}, {i8*, i64}* %4, align 8
%28 = bitcast {i8*, i64}* %5 to %..rawptr
%29 = call %..rawptr @__mem_zero(%..rawptr %28, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %5
store {i8*, i64} %27, {i8*, i64}* %5
call void @fmt-11.write_bytes({i8*, i64, i64, %Allocator}* %17, {i8*, i64}* %5, %Context* noalias nonnull %__.context_ptr)
ret void
}
define void @fmt-11.write_i64({i8*, i64, i64, %Allocator}* %buf, i64 %i, i64 %base, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca {i8*, i64, i64, %Allocator}*, align 16
%1 = alloca i64, align 16
%2 = alloca i64, align 16
%3 = alloca [129 x i8], align 16
%4 = alloca %..string, align 16
%5 = alloca {i8*, i64}, align 16
%6 = alloca {i8*, i64}, align 16
store {i8*, i64, i64, %Allocator}* %buf, {i8*, i64, i64, %Allocator}** %0
store i64 %i, i64* %1
store i64 %base, i64* %2
; b
%7 = bitcast [129 x i8]* %3 to %..rawptr
%8 = call %..rawptr @__mem_zero(%..rawptr %7, i64 129)
store [129 x i8] zeroinitializer, [129 x i8]* %3
; s
; SelectorExpr
; SliceExpr
%9 = load [129 x i8], [129 x i8]* %3, align 1
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$162, i64 0, i32 0), i64 46}, i64 71, i64 28, i64 0, i64 129, i64 129)
%10 = getelementptr inbounds [129 x i8], [129 x i8]* %3, i64 0, i32 0
%11 = getelementptr inbounds i8, i8* %10, i64 0
%12 = sub i64 129, 0
%13 = bitcast {i8*, i64}* %5 to %..rawptr
%14 = call %..rawptr @__mem_zero(%..rawptr %13, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %5
%15 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %5, i64 0, i32 0
store i8* %11, i8** %15
%16 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %5, i64 0, i32 1
store i64 %12, i64* %16
%17 = load {i8*, i64}, {i8*, i64}* %5, align 8
%18 = load i64, i64* %1, align 8
%19 = bitcast i64 %18 to i64
%20 = load i64, i64* %2, align 8
; SelectorExpr
%21 = load %..string, %..string* @strconv-42.digits, align 8
%22 = bitcast {i8*, i64}* %6 to %..rawptr
%23 = call %..rawptr @__mem_zero(%..rawptr %22, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %6
store {i8*, i64} %17, {i8*, i64}* %6
%24 = call %..string @strconv-42.append_bits({i8*, i64}* %6, i64 %19, i64 %20, i1 true, i64 64, %..string %21, i64 0, %Context* noalias nonnull %__.context_ptr)
store %..string %24, %..string* %4
%25 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
%26 = load %..string, %..string* %4, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %25, %..string %26, %Context* noalias nonnull %__.context_ptr)
ret void
}
define i64 @fmt-11.fprintln(i64 %fd, {%..any*, i64}* %args, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca i64, align 16
%1 = alloca [4096 x i8], align 16
%2 = alloca {i8*, i64, i64, %Allocator}, align 16
%3 = alloca {i8*, i64}, align 16
%4 = alloca {i8*, i64}, align 16
%5 = alloca %..string, align 16
%6 = alloca {%..any*, i64}, align 16
store i64 %fd, i64* %0
%7 = load {%..any*, i64}, {%..any*, i64}* %args, align 8
; data
%8 = bitcast [4096 x i8]* %1 to %..rawptr
%9 = call %..rawptr @__mem_zero(%..rawptr %8, i64 4096)
store [4096 x i8] zeroinitializer, [4096 x i8]* %1
; buf
; SliceExpr
%10 = load [4096 x i8], [4096 x i8]* %1, align 1
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$163, i64 0, i32 0), i64 46}, i64 85, i64 38, i64 0, i64 4096, i64 4096)
%11 = getelementptr inbounds [4096 x i8], [4096 x i8]* %1, i64 0, i32 0
%12 = getelementptr inbounds i8, i8* %11, i64 0
%13 = sub i64 4096, 0
%14 = bitcast {i8*, i64}* %3 to %..rawptr
%15 = call %..rawptr @__mem_zero(%..rawptr %14, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %3
%16 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %3, i64 0, i32 0
store i8* %12, i8** %16
%17 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %3, i64 0, i32 1
store i64 %13, i64* %17
%18 = load {i8*, i64}, {i8*, i64}* %3, align 8
%19 = bitcast {i8*, i64}* %4 to %..rawptr
%20 = call %..rawptr @__mem_zero(%..rawptr %19, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %4
store {i8*, i64} %18, {i8*, i64}* %4
%21 = call {i8*, i64, i64, %Allocator} @fmt-11.string_buffer_from_slice({i8*, i64}* %4, %Context* noalias nonnull %__.context_ptr)
store {i8*, i64, i64, %Allocator} %21, {i8*, i64, i64, %Allocator}* %2
; res
%22 = getelementptr inbounds {i8*, i64, i64, %Allocator}, {i8*, i64, i64, %Allocator}* %2, i64 0
%23 = load {%..any*, i64}, {%..any*, i64}* %args, align 8
%24 = bitcast {%..any*, i64}* %6 to %..rawptr
%25 = call %..rawptr @__mem_zero(%..rawptr %24, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %6
store {%..any*, i64} %23, {%..any*, i64}* %6
%26 = call %..string @fmt-11.sbprintln({i8*, i64, i64, %Allocator}* %22, {%..any*, i64}* %6, %Context* noalias nonnull %__.context_ptr)
store %..string %26, %..string* %5
; SelectorExpr
%27 = load i64, i64* %0, align 8
%28 = load %..string, %..string* %5, align 8
%29 = call {i64, i64} @os-3.write_string(i64 %27, %..string %28, %Context* noalias nonnull %__.context_ptr)
; ReturnStmt
%30 = load %..string, %..string* %5, align 8
%31 = extractvalue %..string %30, 1
ret i64 %31
}
define i64 @fmt-11.fprintf(i64 %fd, %..string %fmt, {%..any*, i64}* %args, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca i64, align 16
%1 = alloca %..string, align 16
%2 = alloca [4096 x i8], align 16
%3 = alloca {i8*, i64, i64, %Allocator}, align 16
%4 = alloca {i8*, i64}, align 16
%5 = alloca {i8*, i64}, align 16
%6 = alloca %..string, align 16
%7 = alloca {%..any*, i64}, align 16
store i64 %fd, i64* %0
store %..string %fmt, %..string* %1
%8 = load {%..any*, i64}, {%..any*, i64}* %args, align 8
; data
%9 = bitcast [4096 x i8]* %2 to %..rawptr
%10 = call %..rawptr @__mem_zero(%..rawptr %9, i64 4096)
store [4096 x i8] zeroinitializer, [4096 x i8]* %2
; buf
; SliceExpr
%11 = load [4096 x i8], [4096 x i8]* %2, align 1
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$164, i64 0, i32 0), i64 46}, i64 92, i64 38, i64 0, i64 4096, i64 4096)
%12 = getelementptr inbounds [4096 x i8], [4096 x i8]* %2, i64 0, i32 0
%13 = getelementptr inbounds i8, i8* %12, i64 0
%14 = sub i64 4096, 0
%15 = bitcast {i8*, i64}* %4 to %..rawptr
%16 = call %..rawptr @__mem_zero(%..rawptr %15, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %4
%17 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %4, i64 0, i32 0
store i8* %13, i8** %17
%18 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %4, i64 0, i32 1
store i64 %14, i64* %18
%19 = load {i8*, i64}, {i8*, i64}* %4, align 8
%20 = bitcast {i8*, i64}* %5 to %..rawptr
%21 = call %..rawptr @__mem_zero(%..rawptr %20, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %5
store {i8*, i64} %19, {i8*, i64}* %5
%22 = call {i8*, i64, i64, %Allocator} @fmt-11.string_buffer_from_slice({i8*, i64}* %5, %Context* noalias nonnull %__.context_ptr)
store {i8*, i64, i64, %Allocator} %22, {i8*, i64, i64, %Allocator}* %3
; res
%23 = getelementptr inbounds {i8*, i64, i64, %Allocator}, {i8*, i64, i64, %Allocator}* %3, i64 0
%24 = load %..string, %..string* %1, align 8
%25 = load {%..any*, i64}, {%..any*, i64}* %args, align 8
%26 = bitcast {%..any*, i64}* %7 to %..rawptr
%27 = call %..rawptr @__mem_zero(%..rawptr %26, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %7
store {%..any*, i64} %25, {%..any*, i64}* %7
%28 = call %..string @fmt-11.sbprintf({i8*, i64, i64, %Allocator}* %23, %..string %24, {%..any*, i64}* %7, %Context* noalias nonnull %__.context_ptr)
store %..string %28, %..string* %6
; SelectorExpr
%29 = load i64, i64* %0, align 8
%30 = load %..string, %..string* %6, align 8
%31 = call {i64, i64} @os-3.write_string(i64 %29, %..string %30, %Context* noalias nonnull %__.context_ptr)
; ReturnStmt
%32 = load %..string, %..string* %6, align 8
%33 = extractvalue %..string %32, 1
ret i64 %33
}
define i64 @fmt-11.println({%..any*, i64}* %args, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca {%..any*, i64}, align 16
%1 = load {%..any*, i64}, {%..any*, i64}* %args, align 8
; ReturnStmt
; SelectorExpr
%2 = load i64, i64* @os_windows-6.stdout, align 8
%3 = load {%..any*, i64}, {%..any*, i64}* %args, align 8
%4 = bitcast {%..any*, i64}* %0 to %..rawptr
%5 = call %..rawptr @__mem_zero(%..rawptr %4, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %0
store {%..any*, i64} %3, {%..any*, i64}* %0
%6 = call i64 @fmt-11.fprintln(i64 %2, {%..any*, i64}* %0, %Context* noalias nonnull %__.context_ptr)
ret i64 %6
}
define i64 @fmt-11.println_err({%..any*, i64}* %args, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca {%..any*, i64}, align 16
%1 = load {%..any*, i64}, {%..any*, i64}* %args, align 8
; ReturnStmt
; SelectorExpr
%2 = load i64, i64* @os_windows-6.stderr, align 8
%3 = load {%..any*, i64}, {%..any*, i64}* %args, align 8
%4 = bitcast {%..any*, i64}* %0 to %..rawptr
%5 = call %..rawptr @__mem_zero(%..rawptr %4, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %0
store {%..any*, i64} %3, {%..any*, i64}* %0
%6 = call i64 @fmt-11.fprintln(i64 %2, {%..any*, i64}* %0, %Context* noalias nonnull %__.context_ptr)
ret i64 %6
}
define i64 @fmt-11.printf(%..string %fmt, {%..any*, i64}* %args, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %..string, align 16
%1 = alloca {%..any*, i64}, align 16
store %..string %fmt, %..string* %0
%2 = load {%..any*, i64}, {%..any*, i64}* %args, align 8
; ReturnStmt
; SelectorExpr
%3 = load i64, i64* @os_windows-6.stdout, align 8
%4 = load %..string, %..string* %0, align 8
%5 = load {%..any*, i64}, {%..any*, i64}* %args, align 8
%6 = bitcast {%..any*, i64}* %1 to %..rawptr
%7 = call %..rawptr @__mem_zero(%..rawptr %6, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %1
store {%..any*, i64} %5, {%..any*, i64}* %1
%8 = call i64 @fmt-11.fprintf(i64 %3, %..string %4, {%..any*, i64}* %1, %Context* noalias nonnull %__.context_ptr)
ret i64 %8
}
define i64 @fmt-11.printf_err(%..string %fmt, {%..any*, i64}* %args, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %..string, align 16
%1 = alloca {%..any*, i64}, align 16
store %..string %fmt, %..string* %0
%2 = load {%..any*, i64}, {%..any*, i64}* %args, align 8
; ReturnStmt
; SelectorExpr
%3 = load i64, i64* @os_windows-6.stderr, align 8
%4 = load %..string, %..string* %0, align 8
%5 = load {%..any*, i64}, {%..any*, i64}* %args, align 8
%6 = bitcast {%..any*, i64}* %1 to %..rawptr
%7 = call %..rawptr @__mem_zero(%..rawptr %6, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %1
store {%..any*, i64} %5, {%..any*, i64}* %1
%8 = call i64 @fmt-11.fprintf(i64 %3, %..string %4, {%..any*, i64}* %1, %Context* noalias nonnull %__.context_ptr)
ret i64 %8
}
define %..string @fmt-11.aprintf(%..string %fmt, {%..any*, i64}* %args, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %..string, align 16
%1 = alloca {i8*, i64, i64, %Allocator}, align 16
%2 = alloca {i8*, i64, i64, %Allocator}, align 16
%3 = alloca %Source_Code_Location, align 16
%4 = alloca {%..any*, i64}, align 16
%5 = alloca {i8*, i64, i64, %Allocator}, align 16
store %..string %fmt, %..string* %0
%6 = load {%..any*, i64}, {%..any*, i64}* %args, align 8
; buf
; make
call void @__dynamic_array_expr_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$165, i64 0, i32 0), i64 46}, i64 121, i64 28, i64 0, i64 0, i64 0)
%7 = bitcast {i8*, i64, i64, %Allocator}* %2 to %..rawptr
%8 = call %..rawptr @__mem_zero(%..rawptr %7, i64 40)
store {i8*, i64, i64, %Allocator} zeroinitializer, {i8*, i64, i64, %Allocator}* %2
%9 = bitcast {i8*, i64, i64, %Allocator}* %2 to %..rawptr
%10 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$166, i64 0, i32 0), i64 46}, i64 121, i64 28, %..string {i8* getelementptr inbounds ([8 x i8], [8 x i8]* @__str$167, i64 0, i32 0), i64 7})
%11 = bitcast %Source_Code_Location* %3 to %..rawptr
%12 = call %..rawptr @__mem_zero(%..rawptr %11, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %3
store %Source_Code_Location %10, %Source_Code_Location* %3
call void @__dynamic_array_make(%..rawptr %9, i64 1, i64 1, i64 0, i64 0, %Source_Code_Location* %3, %Context* noalias nonnull %__.context_ptr)
%13 = load {i8*, i64, i64, %Allocator}, {i8*, i64, i64, %Allocator}* %2, align 8
%14 = bitcast {i8*, i64, i64, %Allocator}* %2 to {i8*, i64, i64, %Allocator}*
%15 = load {i8*, i64, i64, %Allocator}, {i8*, i64, i64, %Allocator}* %14, align 8
store {i8*, i64, i64, %Allocator} %15, {i8*, i64, i64, %Allocator}* %1
%16 = getelementptr inbounds {i8*, i64, i64, %Allocator}, {i8*, i64, i64, %Allocator}* %1, i64 0
%17 = load %..string, %..string* %0, align 8
%18 = load {%..any*, i64}, {%..any*, i64}* %args, align 8
%19 = bitcast {%..any*, i64}* %4 to %..rawptr
%20 = call %..rawptr @__mem_zero(%..rawptr %19, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %4
store {%..any*, i64} %18, {%..any*, i64}* %4
%21 = call %..string @fmt-11.sbprintf({i8*, i64, i64, %Allocator}* %16, %..string %17, {%..any*, i64}* %4, %Context* noalias nonnull %__.context_ptr)
; ReturnStmt
%22 = load {i8*, i64, i64, %Allocator}, {i8*, i64, i64, %Allocator}* %1, align 8
%23 = bitcast {i8*, i64, i64, %Allocator}* %5 to %..rawptr
%24 = call %..rawptr @__mem_zero(%..rawptr %23, i64 40)
store {i8*, i64, i64, %Allocator} zeroinitializer, {i8*, i64, i64, %Allocator}* %5
store {i8*, i64, i64, %Allocator} %22, {i8*, i64, i64, %Allocator}* %5
%25 = call %..string @fmt-11.to_string({i8*, i64, i64, %Allocator}* %5, %Context* noalias nonnull %__.context_ptr)
ret %..string %25
}
define %..string @fmt-11.bprint({i8*, i64}* %buf, {%..any*, i64}* %args, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca {i8*, i64, i64, %Allocator}, align 16
%1 = alloca {i8*, i64}, align 16
%2 = alloca {i8*, i64}, align 16
%3 = alloca {%..any*, i64}, align 16
%4 = load {i8*, i64}, {i8*, i64}* %buf, align 8
%5 = load {%..any*, i64}, {%..any*, i64}* %args, align 8
; sb
; SliceExpr
%6 = load {i8*, i64}, {i8*, i64}* %buf, align 8
%7 = extractvalue {i8*, i64} %6, 1
%8 = load {i8*, i64}, {i8*, i64}* %buf, align 8
%9 = extractvalue {i8*, i64} %8, 1
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$168, i64 0, i32 0), i64 46}, i64 129, i64 36, i64 0, i64 %7, i64 %9)
%10 = extractvalue {i8*, i64} %8, 0
%11 = getelementptr inbounds i8, i8* %10, i64 0
%12 = sub i64 %7, 0
%13 = bitcast {i8*, i64}* %1 to %..rawptr
%14 = call %..rawptr @__mem_zero(%..rawptr %13, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %1
%15 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %1, i64 0, i32 0
store i8* %11, i8** %15
%16 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %1, i64 0, i32 1
store i64 %12, i64* %16
%17 = load {i8*, i64}, {i8*, i64}* %1, align 8
%18 = bitcast {i8*, i64}* %2 to %..rawptr
%19 = call %..rawptr @__mem_zero(%..rawptr %18, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %2
store {i8*, i64} %17, {i8*, i64}* %2
%20 = call {i8*, i64, i64, %Allocator} @fmt-11.string_buffer_from_slice({i8*, i64}* %2, %Context* noalias nonnull %__.context_ptr)
store {i8*, i64, i64, %Allocator} %20, {i8*, i64, i64, %Allocator}* %0
; ReturnStmt
%21 = getelementptr inbounds {i8*, i64, i64, %Allocator}, {i8*, i64, i64, %Allocator}* %0, i64 0
%22 = load {%..any*, i64}, {%..any*, i64}* %args, align 8
%23 = bitcast {%..any*, i64}* %3 to %..rawptr
%24 = call %..rawptr @__mem_zero(%..rawptr %23, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %3
store {%..any*, i64} %22, {%..any*, i64}* %3
%25 = call %..string @fmt-11.sbprint({i8*, i64, i64, %Allocator}* %21, {%..any*, i64}* %3, %Context* noalias nonnull %__.context_ptr)
ret %..string %25
}
define %..string @fmt-11.bprintf({i8*, i64}* %buf, %..string %fmt, {%..any*, i64}* %args, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %..string, align 16
%1 = alloca {i8*, i64, i64, %Allocator}, align 16
%2 = alloca {i8*, i64}, align 16
%3 = alloca {i8*, i64}, align 16
%4 = alloca {%..any*, i64}, align 16
%5 = load {i8*, i64}, {i8*, i64}* %buf, align 8
store %..string %fmt, %..string* %0
%6 = load {%..any*, i64}, {%..any*, i64}* %args, align 8
; sb
; SliceExpr
%7 = load {i8*, i64}, {i8*, i64}* %buf, align 8
%8 = extractvalue {i8*, i64} %7, 1
%9 = load {i8*, i64}, {i8*, i64}* %buf, align 8
%10 = extractvalue {i8*, i64} %9, 1
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$169, i64 0, i32 0), i64 46}, i64 137, i64 36, i64 0, i64 %8, i64 %10)
%11 = extractvalue {i8*, i64} %9, 0
%12 = getelementptr inbounds i8, i8* %11, i64 0
%13 = sub i64 %8, 0
%14 = bitcast {i8*, i64}* %2 to %..rawptr
%15 = call %..rawptr @__mem_zero(%..rawptr %14, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %2
%16 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %2, i64 0, i32 0
store i8* %12, i8** %16
%17 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %2, i64 0, i32 1
store i64 %13, i64* %17
%18 = load {i8*, i64}, {i8*, i64}* %2, align 8
%19 = bitcast {i8*, i64}* %3 to %..rawptr
%20 = call %..rawptr @__mem_zero(%..rawptr %19, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %3
store {i8*, i64} %18, {i8*, i64}* %3
%21 = call {i8*, i64, i64, %Allocator} @fmt-11.string_buffer_from_slice({i8*, i64}* %3, %Context* noalias nonnull %__.context_ptr)
store {i8*, i64, i64, %Allocator} %21, {i8*, i64, i64, %Allocator}* %1
; ReturnStmt
%22 = getelementptr inbounds {i8*, i64, i64, %Allocator}, {i8*, i64, i64, %Allocator}* %1, i64 0
%23 = load %..string, %..string* %0, align 8
%24 = load {%..any*, i64}, {%..any*, i64}* %args, align 8
%25 = bitcast {%..any*, i64}* %4 to %..rawptr
%26 = call %..rawptr @__mem_zero(%..rawptr %25, i64 16)
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %4
store {%..any*, i64} %24, {%..any*, i64}* %4
%27 = call %..string @fmt-11.sbprintf({i8*, i64, i64, %Allocator}* %22, %..string %23, {%..any*, i64}* %4, %Context* noalias nonnull %__.context_ptr)
ret %..string %27
}
define void @fmt-11.write_type({i8*, i64, i64, %Allocator}* %buf, %Type_Info* %ti, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca {i8*, i64, i64, %Allocator}*, align 16
%1 = alloca %Type_Info*, align 16
%2 = alloca %Type_Info_Named, align 16
%3 = alloca %Type_Info_Integer, align 16
%4 = alloca %..any, align 16
%5 = alloca %..any, align 16
%6 = alloca i64, align 16
%7 = alloca i64, align 16
%8 = alloca i64, align 16
%9 = alloca %..any, align 16
%10 = alloca %Type_Info_Rune, align 16
%11 = alloca %Type_Info_Float, align 16
%12 = alloca %Type_Info_Complex, align 16
%13 = alloca %Type_Info_String, align 16
%14 = alloca %Type_Info_Boolean, align 16
%15 = alloca %..any, align 16
%16 = alloca %..any, align 16
%17 = alloca i8, align 16
%18 = alloca %..any, align 16
%19 = alloca %Type_Info_Any, align 16
%20 = alloca %Type_Info_Pointer, align 16
%21 = alloca %Type_Info_Procedure, align 16
%22 = alloca %Type_Info_Tuple, align 16
%23 = alloca {%Type_Info_Tuple, i8}, align 16
%24 = alloca %Type_Info*, align 16
%25 = alloca i64, align 16
%26 = alloca i64, align 16
%27 = alloca i64, align 16
%28 = alloca %Type_Info_Tuple, align 16
%29 = alloca i64, align 16
%30 = alloca %..string, align 16
%31 = alloca i64, align 16
%32 = alloca i64, align 16
%33 = alloca i64, align 16
%34 = alloca %Type_Info*, align 16
%35 = alloca %Type_Info_Array, align 16
%36 = alloca %Type_Info_Dynamic_Array, align 16
%37 = alloca %Type_Info_Slice, align 16
%38 = alloca %Type_Info_Map, align 16
%39 = alloca %Type_Info_Struct, align 16
%40 = alloca %..string, align 16
%41 = alloca i64, align 16
%42 = alloca i64, align 16
%43 = alloca i64, align 16
%44 = alloca %Type_Info_Union, align 16
%45 = alloca %Type_Info*, align 16
%46 = alloca i64, align 16
%47 = alloca i64, align 16
%48 = alloca i64, align 16
%49 = alloca %Type_Info_Enum, align 16
%50 = alloca %..string, align 16
%51 = alloca i64, align 16
%52 = alloca i64, align 16
%53 = alloca i64, align 16
%54 = alloca %Type_Info_Bit_Field, align 16
%55 = alloca %..string, align 16
%56 = alloca i64, align 16
%57 = alloca i64, align 16
%58 = alloca i64, align 16
store {i8*, i64, i64, %Allocator}* %buf, {i8*, i64, i64, %Allocator}** %0
store %Type_Info* %ti, %Type_Info** %1
; IfStmt
%59 = load %Type_Info*, %Type_Info** %1, align 8
%60 = icmp eq %Type_Info* %59, zeroinitializer
%61 = zext i1 %60 to i8
%62 = trunc i8 %61 to i1
br i1 %62, label %if.then-1, label %if.done-2
if.then-1:
%63 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %63, %..string {i8* getelementptr inbounds ([4 x i8], [4 x i8]* @__str$16a, i64 0, i32 0), i64 3}, %Context* noalias nonnull %__.context_ptr)
; ReturnStmt
ret void
if.done-2:
; TypeSwitchStmt
; SelectorExpr
%64 = load %Type_Info*, %Type_Info** %1, align 8
%65 = getelementptr inbounds %Type_Info, %Type_Info* %64, i64 0
%66 = getelementptr inbounds %Type_Info, %Type_Info* %65, i64 0, i32 2
%67 = load {[0 x <8 x i8>], [72 x i8], i8}, {[0 x <8 x i8>], [72 x i8], i8}* %66, align 8
; get union's tag
%68 = getelementptr inbounds {[0 x <8 x i8>], [72 x i8], i8}, {[0 x <8 x i8>], [72 x i8], i8}* %66, i64 0, i32 2 ; UnionTagPtr
%69 = load i8, i8* %68, align 1
%70 = bitcast {[0 x <8 x i8>], [72 x i8], i8}* %66 to %..rawptr
%71 = icmp eq i8 %69, 1
br i1 %71, label %typeswitch.body-4, label %typeswitch.next-3
typeswitch.next-3:
%72 = icmp eq i8 %69, 2
br i1 %72, label %typeswitch.body-6, label %typeswitch.next-5
typeswitch.body-4:
%73 = bitcast %..rawptr %70 to %Type_Info_Named*
%74 = load %Type_Info_Named, %Type_Info_Named* %73, align 8
store %Type_Info_Named %74, %Type_Info_Named* %2
%75 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
; SelectorExpr
%76 = getelementptr inbounds %Type_Info_Named, %Type_Info_Named* %2, i64 0, i32 0
%77 = load %..string, %..string* %76, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %75, %..string %77, %Context* noalias nonnull %__.context_ptr)
br label %typeswitch.done-110
typeswitch.next-5:
%78 = icmp eq i8 %69, 3
br i1 %78, label %typeswitch.body-18, label %typeswitch.next-17
typeswitch.body-6:
%79 = bitcast %..rawptr %70 to %Type_Info_Integer*
%80 = load %Type_Info_Integer, %Type_Info_Integer* %79, align 1
store %Type_Info_Integer %80, %Type_Info_Integer* %3
; a
; CompoundLit
%81 = bitcast %..any* %5 to %..rawptr
%82 = call %..rawptr @__mem_zero(%..rawptr %81, i64 16)
store %..any zeroinitializer, %..any* %5
store %..any zeroinitializer, %..any* %5
%83 = load %Type_Info*, %Type_Info** %1, align 8
%84 = getelementptr inbounds %..any, %..any* %5, i64 0, i32 1
store %Type_Info* %83, %Type_Info** %84
%85 = load %..any, %..any* %5, align 8
store %..any %85, %..any* %4
; TypeSwitchStmt
%86 = load %..any, %..any* %4, align 8
%87 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 1
%88 = load %Type_Info*, %Type_Info** %87, align 8
%89 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 6
%90 = icmp eq %Type_Info* %88, %89
br i1 %90, label %typeswitch.body-8, label %typeswitch.next-7
typeswitch.next-7:
%91 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 1
%92 = load %Type_Info*, %Type_Info** %91, align 8
%93 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 72
%94 = icmp eq %Type_Info* %92, %93
br i1 %94, label %typeswitch.body-10, label %typeswitch.next-9
typeswitch.body-8:
%95 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 0
%96 = load %..rawptr, %..rawptr* %95, align 8
%97 = bitcast %..rawptr %96 to i64*
%98 = load i64, i64* %97, align 8
store i64 %98, i64* %6
%99 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %99, %..string {i8* getelementptr inbounds ([4 x i8], [4 x i8]* @__str$16b, i64 0, i32 0), i64 3}, %Context* noalias nonnull %__.context_ptr)
br label %typeswitch.done-16
typeswitch.next-9:
%100 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 1
%101 = load %Type_Info*, %Type_Info** %100, align 8
%102 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 55
%103 = icmp eq %Type_Info* %101, %102
br i1 %103, label %typeswitch.body-12, label %typeswitch.next-11
typeswitch.body-10:
%104 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 0
%105 = load %..rawptr, %..rawptr* %104, align 8
%106 = bitcast %..rawptr %105 to i64*
%107 = load i64, i64* %106, align 8
store i64 %107, i64* %7
%108 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %108, %..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$16c, i64 0, i32 0), i64 4}, %Context* noalias nonnull %__.context_ptr)
br label %typeswitch.done-16
typeswitch.next-11:
store %..any %86, %..any* %9
%109 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
; TernaryExpr
; SelectorExpr
%110 = getelementptr inbounds %Type_Info_Integer, %Type_Info_Integer* %3, i64 0, i32 0
%111 = load i8, i8* %110, align 1
%112 = trunc i8 %111 to i1
br i1 %112, label %if.then-13, label %if.else-14
typeswitch.body-12:
%113 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 0
%114 = load %..rawptr, %..rawptr* %113, align 8
%115 = bitcast %..rawptr %114 to i64*
%116 = load i64, i64* %115, align 8
store i64 %116, i64* %8
%117 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %117, %..string {i8* getelementptr inbounds ([8 x i8], [8 x i8]* @__str$16d, i64 0, i32 0), i64 7}, %Context* noalias nonnull %__.context_ptr)
br label %typeswitch.done-16
if.then-13:
br label %if.done-15
if.else-14:
br label %if.done-15
if.done-15:
%118 = phi i32 [ 105, %if.then-13 ], [ 117, %if.else-14 ]
%119 = trunc i32 %118 to i8
call void @fmt-11.write_byte({i8*, i64, i64, %Allocator}* %109, i8 %119, %Context* noalias nonnull %__.context_ptr)
%120 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
; SelectorExpr
%121 = load %Type_Info*, %Type_Info** %1, align 8
%122 = getelementptr inbounds %Type_Info, %Type_Info* %121, i64 0
%123 = getelementptr inbounds %Type_Info, %Type_Info* %122, i64 0, i32 0
%124 = load i64, i64* %123, align 8
%125 = mul i64 8, %124
%126 = bitcast i64 %125 to i64
call void @fmt-11.write_i64({i8*, i64, i64, %Allocator}* %120, i64 %126, i64 10, %Context* noalias nonnull %__.context_ptr)
br label %typeswitch.done-16
typeswitch.done-16:
br label %typeswitch.done-110
typeswitch.next-17:
%127 = icmp eq i8 %69, 4
br i1 %127, label %typeswitch.body-20, label %typeswitch.next-19
typeswitch.body-18:
%128 = bitcast %..rawptr %70 to %Type_Info_Rune*
%129 = load %Type_Info_Rune, %Type_Info_Rune* %128, align 1
store %Type_Info_Rune %129, %Type_Info_Rune* %10
%130 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %130, %..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$16e, i64 0, i32 0), i64 4}, %Context* noalias nonnull %__.context_ptr)
br label %typeswitch.done-110
typeswitch.next-19:
%131 = icmp eq i8 %69, 5
br i1 %131, label %typeswitch.body-22, label %typeswitch.next-21
typeswitch.body-20:
%132 = bitcast %..rawptr %70 to %Type_Info_Float*
%133 = load %Type_Info_Float, %Type_Info_Float* %132, align 1
store %Type_Info_Float %133, %Type_Info_Float* %11
%134 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_byte({i8*, i64, i64, %Allocator}* %134, i8 102, %Context* noalias nonnull %__.context_ptr)
%135 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
; SelectorExpr
%136 = load %Type_Info*, %Type_Info** %1, align 8
%137 = getelementptr inbounds %Type_Info, %Type_Info* %136, i64 0
%138 = getelementptr inbounds %Type_Info, %Type_Info* %137, i64 0, i32 0
%139 = load i64, i64* %138, align 8
%140 = mul i64 8, %139
%141 = bitcast i64 %140 to i64
call void @fmt-11.write_i64({i8*, i64, i64, %Allocator}* %135, i64 %141, i64 10, %Context* noalias nonnull %__.context_ptr)
br label %typeswitch.done-110
typeswitch.next-21:
%142 = icmp eq i8 %69, 6
br i1 %142, label %typeswitch.body-24, label %typeswitch.next-23
typeswitch.body-22:
%143 = bitcast %..rawptr %70 to %Type_Info_Complex*
%144 = load %Type_Info_Complex, %Type_Info_Complex* %143, align 1
store %Type_Info_Complex %144, %Type_Info_Complex* %12
%145 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %145, %..string {i8* getelementptr inbounds ([8 x i8], [8 x i8]* @__str$16f, i64 0, i32 0), i64 7}, %Context* noalias nonnull %__.context_ptr)
%146 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
; SelectorExpr
%147 = load %Type_Info*, %Type_Info** %1, align 8
%148 = getelementptr inbounds %Type_Info, %Type_Info* %147, i64 0
%149 = getelementptr inbounds %Type_Info, %Type_Info* %148, i64 0, i32 0
%150 = load i64, i64* %149, align 8
%151 = mul i64 8, %150
%152 = bitcast i64 %151 to i64
call void @fmt-11.write_i64({i8*, i64, i64, %Allocator}* %146, i64 %152, i64 10, %Context* noalias nonnull %__.context_ptr)
br label %typeswitch.done-110
typeswitch.next-23:
%153 = icmp eq i8 %69, 7
br i1 %153, label %typeswitch.body-26, label %typeswitch.next-25
typeswitch.body-24:
%154 = bitcast %..rawptr %70 to %Type_Info_String*
%155 = load %Type_Info_String, %Type_Info_String* %154, align 1
store %Type_Info_String %155, %Type_Info_String* %13
%156 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %156, %..string {i8* getelementptr inbounds ([7 x i8], [7 x i8]* @__str$170, i64 0, i32 0), i64 6}, %Context* noalias nonnull %__.context_ptr)
br label %typeswitch.done-110
typeswitch.next-25:
%157 = icmp eq i8 %69, 8
br i1 %157, label %typeswitch.body-31, label %typeswitch.next-30
typeswitch.body-26:
%158 = bitcast %..rawptr %70 to %Type_Info_Boolean*
%159 = load %Type_Info_Boolean, %Type_Info_Boolean* %158, align 1
store %Type_Info_Boolean %159, %Type_Info_Boolean* %14
; a
; CompoundLit
%160 = bitcast %..any* %16 to %..rawptr
%161 = call %..rawptr @__mem_zero(%..rawptr %160, i64 16)
store %..any zeroinitializer, %..any* %16
store %..any zeroinitializer, %..any* %16
%162 = load %Type_Info*, %Type_Info** %1, align 8
%163 = getelementptr inbounds %..any, %..any* %16, i64 0, i32 1
store %Type_Info* %162, %Type_Info** %163
%164 = load %..any, %..any* %16, align 8
store %..any %164, %..any* %15
; TypeSwitchStmt
%165 = load %..any, %..any* %15, align 8
%166 = getelementptr inbounds %..any, %..any* %15, i64 0, i32 1
%167 = load %Type_Info*, %Type_Info** %166, align 8
%168 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 27
%169 = icmp eq %Type_Info* %167, %168
br i1 %169, label %typeswitch.body-28, label %typeswitch.next-27
typeswitch.next-27:
store %..any %165, %..any* %18
%170 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_byte({i8*, i64, i64, %Allocator}* %170, i8 98, %Context* noalias nonnull %__.context_ptr)
%171 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
; SelectorExpr
%172 = load %Type_Info*, %Type_Info** %1, align 8
%173 = getelementptr inbounds %Type_Info, %Type_Info* %172, i64 0
%174 = getelementptr inbounds %Type_Info, %Type_Info* %173, i64 0, i32 0
%175 = load i64, i64* %174, align 8
%176 = mul i64 8, %175
%177 = bitcast i64 %176 to i64
call void @fmt-11.write_i64({i8*, i64, i64, %Allocator}* %171, i64 %177, i64 10, %Context* noalias nonnull %__.context_ptr)
br label %typeswitch.done-29
typeswitch.body-28:
%178 = getelementptr inbounds %..any, %..any* %15, i64 0, i32 0
%179 = load %..rawptr, %..rawptr* %178, align 8
%180 = bitcast %..rawptr %179 to i8*
%181 = load i8, i8* %180, align 1
store i8 %181, i8* %17
%182 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %182, %..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$171, i64 0, i32 0), i64 4}, %Context* noalias nonnull %__.context_ptr)
br label %typeswitch.done-29
typeswitch.done-29:
br label %typeswitch.done-110
typeswitch.next-30:
%183 = icmp eq i8 %69, 9
br i1 %183, label %typeswitch.body-33, label %typeswitch.next-32
typeswitch.body-31:
%184 = bitcast %..rawptr %70 to %Type_Info_Any*
%185 = load %Type_Info_Any, %Type_Info_Any* %184, align 1
store %Type_Info_Any %185, %Type_Info_Any* %19
%186 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %186, %..string {i8* getelementptr inbounds ([4 x i8], [4 x i8]* @__str$172, i64 0, i32 0), i64 3}, %Context* noalias nonnull %__.context_ptr)
br label %typeswitch.done-110
typeswitch.next-32:
%187 = icmp eq i8 %69, 10
br i1 %187, label %typeswitch.body-38, label %typeswitch.next-37
typeswitch.body-33:
%188 = bitcast %..rawptr %70 to %Type_Info_Pointer*
%189 = load %Type_Info_Pointer, %Type_Info_Pointer* %188, align 8
store %Type_Info_Pointer %189, %Type_Info_Pointer* %20
; IfStmt
; SelectorExpr
%190 = getelementptr inbounds %Type_Info_Pointer, %Type_Info_Pointer* %20, i64 0, i32 0
%191 = load %Type_Info*, %Type_Info** %190, align 8
%192 = icmp eq %Type_Info* %191, zeroinitializer
%193 = zext i1 %192 to i8
%194 = trunc i8 %193 to i1
br i1 %194, label %if.then-34, label %if.else-35
if.then-34:
%195 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %195, %..string {i8* getelementptr inbounds ([7 x i8], [7 x i8]* @__str$173, i64 0, i32 0), i64 6}, %Context* noalias nonnull %__.context_ptr)
br label %if.done-36
if.else-35:
%196 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %196, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$174, i64 0, i32 0), i64 1}, %Context* noalias nonnull %__.context_ptr)
%197 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
; SelectorExpr
%198 = getelementptr inbounds %Type_Info_Pointer, %Type_Info_Pointer* %20, i64 0, i32 0
%199 = load %Type_Info*, %Type_Info** %198, align 8
call void @fmt-11.write_type({i8*, i64, i64, %Allocator}* %197, %Type_Info* %199, %Context* noalias nonnull %__.context_ptr)
br label %if.done-36
if.done-36:
br label %typeswitch.done-110
typeswitch.next-37:
%200 = icmp eq i8 %69, 14
br i1 %200, label %typeswitch.body-52, label %typeswitch.next-51
typeswitch.body-38:
%201 = bitcast %..rawptr %70 to %Type_Info_Procedure*
%202 = load %Type_Info_Procedure, %Type_Info_Procedure* %201, align 8
store %Type_Info_Procedure %202, %Type_Info_Procedure* %21
%203 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %203, %..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$175, i64 0, i32 0), i64 4}, %Context* noalias nonnull %__.context_ptr)
; IfStmt
; SelectorExpr
%204 = getelementptr inbounds %Type_Info_Procedure, %Type_Info_Procedure* %21, i64 0, i32 0
%205 = load %Type_Info*, %Type_Info** %204, align 8
%206 = icmp eq %Type_Info* %205, zeroinitializer
%207 = zext i1 %206 to i8
%208 = trunc i8 %207 to i1
br i1 %208, label %if.then-39, label %if.else-40
if.then-39:
%209 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %209, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$176, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr)
br label %if.done-48
if.else-40:
; t
; SelectorExpr
; SelectorExpr
%210 = getelementptr inbounds %Type_Info_Procedure, %Type_Info_Procedure* %21, i64 0, i32 0
%211 = load %Type_Info*, %Type_Info** %210, align 8
%212 = getelementptr inbounds %Type_Info, %Type_Info* %211, i64 0
%213 = getelementptr inbounds %Type_Info, %Type_Info* %212, i64 0, i32 2
%214 = load {[0 x <8 x i8>], [72 x i8], i8}, {[0 x <8 x i8>], [72 x i8], i8}* %213, align 8
; cast - union_cast
%215 = bitcast {%Type_Info_Tuple, i8}* %23 to %..rawptr
%216 = call %..rawptr @__mem_zero(%..rawptr %215, i64 40)
store {%Type_Info_Tuple, i8} zeroinitializer, {%Type_Info_Tuple, i8}* %23
%217 = getelementptr inbounds {[0 x <8 x i8>], [72 x i8], i8}, {[0 x <8 x i8>], [72 x i8], i8}* %213, i64 0, i32 2 ; UnionTagPtr
%218 = load i8, i8* %217, align 1
%219 = icmp eq i8 %218, 14
br i1 %219, label %union_cast.ok-41, label %union_cast.end-42
union_cast.ok-41:
%220 = getelementptr inbounds {%Type_Info_Tuple, i8}, {%Type_Info_Tuple, i8}* %23, i64 0, i32 0
%221 = getelementptr inbounds {%Type_Info_Tuple, i8}, {%Type_Info_Tuple, i8}* %23, i64 0, i32 1
%222 = bitcast {[0 x <8 x i8>], [72 x i8], i8}* %213 to %Type_Info_Tuple*
%223 = load %Type_Info_Tuple, %Type_Info_Tuple* %222, align 8
store %Type_Info_Tuple %223, %Type_Info_Tuple* %220
store i8 1, i8* %221
br label %union_cast.end-42
union_cast.end-42:
%224 = getelementptr inbounds {%Type_Info_Tuple, i8}, {%Type_Info_Tuple, i8}* %23, i64 0, i32 1
%225 = load i8, i8* %224, align 1
%226 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 24
%227 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 46
%228 = trunc i8 %225 to i1
call void @__type_assertion_check(i1 %228, %..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$177, i64 0, i32 0), i64 46}, i64 205, i64 21, %Type_Info* %226, %Type_Info* %227)
%229 = getelementptr inbounds {%Type_Info_Tuple, i8}, {%Type_Info_Tuple, i8}* %23, i64 0, i32 0
%230 = load %Type_Info_Tuple, %Type_Info_Tuple* %229, align 8
store %Type_Info_Tuple %230, %Type_Info_Tuple* %22
%231 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %231, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$178, i64 0, i32 0), i64 1}, %Context* noalias nonnull %__.context_ptr)
; RangeStmt
; t
%232 = bitcast %Type_Info** %24 to %..rawptr
%233 = call %..rawptr @__mem_zero(%..rawptr %232, i64 8)
store %Type_Info* zeroinitializer, %Type_Info** %24
; i
%234 = bitcast i64* %25 to %..rawptr
%235 = call %..rawptr @__mem_zero(%..rawptr %234, i64 8)
store i64 zeroinitializer, i64* %25
; SelectorExpr
%236 = getelementptr inbounds %Type_Info_Tuple, %Type_Info_Tuple* %22, i64 0, i32 0
%237 = load {%Type_Info**, i64}, {%Type_Info**, i64}* %236, align 8
%238 = bitcast i64* %26 to %..rawptr
%239 = call %..rawptr @__mem_zero(%..rawptr %238, i64 8)
store i64 zeroinitializer, i64* %26
%240 = extractvalue {%Type_Info**, i64} %237, 1
store i64 %240, i64* %26
%241 = bitcast i64* %27 to %..rawptr
%242 = call %..rawptr @__mem_zero(%..rawptr %241, i64 8)
store i64 zeroinitializer, i64* %27
store i64 -1, i64* %27
br label %for.index.loop-43
for.index.loop-43:
%243 = load i64, i64* %27, align 8
%244 = add i64 %243, 1
store i64 %244, i64* %27
%245 = load i64, i64* %26, align 8
%246 = icmp slt i64 %244, %245
br i1 %246, label %for.index.body-44, label %for.index.done-47
for.index.body-44:
%247 = load i64, i64* %27, align 8
%248 = extractvalue {%Type_Info**, i64} %237, 0
%249 = getelementptr inbounds %Type_Info*, %Type_Info** %248, i64 %247
%250 = load %Type_Info*, %Type_Info** %249, align 8
store %Type_Info* %250, %Type_Info** %24
store i64 %247, i64* %25
; IfStmt
%251 = load i64, i64* %25, align 8
%252 = icmp sgt i64 %251, 0
%253 = zext i1 %252 to i8
%254 = trunc i8 %253 to i1
br i1 %254, label %if.then-45, label %if.done-46
if.then-45:
%255 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %255, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$179, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr)
br label %if.done-46
if.done-46:
%256 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
%257 = load %Type_Info*, %Type_Info** %24, align 8
call void @fmt-11.write_type({i8*, i64, i64, %Allocator}* %256, %Type_Info* %257, %Context* noalias nonnull %__.context_ptr)
br label %for.index.loop-43
for.index.done-47:
%258 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %258, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$17a, i64 0, i32 0), i64 1}, %Context* noalias nonnull %__.context_ptr)
br label %if.done-48
if.done-48:
; IfStmt
; SelectorExpr
%259 = getelementptr inbounds %Type_Info_Procedure, %Type_Info_Procedure* %21, i64 0, i32 1
%260 = load %Type_Info*, %Type_Info** %259, align 8
%261 = icmp ne %Type_Info* %260, zeroinitializer
%262 = zext i1 %261 to i8
%263 = trunc i8 %262 to i1
br i1 %263, label %if.then-49, label %if.done-50
if.then-49:
%264 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %264, %..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$17b, i64 0, i32 0), i64 4}, %Context* noalias nonnull %__.context_ptr)
%265 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
; SelectorExpr
%266 = getelementptr inbounds %Type_Info_Procedure, %Type_Info_Procedure* %21, i64 0, i32 1
%267 = load %Type_Info*, %Type_Info** %266, align 8
call void @fmt-11.write_type({i8*, i64, i64, %Allocator}* %265, %Type_Info* %267, %Context* noalias nonnull %__.context_ptr)
br label %if.done-50
if.done-50:
br label %typeswitch.done-110
typeswitch.next-51:
%268 = icmp eq i8 %69, 11
br i1 %268, label %typeswitch.body-65, label %typeswitch.next-64
typeswitch.body-52:
%269 = bitcast %..rawptr %70 to %Type_Info_Tuple*
%270 = load %Type_Info_Tuple, %Type_Info_Tuple* %269, align 8
store %Type_Info_Tuple %270, %Type_Info_Tuple* %28
; count
; SelectorExpr
%271 = getelementptr inbounds %Type_Info_Tuple, %Type_Info_Tuple* %28, i64 0, i32 1
%272 = load {%..string*, i64}, {%..string*, i64}* %271, align 8
%273 = extractvalue {%..string*, i64} %272, 1
store i64 %273, i64* %29
; IfStmt
%274 = load i64, i64* %29, align 8
%275 = icmp ne i64 %274, 1
%276 = zext i1 %275 to i8
%277 = trunc i8 %276 to i1
br i1 %277, label %if.then-53, label %if.done-54
if.then-53:
%278 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %278, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$17c, i64 0, i32 0), i64 1}, %Context* noalias nonnull %__.context_ptr)
br label %if.done-54
if.done-54:
; RangeStmt
; name
%279 = bitcast %..string* %30 to %..rawptr
%280 = call %..rawptr @__mem_zero(%..rawptr %279, i64 16)
store %..string zeroinitializer, %..string* %30
; i
%281 = bitcast i64* %31 to %..rawptr
%282 = call %..rawptr @__mem_zero(%..rawptr %281, i64 8)
store i64 zeroinitializer, i64* %31
; SelectorExpr
%283 = getelementptr inbounds %Type_Info_Tuple, %Type_Info_Tuple* %28, i64 0, i32 1
%284 = load {%..string*, i64}, {%..string*, i64}* %283, align 8
%285 = bitcast i64* %32 to %..rawptr
%286 = call %..rawptr @__mem_zero(%..rawptr %285, i64 8)
store i64 zeroinitializer, i64* %32
%287 = extractvalue {%..string*, i64} %284, 1
store i64 %287, i64* %32
%288 = bitcast i64* %33 to %..rawptr
%289 = call %..rawptr @__mem_zero(%..rawptr %288, i64 8)
store i64 zeroinitializer, i64* %33
store i64 -1, i64* %33
br label %for.index.loop-55
for.index.loop-55:
%290 = load i64, i64* %33, align 8
%291 = add i64 %290, 1
store i64 %291, i64* %33
%292 = load i64, i64* %32, align 8
%293 = icmp slt i64 %291, %292
br i1 %293, label %for.index.body-56, label %for.index.done-61
for.index.body-56:
%294 = load i64, i64* %33, align 8
%295 = extractvalue {%..string*, i64} %284, 0
%296 = getelementptr inbounds %..string, %..string* %295, i64 %294
%297 = load %..string, %..string* %296, align 8
store %..string %297, %..string* %30
store i64 %294, i64* %31
; IfStmt
%298 = load i64, i64* %31, align 8
%299 = icmp sgt i64 %298, 0
%300 = zext i1 %299 to i8
%301 = trunc i8 %300 to i1
br i1 %301, label %if.then-57, label %if.done-58
if.then-57:
%302 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %302, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$17d, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr)
br label %if.done-58
if.done-58:
; t
; IndexExpr
; SelectorExpr
%303 = getelementptr inbounds %Type_Info_Tuple, %Type_Info_Tuple* %28, i64 0, i32 0
%304 = load {%Type_Info**, i64}, {%Type_Info**, i64}* %303, align 8
%305 = extractvalue {%Type_Info**, i64} %304, 0
%306 = load i64, i64* %31, align 8
%307 = extractvalue {%Type_Info**, i64} %304, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$17e, i64 0, i32 0), i64 46}, i64 223, i64 20, i64 %306, i64 %307)
%308 = getelementptr inbounds %Type_Info*, %Type_Info** %305, i64 %306
%309 = load %Type_Info*, %Type_Info** %308, align 8
store %Type_Info* %309, %Type_Info** %34
; IfStmt
%310 = load %..string, %..string* %30, align 8
%311 = extractvalue %..string %310, 1
%312 = icmp sgt i64 %311, 0
%313 = zext i1 %312 to i8
%314 = trunc i8 %313 to i1
br i1 %314, label %if.then-59, label %if.done-60
if.then-59:
%315 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
%316 = load %..string, %..string* %30, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %315, %..string %316, %Context* noalias nonnull %__.context_ptr)
%317 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %317, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$17f, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr)
br label %if.done-60
if.done-60:
%318 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
%319 = load %Type_Info*, %Type_Info** %34, align 8
call void @fmt-11.write_type({i8*, i64, i64, %Allocator}* %318, %Type_Info* %319, %Context* noalias nonnull %__.context_ptr)
br label %for.index.loop-55
for.index.done-61:
; IfStmt
%320 = load i64, i64* %29, align 8
%321 = icmp ne i64 %320, 1
%322 = zext i1 %321 to i8
%323 = trunc i8 %322 to i1
br i1 %323, label %if.then-62, label %if.done-63
if.then-62:
%324 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %324, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$180, i64 0, i32 0), i64 1}, %Context* noalias nonnull %__.context_ptr)
br label %if.done-63
if.done-63:
br label %typeswitch.done-110
typeswitch.next-64:
%325 = icmp eq i8 %69, 12
br i1 %325, label %typeswitch.body-67, label %typeswitch.next-66
typeswitch.body-65:
%326 = bitcast %..rawptr %70 to %Type_Info_Array*
%327 = load %Type_Info_Array, %Type_Info_Array* %326, align 8
store %Type_Info_Array %327, %Type_Info_Array* %35
%328 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %328, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$181, i64 0, i32 0), i64 1}, %Context* noalias nonnull %__.context_ptr)
%329 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
; SelectorExpr
%330 = getelementptr inbounds %Type_Info_Array, %Type_Info_Array* %35, i64 0, i32 2
%331 = load i64, i64* %330, align 8
%332 = bitcast i64 %331 to i64
call void @fmt-11.write_i64({i8*, i64, i64, %Allocator}* %329, i64 %332, i64 10, %Context* noalias nonnull %__.context_ptr)
%333 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %333, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$182, i64 0, i32 0), i64 1}, %Context* noalias nonnull %__.context_ptr)
%334 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
; SelectorExpr
%335 = getelementptr inbounds %Type_Info_Array, %Type_Info_Array* %35, i64 0, i32 0
%336 = load %Type_Info*, %Type_Info** %335, align 8
call void @fmt-11.write_type({i8*, i64, i64, %Allocator}* %334, %Type_Info* %336, %Context* noalias nonnull %__.context_ptr)
br label %typeswitch.done-110
typeswitch.next-66:
%337 = icmp eq i8 %69, 13
br i1 %337, label %typeswitch.body-69, label %typeswitch.next-68
typeswitch.body-67:
%338 = bitcast %..rawptr %70 to %Type_Info_Dynamic_Array*
%339 = load %Type_Info_Dynamic_Array, %Type_Info_Dynamic_Array* %338, align 8
store %Type_Info_Dynamic_Array %339, %Type_Info_Dynamic_Array* %36
%340 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %340, %..string {i8* getelementptr inbounds ([10 x i8], [10 x i8]* @__str$183, i64 0, i32 0), i64 9}, %Context* noalias nonnull %__.context_ptr)
%341 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
; SelectorExpr
%342 = getelementptr inbounds %Type_Info_Dynamic_Array, %Type_Info_Dynamic_Array* %36, i64 0, i32 0
%343 = load %Type_Info*, %Type_Info** %342, align 8
call void @fmt-11.write_type({i8*, i64, i64, %Allocator}* %341, %Type_Info* %343, %Context* noalias nonnull %__.context_ptr)
br label %typeswitch.done-110
typeswitch.next-68:
%344 = icmp eq i8 %69, 18
br i1 %344, label %typeswitch.body-71, label %typeswitch.next-70
typeswitch.body-69:
%345 = bitcast %..rawptr %70 to %Type_Info_Slice*
%346 = load %Type_Info_Slice, %Type_Info_Slice* %345, align 8
store %Type_Info_Slice %346, %Type_Info_Slice* %37
%347 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %347, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$184, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr)
%348 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
; SelectorExpr
%349 = getelementptr inbounds %Type_Info_Slice, %Type_Info_Slice* %37, i64 0, i32 0
%350 = load %Type_Info*, %Type_Info** %349, align 8
call void @fmt-11.write_type({i8*, i64, i64, %Allocator}* %348, %Type_Info* %350, %Context* noalias nonnull %__.context_ptr)
br label %typeswitch.done-110
typeswitch.next-70:
%351 = icmp eq i8 %69, 15
br i1 %351, label %typeswitch.body-73, label %typeswitch.next-72
typeswitch.body-71:
%352 = bitcast %..rawptr %70 to %Type_Info_Map*
%353 = load %Type_Info_Map, %Type_Info_Map* %352, align 8
store %Type_Info_Map %353, %Type_Info_Map* %38
%354 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %354, %..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$185, i64 0, i32 0), i64 4}, %Context* noalias nonnull %__.context_ptr)
%355 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
; SelectorExpr
%356 = getelementptr inbounds %Type_Info_Map, %Type_Info_Map* %38, i64 0, i32 0
%357 = load %Type_Info*, %Type_Info** %356, align 8
call void @fmt-11.write_type({i8*, i64, i64, %Allocator}* %355, %Type_Info* %357, %Context* noalias nonnull %__.context_ptr)
%358 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_byte({i8*, i64, i64, %Allocator}* %358, i8 93, %Context* noalias nonnull %__.context_ptr)
%359 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
; SelectorExpr
%360 = getelementptr inbounds %Type_Info_Map, %Type_Info_Map* %38, i64 0, i32 1
%361 = load %Type_Info*, %Type_Info** %360, align 8
call void @fmt-11.write_type({i8*, i64, i64, %Allocator}* %359, %Type_Info* %361, %Context* noalias nonnull %__.context_ptr)
br label %typeswitch.done-110
typeswitch.next-72:
%362 = icmp eq i8 %69, 16
br i1 %362, label %typeswitch.body-86, label %typeswitch.next-85
typeswitch.body-73:
%363 = bitcast %..rawptr %70 to %Type_Info_Struct*
%364 = load %Type_Info_Struct, %Type_Info_Struct* %363, align 8
store %Type_Info_Struct %364, %Type_Info_Struct* %39
%365 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %365, %..string {i8* getelementptr inbounds ([8 x i8], [8 x i8]* @__str$186, i64 0, i32 0), i64 7}, %Context* noalias nonnull %__.context_ptr)
; IfStmt
; SelectorExpr
%366 = getelementptr inbounds %Type_Info_Struct, %Type_Info_Struct* %39, i64 0, i32 4
%367 = load i8, i8* %366, align 1
%368 = trunc i8 %367 to i1
br i1 %368, label %if.then-74, label %if.done-75
if.then-74:
%369 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %369, %..string {i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__str$187, i64 0, i32 0), i64 8}, %Context* noalias nonnull %__.context_ptr)
br label %if.done-75
if.done-75:
; IfStmt
; SelectorExpr
%370 = getelementptr inbounds %Type_Info_Struct, %Type_Info_Struct* %39, i64 0, i32 5
%371 = load i8, i8* %370, align 1
%372 = trunc i8 %371 to i1
br i1 %372, label %if.then-76, label %if.done-77
if.then-76:
%373 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %373, %..string {i8* getelementptr inbounds ([12 x i8], [12 x i8]* @__str$188, i64 0, i32 0), i64 11}, %Context* noalias nonnull %__.context_ptr)
br label %if.done-77
if.done-77:
; IfStmt
; SelectorExpr
%374 = getelementptr inbounds %Type_Info_Struct, %Type_Info_Struct* %39, i64 0, i32 6
%375 = load i8, i8* %374, align 1
%376 = trunc i8 %375 to i1
br i1 %376, label %if.then-78, label %if.done-79
if.then-78:
%377 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %377, %..string {i8* getelementptr inbounds ([8 x i8], [8 x i8]* @__str$189, i64 0, i32 0), i64 7}, %Context* noalias nonnull %__.context_ptr)
%378 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
; SelectorExpr
%379 = load %Type_Info*, %Type_Info** %1, align 8
%380 = getelementptr inbounds %Type_Info, %Type_Info* %379, i64 0
%381 = getelementptr inbounds %Type_Info, %Type_Info* %380, i64 0, i32 1
%382 = load i64, i64* %381, align 8
%383 = bitcast i64 %382 to i64
call void @fmt-11.write_i64({i8*, i64, i64, %Allocator}* %378, i64 %383, i64 10, %Context* noalias nonnull %__.context_ptr)
%384 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_byte({i8*, i64, i64, %Allocator}* %384, i8 32, %Context* noalias nonnull %__.context_ptr)
br label %if.done-79
if.done-79:
%385 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_byte({i8*, i64, i64, %Allocator}* %385, i8 123, %Context* noalias nonnull %__.context_ptr)
; RangeStmt
; name
%386 = bitcast %..string* %40 to %..rawptr
%387 = call %..rawptr @__mem_zero(%..rawptr %386, i64 16)
store %..string zeroinitializer, %..string* %40
; i
%388 = bitcast i64* %41 to %..rawptr
%389 = call %..rawptr @__mem_zero(%..rawptr %388, i64 8)
store i64 zeroinitializer, i64* %41
; SelectorExpr
%390 = getelementptr inbounds %Type_Info_Struct, %Type_Info_Struct* %39, i64 0, i32 1
%391 = load {%..string*, i64}, {%..string*, i64}* %390, align 8
%392 = bitcast i64* %42 to %..rawptr
%393 = call %..rawptr @__mem_zero(%..rawptr %392, i64 8)
store i64 zeroinitializer, i64* %42
%394 = extractvalue {%..string*, i64} %391, 1
store i64 %394, i64* %42
%395 = bitcast i64* %43 to %..rawptr
%396 = call %..rawptr @__mem_zero(%..rawptr %395, i64 8)
store i64 zeroinitializer, i64* %43
store i64 -1, i64* %43
br label %for.index.loop-80
for.index.loop-80:
%397 = load i64, i64* %43, align 8
%398 = add i64 %397, 1
store i64 %398, i64* %43
%399 = load i64, i64* %42, align 8
%400 = icmp slt i64 %398, %399
br i1 %400, label %for.index.body-81, label %for.index.done-84
for.index.body-81:
%401 = load i64, i64* %43, align 8
%402 = extractvalue {%..string*, i64} %391, 0
%403 = getelementptr inbounds %..string, %..string* %402, i64 %401
%404 = load %..string, %..string* %403, align 8
store %..string %404, %..string* %40
store i64 %401, i64* %41
; IfStmt
%405 = load i64, i64* %41, align 8
%406 = icmp sgt i64 %405, 0
%407 = zext i1 %406 to i8
%408 = trunc i8 %407 to i1
br i1 %408, label %if.then-82, label %if.done-83
if.then-82:
%409 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %409, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$18a, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr)
br label %if.done-83
if.done-83:
%410 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
%411 = load %..string, %..string* %40, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %410, %..string %411, %Context* noalias nonnull %__.context_ptr)
%412 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %412, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$18b, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr)
%413 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
; IndexExpr
; SelectorExpr
%414 = getelementptr inbounds %Type_Info_Struct, %Type_Info_Struct* %39, i64 0, i32 0
%415 = load {%Type_Info**, i64}, {%Type_Info**, i64}* %414, align 8
%416 = extractvalue {%Type_Info**, i64} %415, 0
%417 = load i64, i64* %41, align 8
%418 = extractvalue {%Type_Info**, i64} %415, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$18c, i64 0, i32 0), i64 46}, i64 265, i64 31, i64 %417, i64 %418)
%419 = getelementptr inbounds %Type_Info*, %Type_Info** %416, i64 %417
%420 = load %Type_Info*, %Type_Info** %419, align 8
call void @fmt-11.write_type({i8*, i64, i64, %Allocator}* %413, %Type_Info* %420, %Context* noalias nonnull %__.context_ptr)
br label %for.index.loop-80
for.index.done-84:
%421 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_byte({i8*, i64, i64, %Allocator}* %421, i8 125, %Context* noalias nonnull %__.context_ptr)
br label %typeswitch.done-110
typeswitch.next-85:
%422 = icmp eq i8 %69, 17
br i1 %422, label %typeswitch.body-93, label %typeswitch.next-92
typeswitch.body-86:
%423 = bitcast %..rawptr %70 to %Type_Info_Union*
%424 = load %Type_Info_Union, %Type_Info_Union* %423, align 8
store %Type_Info_Union %424, %Type_Info_Union* %44
%425 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %425, %..string {i8* getelementptr inbounds ([8 x i8], [8 x i8]* @__str$18d, i64 0, i32 0), i64 7}, %Context* noalias nonnull %__.context_ptr)
; RangeStmt
; variant
%426 = bitcast %Type_Info** %45 to %..rawptr
%427 = call %..rawptr @__mem_zero(%..rawptr %426, i64 8)
store %Type_Info* zeroinitializer, %Type_Info** %45
; i
%428 = bitcast i64* %46 to %..rawptr
%429 = call %..rawptr @__mem_zero(%..rawptr %428, i64 8)
store i64 zeroinitializer, i64* %46
; SelectorExpr
%430 = getelementptr inbounds %Type_Info_Union, %Type_Info_Union* %44, i64 0, i32 0
%431 = load {%Type_Info**, i64}, {%Type_Info**, i64}* %430, align 8
%432 = bitcast i64* %47 to %..rawptr
%433 = call %..rawptr @__mem_zero(%..rawptr %432, i64 8)
store i64 zeroinitializer, i64* %47
%434 = extractvalue {%Type_Info**, i64} %431, 1
store i64 %434, i64* %47
%435 = bitcast i64* %48 to %..rawptr
%436 = call %..rawptr @__mem_zero(%..rawptr %435, i64 8)
store i64 zeroinitializer, i64* %48
store i64 -1, i64* %48
br label %for.index.loop-87
for.index.loop-87:
%437 = load i64, i64* %48, align 8
%438 = add i64 %437, 1
store i64 %438, i64* %48
%439 = load i64, i64* %47, align 8
%440 = icmp slt i64 %438, %439
br i1 %440, label %for.index.body-88, label %for.index.done-91
for.index.body-88:
%441 = load i64, i64* %48, align 8
%442 = extractvalue {%Type_Info**, i64} %431, 0
%443 = getelementptr inbounds %Type_Info*, %Type_Info** %442, i64 %441
%444 = load %Type_Info*, %Type_Info** %443, align 8
store %Type_Info* %444, %Type_Info** %45
store i64 %441, i64* %46
; IfStmt
%445 = load i64, i64* %46, align 8
%446 = icmp sgt i64 %445, 0
%447 = zext i1 %446 to i8
%448 = trunc i8 %447 to i1
br i1 %448, label %if.then-89, label %if.done-90
if.then-89:
%449 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %449, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$18e, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr)
br label %if.done-90
if.done-90:
%450 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
%451 = load %Type_Info*, %Type_Info** %45, align 8
call void @fmt-11.write_type({i8*, i64, i64, %Allocator}* %450, %Type_Info* %451, %Context* noalias nonnull %__.context_ptr)
br label %for.index.loop-87
for.index.done-91:
%452 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %452, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$18f, i64 0, i32 0), i64 1}, %Context* noalias nonnull %__.context_ptr)
br label %typeswitch.done-110
typeswitch.next-92:
%453 = icmp eq i8 %69, 19
br i1 %453, label %typeswitch.body-102, label %typeswitch.next-101
typeswitch.body-93:
%454 = bitcast %..rawptr %70 to %Type_Info_Enum*
%455 = load %Type_Info_Enum, %Type_Info_Enum* %454, align 8
store %Type_Info_Enum %455, %Type_Info_Enum* %49
%456 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %456, %..string {i8* getelementptr inbounds ([6 x i8], [6 x i8]* @__str$190, i64 0, i32 0), i64 5}, %Context* noalias nonnull %__.context_ptr)
%457 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
; SelectorExpr
%458 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %49, i64 0, i32 0
%459 = load %Type_Info*, %Type_Info** %458, align 8
call void @fmt-11.write_type({i8*, i64, i64, %Allocator}* %457, %Type_Info* %459, %Context* noalias nonnull %__.context_ptr)
; IfStmt
; SelectorExpr
%460 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %49, i64 0, i32 3
%461 = load i8, i8* %460, align 1
%462 = trunc i8 %461 to i1
br i1 %462, label %if.then-94, label %if.done-95
if.then-94:
%463 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %463, %..string {i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__str$191, i64 0, i32 0), i64 8}, %Context* noalias nonnull %__.context_ptr)
br label %if.done-95
if.done-95:
%464 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %464, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$192, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr)
; RangeStmt
; name
%465 = bitcast %..string* %50 to %..rawptr
%466 = call %..rawptr @__mem_zero(%..rawptr %465, i64 16)
store %..string zeroinitializer, %..string* %50
; i
%467 = bitcast i64* %51 to %..rawptr
%468 = call %..rawptr @__mem_zero(%..rawptr %467, i64 8)
store i64 zeroinitializer, i64* %51
; SelectorExpr
%469 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %49, i64 0, i32 1
%470 = load {%..string*, i64}, {%..string*, i64}* %469, align 8
%471 = bitcast i64* %52 to %..rawptr
%472 = call %..rawptr @__mem_zero(%..rawptr %471, i64 8)
store i64 zeroinitializer, i64* %52
%473 = extractvalue {%..string*, i64} %470, 1
store i64 %473, i64* %52
%474 = bitcast i64* %53 to %..rawptr
%475 = call %..rawptr @__mem_zero(%..rawptr %474, i64 8)
store i64 zeroinitializer, i64* %53
store i64 -1, i64* %53
br label %for.index.loop-96
for.index.loop-96:
%476 = load i64, i64* %53, align 8
%477 = add i64 %476, 1
store i64 %477, i64* %53
%478 = load i64, i64* %52, align 8
%479 = icmp slt i64 %477, %478
br i1 %479, label %for.index.body-97, label %for.index.done-100
for.index.body-97:
%480 = load i64, i64* %53, align 8
%481 = extractvalue {%..string*, i64} %470, 0
%482 = getelementptr inbounds %..string, %..string* %481, i64 %480
%483 = load %..string, %..string* %482, align 8
store %..string %483, %..string* %50
store i64 %480, i64* %51
; IfStmt
%484 = load i64, i64* %51, align 8
%485 = icmp sgt i64 %484, 0
%486 = zext i1 %485 to i8
%487 = trunc i8 %486 to i1
br i1 %487, label %if.then-98, label %if.done-99
if.then-98:
%488 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %488, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$193, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr)
br label %if.done-99
if.done-99:
%489 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
%490 = load %..string, %..string* %50, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %489, %..string %490, %Context* noalias nonnull %__.context_ptr)
br label %for.index.loop-96
for.index.done-100:
%491 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %491, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$194, i64 0, i32 0), i64 1}, %Context* noalias nonnull %__.context_ptr)
br label %typeswitch.done-110
typeswitch.next-101:
br label %typeswitch.done-110
typeswitch.body-102:
%492 = bitcast %..rawptr %70 to %Type_Info_Bit_Field*
%493 = load %Type_Info_Bit_Field, %Type_Info_Bit_Field* %492, align 8
store %Type_Info_Bit_Field %493, %Type_Info_Bit_Field* %54
%494 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %494, %..string {i8* getelementptr inbounds ([11 x i8], [11 x i8]* @__str$195, i64 0, i32 0), i64 10}, %Context* noalias nonnull %__.context_ptr)
; IfStmt
; SelectorExpr
%495 = load %Type_Info*, %Type_Info** %1, align 8
%496 = getelementptr inbounds %Type_Info, %Type_Info* %495, i64 0
%497 = getelementptr inbounds %Type_Info, %Type_Info* %496, i64 0, i32 1
%498 = load i64, i64* %497, align 8
%499 = icmp ne i64 %498, 1
%500 = zext i1 %499 to i8
%501 = trunc i8 %500 to i1
br i1 %501, label %if.then-103, label %if.done-104
if.then-103:
%502 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %502, %..string {i8* getelementptr inbounds ([8 x i8], [8 x i8]* @__str$196, i64 0, i32 0), i64 7}, %Context* noalias nonnull %__.context_ptr)
%503 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
; SelectorExpr
%504 = load %Type_Info*, %Type_Info** %1, align 8
%505 = getelementptr inbounds %Type_Info, %Type_Info* %504, i64 0
%506 = getelementptr inbounds %Type_Info, %Type_Info* %505, i64 0, i32 1
%507 = load i64, i64* %506, align 8
%508 = bitcast i64 %507 to i64
call void @fmt-11.write_i64({i8*, i64, i64, %Allocator}* %503, i64 %508, i64 10, %Context* noalias nonnull %__.context_ptr)
%509 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_rune({i8*, i64, i64, %Allocator}* %509, i32 32, %Context* noalias nonnull %__.context_ptr)
br label %if.done-104
if.done-104:
%510 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %510, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$197, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr)
; RangeStmt
; name
%511 = bitcast %..string* %55 to %..rawptr
%512 = call %..rawptr @__mem_zero(%..rawptr %511, i64 16)
store %..string zeroinitializer, %..string* %55
; i
%513 = bitcast i64* %56 to %..rawptr
%514 = call %..rawptr @__mem_zero(%..rawptr %513, i64 8)
store i64 zeroinitializer, i64* %56
; SelectorExpr
%515 = getelementptr inbounds %Type_Info_Bit_Field, %Type_Info_Bit_Field* %54, i64 0, i32 0
%516 = load {%..string*, i64}, {%..string*, i64}* %515, align 8
%517 = bitcast i64* %57 to %..rawptr
%518 = call %..rawptr @__mem_zero(%..rawptr %517, i64 8)
store i64 zeroinitializer, i64* %57
%519 = extractvalue {%..string*, i64} %516, 1
store i64 %519, i64* %57
%520 = bitcast i64* %58 to %..rawptr
%521 = call %..rawptr @__mem_zero(%..rawptr %520, i64 8)
store i64 zeroinitializer, i64* %58
store i64 -1, i64* %58
br label %for.index.loop-105
for.index.loop-105:
%522 = load i64, i64* %58, align 8
%523 = add i64 %522, 1
store i64 %523, i64* %58
%524 = load i64, i64* %57, align 8
%525 = icmp slt i64 %523, %524
br i1 %525, label %for.index.body-106, label %for.index.done-109
for.index.body-106:
%526 = load i64, i64* %58, align 8
%527 = extractvalue {%..string*, i64} %516, 0
%528 = getelementptr inbounds %..string, %..string* %527, i64 %526
%529 = load %..string, %..string* %528, align 8
store %..string %529, %..string* %55
store i64 %526, i64* %56
; IfStmt
%530 = load i64, i64* %56, align 8
%531 = icmp sgt i64 %530, 0
%532 = zext i1 %531 to i8
%533 = trunc i8 %532 to i1
br i1 %533, label %if.then-107, label %if.done-108
if.then-107:
%534 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %534, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$198, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr)
br label %if.done-108
if.done-108:
%535 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
%536 = load %..string, %..string* %55, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %535, %..string %536, %Context* noalias nonnull %__.context_ptr)
%537 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %537, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$199, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr)
%538 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
; IndexExpr
; SelectorExpr
%539 = getelementptr inbounds %Type_Info_Bit_Field, %Type_Info_Bit_Field* %54, i64 0, i32 1
%540 = load {i32*, i64}, {i32*, i64}* %539, align 8
%541 = extractvalue {i32*, i64} %540, 0
%542 = load i64, i64* %56, align 8
%543 = extractvalue {i32*, i64} %540, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$19a, i64 0, i32 0), i64 46}, i64 300, i64 33, i64 %542, i64 %543)
%544 = getelementptr inbounds i32, i32* %541, i64 %542
%545 = load i32, i32* %544, align 4
%546 = sext i32 %545 to i64
call void @fmt-11.write_i64({i8*, i64, i64, %Allocator}* %538, i64 %546, i64 10, %Context* noalias nonnull %__.context_ptr)
br label %for.index.loop-105
for.index.done-109:
%547 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %547, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$19b, i64 0, i32 0), i64 1}, %Context* noalias nonnull %__.context_ptr)
br label %typeswitch.done-110
typeswitch.done-110:
ret void
}
define {i64, i64, i8} @fmt-11._parse_int(%..string %s, i64 %offset, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %..string, align 16
%1 = alloca i64, align 16
%2 = alloca i64, align 16
%3 = alloca i64, align 16
%4 = alloca i8, align 16
%5 = alloca i8, align 16
%6 = alloca {i64, i64, i8}, align 16
store %..string %s, %..string* %0
store i64 %offset, i64* %1
%7 = bitcast i64* %2 to %..rawptr
%8 = call %..rawptr @__mem_zero(%..rawptr %7, i64 8)
store i64 zeroinitializer, i64* %2
%9 = bitcast i64* %3 to %..rawptr
%10 = call %..rawptr @__mem_zero(%..rawptr %9, i64 8)
store i64 zeroinitializer, i64* %3
%11 = bitcast i8* %4 to %..rawptr
%12 = call %..rawptr @__mem_zero(%..rawptr %11, i64 1)
store i8 zeroinitializer, i8* %4
; AssignStmt
%13 = load i64, i64* %1, align 8
store i64 %13, i64* %3
; ForStmt
br label %for.loop-1
for.loop-1:
%14 = load i64, i64* %3, align 8
%15 = load %..string, %..string* %0, align 8
%16 = extractvalue %..string %15, 1
%17 = icmp sle i64 %14, %16
%18 = zext i1 %17 to i8
%19 = trunc i8 %18 to i1
br i1 %19, label %for.body-2, label %for.done-5
for.body-2:
; c
; IndexExpr
%20 = load %..string, %..string* %0, align 8
%21 = extractvalue %..string %20, 0
%22 = extractvalue %..string %20, 1
%23 = load i64, i64* %3, align 8
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$19c, i64 0, i32 0), i64 46}, i64 312, i64 10, i64 %23, i64 %22)
%24 = getelementptr inbounds i8, i8* %21, i64 %23
%25 = load i8, i8* %24, align 1
store i8 %25, i8* %5
; IfStmt
%26 = load i8, i8* %5, align 1
%27 = call i8 @fmt-11._parse_int.is_digit-0(i8 %26, %Context* noalias nonnull %__.context_ptr)
%28 = trunc i8 %27 to i1
br i1 %28, label %if.done-4, label %if.then-3
if.then-3:
; break
br label %for.done-5
if.done-4:
; AssignStmt
%29 = load i64, i64* %3, align 8
%30 = add i64 %29, 1
store i64 %30, i64* %3
; AssignStmt
%31 = load i64, i64* %2, align 8
%32 = mul i64 %31, 10
store i64 %32, i64* %2
; AssignStmt
%33 = load i8, i8* %5, align 1
%34 = zext i8 %33 to i64
%35 = sub i64 %34, 48
%36 = load i64, i64* %2, align 8
%37 = add i64 %36, %35
store i64 %37, i64* %2
br label %for.loop-1
for.done-5:
; AssignStmt
%38 = load i64, i64* %3, align 8
%39 = load i64, i64* %1, align 8
%40 = icmp sgt i64 %38, %39
%41 = zext i1 %40 to i8
store i8 %41, i8* %4
; ReturnStmt
%42 = load i64, i64* %2, align 8
%43 = load i64, i64* %3, align 8
%44 = load i8, i8* %4, align 1
%45 = bitcast {i64, i64, i8}* %6 to %..rawptr
%46 = call %..rawptr @__mem_zero(%..rawptr %45, i64 24)
store {i64, i64, i8} zeroinitializer, {i64, i64, i8}* %6
%47 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %6, i64 0, i32 0
store i64 %42, i64* %47
%48 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %6, i64 0, i32 1
store i64 %43, i64* %48
%49 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %6, i64 0, i32 2
store i8 %44, i8* %49
%50 = load {i64, i64, i8}, {i64, i64, i8}* %6, align 8
ret {i64, i64, i8} %50
}
define i8 @fmt-11._parse_int.is_digit-0(i8 %r, %Context* noalias nonnull %__.context_ptr) alwaysinline #1 {
decls-0:
%0 = alloca i8, align 16
store i8 %r, i8* %0
; ReturnStmt
%1 = load i8, i8* %0, align 1
%2 = icmp ule i8 48, %1
%3 = zext i1 %2 to i8
%4 = load i8, i8* %0, align 1
%5 = icmp ule i8 48, %4
%6 = zext i1 %5 to i8
%7 = trunc i8 %6 to i1
br i1 %7, label %logical.cmp.rhs-1, label %logical.cmp.done-2
logical.cmp.rhs-1:
%8 = load i8, i8* %0, align 1
%9 = icmp ule i8 %8, 57
%10 = zext i1 %9 to i8
br label %logical.cmp.done-2
logical.cmp.done-2:
%11 = phi i8 [ 0, %decls-0 ], [ %10, %logical.cmp.rhs-1 ]
ret i8 %11
}
define {i64, i64, i8} @fmt-11._arg_number(%fmt-11.Fmt_Info* %fi, i64 %arg_index, %..string %format, i64 %offset, i64 %arg_count, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %fmt-11.Fmt_Info*, align 16
%1 = alloca i64, align 16
%2 = alloca %..string, align 16
%3 = alloca i64, align 16
%4 = alloca i64, align 16
%5 = alloca i64, align 16
%6 = alloca i64, align 16
%7 = alloca i8, align 16
%8 = alloca {i64, i64, i8}, align 16
%9 = alloca i64, align 16
%10 = alloca %..string, align 16
%11 = alloca {i64, i64, i8}, align 16
%12 = alloca {i64, i64, i8}, align 16
store %fmt-11.Fmt_Info* %fi, %fmt-11.Fmt_Info** %0
store i64 %arg_index, i64* %1
store %..string %format, %..string* %2
store i64 %offset, i64* %3
store i64 %arg_count, i64* %4
%13 = bitcast i64* %5 to %..rawptr
%14 = call %..rawptr @__mem_zero(%..rawptr %13, i64 8)
store i64 zeroinitializer, i64* %5
%15 = bitcast i64* %6 to %..rawptr
%16 = call %..rawptr @__mem_zero(%..rawptr %15, i64 8)
store i64 zeroinitializer, i64* %6
%17 = bitcast i8* %7 to %..rawptr
%18 = call %..rawptr @__mem_zero(%..rawptr %17, i64 1)
store i8 zeroinitializer, i8* %7
; IfStmt
%19 = load %..string, %..string* %2, align 8
%20 = extractvalue %..string %19, 1
%21 = load i64, i64* %3, align 8
%22 = icmp sle i64 %20, %21
%23 = zext i1 %22 to i8
%24 = trunc i8 %23 to i1
br i1 %24, label %if.then-2, label %cmp.or-1
cmp.or-1:
; IndexExpr
%25 = load %..string, %..string* %2, align 8
%26 = extractvalue %..string %25, 0
%27 = extractvalue %..string %25, 1
%28 = load i64, i64* %3, align 8
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$19d, i64 0, i32 0), i64 46}, i64 341, i64 37, i64 %28, i64 %27)
%29 = getelementptr inbounds i8, i8* %26, i64 %28
%30 = load i8, i8* %29, align 1
%31 = icmp ne i8 %30, 91
%32 = zext i1 %31 to i8
%33 = trunc i8 %32 to i1
br i1 %33, label %if.then-2, label %if.done-3
if.then-2:
; ReturnStmt
%34 = load i64, i64* %1, align 8
%35 = load i64, i64* %3, align 8
%36 = bitcast {i64, i64, i8}* %8 to %..rawptr
%37 = call %..rawptr @__mem_zero(%..rawptr %36, i64 24)
store {i64, i64, i8} zeroinitializer, {i64, i64, i8}* %8
%38 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %8, i64 0, i32 0
store i64 %34, i64* %38
%39 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %8, i64 0, i32 1
store i64 %35, i64* %39
%40 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %8, i64 0, i32 2
store i8 0, i8* %40
%41 = load {i64, i64, i8}, {i64, i64, i8}* %8, align 8
ret {i64, i64, i8} %41
if.done-3:
; AssignStmt
; SelectorExpr
%42 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%43 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %42, i64 0
%44 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %43, i64 0, i32 10
store i8 1, i8* %44
; width
%45 = bitcast i64* %9 to %..rawptr
%46 = call %..rawptr @__mem_zero(%..rawptr %45, i64 8)
store i64 zeroinitializer, i64* %9
; AssignStmt
; SliceExpr
%47 = load i64, i64* %3, align 8
%48 = load %..string, %..string* %2, align 8
%49 = extractvalue %..string %48, 1
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$19e, i64 0, i32 0), i64 46}, i64 347, i64 44, i64 %47, i64 %49, i64 %49)
%50 = extractvalue %..string %48, 0
%51 = getelementptr inbounds i8, i8* %50, i64 %47
%52 = sub i64 %49, %47
%53 = bitcast %..string* %10 to %..rawptr
%54 = call %..rawptr @__mem_zero(%..rawptr %53, i64 16)
store %..string zeroinitializer, %..string* %10
%55 = getelementptr inbounds %..string, %..string* %10, i64 0, i32 0
store i8* %51, i8** %55
%56 = getelementptr inbounds %..string, %..string* %10, i64 0, i32 1
store i64 %52, i64* %56
%57 = load %..string, %..string* %10, align 8
%58 = call {i64, i64, i8} @fmt-11._arg_number.parse_arg_number-0(%..string %57, %Context* noalias nonnull %__.context_ptr)
%59 = extractvalue {i64, i64, i8} %58, 0
%60 = extractvalue {i64, i64, i8} %58, 1
%61 = extractvalue {i64, i64, i8} %58, 2
store i64 %59, i64* %5
store i64 %60, i64* %9
store i8 %61, i8* %7
; IfStmt
%62 = load i8, i8* %7, align 1
%63 = trunc i8 %62 to i1
br i1 %63, label %cmp.and-4, label %if.done-7
cmp.and-4:
%64 = load i64, i64* %5, align 8
%65 = icmp sle i64 0, %64
%66 = zext i1 %65 to i8
%67 = trunc i8 %66 to i1
br i1 %67, label %cmp.and-5, label %if.done-7
cmp.and-5:
%68 = load i64, i64* %5, align 8
%69 = load i64, i64* %4, align 8
%70 = icmp slt i64 %68, %69
%71 = zext i1 %70 to i8
%72 = trunc i8 %71 to i1
br i1 %72, label %if.then-6, label %if.done-7
if.then-6:
; ReturnStmt
%73 = load i64, i64* %5, align 8
%74 = load i64, i64* %3, align 8
%75 = load i64, i64* %9, align 8
%76 = add i64 %74, %75
%77 = bitcast {i64, i64, i8}* %11 to %..rawptr
%78 = call %..rawptr @__mem_zero(%..rawptr %77, i64 24)
store {i64, i64, i8} zeroinitializer, {i64, i64, i8}* %11
%79 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %11, i64 0, i32 0
store i64 %73, i64* %79
%80 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %11, i64 0, i32 1
store i64 %76, i64* %80
%81 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %11, i64 0, i32 2
store i8 1, i8* %81
%82 = load {i64, i64, i8}, {i64, i64, i8}* %11, align 8
ret {i64, i64, i8} %82
if.done-7:
; AssignStmt
; SelectorExpr
%83 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%84 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %83, i64 0
%85 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %84, i64 0, i32 11
store i8 0, i8* %85
; ReturnStmt
%86 = load i64, i64* %1, align 8
%87 = load i64, i64* %3, align 8
%88 = load i64, i64* %9, align 8
%89 = add i64 %87, %88
%90 = bitcast {i64, i64, i8}* %12 to %..rawptr
%91 = call %..rawptr @__mem_zero(%..rawptr %90, i64 24)
store {i64, i64, i8} zeroinitializer, {i64, i64, i8}* %12
%92 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %12, i64 0, i32 0
store i64 %86, i64* %92
%93 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %12, i64 0, i32 1
store i64 %89, i64* %93
%94 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %12, i64 0, i32 2
store i8 0, i8* %94
%95 = load {i64, i64, i8}, {i64, i64, i8}* %12, align 8
ret {i64, i64, i8} %95
}
define {i64, i64, i8} @fmt-11._arg_number.parse_arg_number-0(%..string %format, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %..string, align 16
%1 = alloca {i64, i64, i8}, align 16
%2 = alloca i64, align 16
%3 = alloca i64, align 16
%4 = alloca i64, align 16
%5 = alloca i64, align 16
%6 = alloca i64, align 16
%7 = alloca i8, align 16
%8 = alloca {i64, i64, i8}, align 16
%9 = alloca {i64, i64, i8}, align 16
%10 = alloca {i64, i64, i8}, align 16
store %..string %format, %..string* %0
; IfStmt
%11 = load %..string, %..string* %0, align 8
%12 = extractvalue %..string %11, 1
%13 = icmp slt i64 %12, 3
%14 = zext i1 %13 to i8
%15 = trunc i8 %14 to i1
br i1 %15, label %if.then-1, label %if.done-2
if.then-1:
; ReturnStmt
%16 = bitcast {i64, i64, i8}* %1 to %..rawptr
%17 = call %..rawptr @__mem_zero(%..rawptr %16, i64 24)
store {i64, i64, i8} zeroinitializer, {i64, i64, i8}* %1
%18 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %1, i64 0, i32 0
store i64 0, i64* %18
%19 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %1, i64 0, i32 1
store i64 1, i64* %19
%20 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %1, i64 0, i32 2
store i8 0, i8* %20
%21 = load {i64, i64, i8}, {i64, i64, i8}* %1, align 8
ret {i64, i64, i8} %21
if.done-2:
; RangeStmt
; i
%22 = bitcast i64* %2 to %..rawptr
%23 = call %..rawptr @__mem_zero(%..rawptr %22, i64 8)
store i64 zeroinitializer, i64* %2
%24 = bitcast i64* %3 to %..rawptr
%25 = call %..rawptr @__mem_zero(%..rawptr %24, i64 8)
store i64 zeroinitializer, i64* %3
store i64 1, i64* %3
%26 = bitcast i64* %4 to %..rawptr
%27 = call %..rawptr @__mem_zero(%..rawptr %26, i64 8)
store i64 zeroinitializer, i64* %4
store i64 0, i64* %4
br label %for.interval.loop-3
for.interval.loop-3:
%28 = load %..string, %..string* %0, align 8
%29 = extractvalue %..string %28, 1
%30 = load i64, i64* %3, align 8
%31 = icmp sle i64 %30, %29
br i1 %31, label %for.interval.body-4, label %for.interval.done-10
for.interval.body-4:
%32 = load i64, i64* %3, align 8
%33 = load i64, i64* %4, align 8
%34 = load i64, i64* %3, align 8
%35 = add i64 %34, 1
store i64 %35, i64* %3
%36 = load i64, i64* %4, align 8
%37 = add i64 %36, 1
store i64 %37, i64* %4
store i64 %32, i64* %2
; IfStmt
; IndexExpr
%38 = load %..string, %..string* %0, align 8
%39 = extractvalue %..string %38, 0
%40 = extractvalue %..string %38, 1
%41 = load i64, i64* %2, align 8
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$19f, i64 0, i32 0), i64 46}, i64 328, i64 14, i64 %41, i64 %40)
%42 = getelementptr inbounds i8, i8* %39, i64 %41
%43 = load i8, i8* %42, align 1
%44 = icmp eq i8 %43, 93
%45 = zext i1 %44 to i8
%46 = trunc i8 %45 to i1
br i1 %46, label %if.then-5, label %if.done-9
if.then-5:
; width
; new_index
; ok
%47 = load %..string, %..string* %0, align 8
%48 = call {i64, i64, i8} @fmt-11._parse_int(%..string %47, i64 1, %Context* noalias nonnull %__.context_ptr)
%49 = extractvalue {i64, i64, i8} %48, 0
%50 = extractvalue {i64, i64, i8} %48, 1
%51 = extractvalue {i64, i64, i8} %48, 2
store i64 %49, i64* %5
store i64 %50, i64* %6
store i8 %51, i8* %7
; IfStmt
%52 = load i8, i8* %7, align 1
%53 = trunc i8 %52 to i1
br i1 %53, label %cmp.or-6, label %if.then-7
cmp.or-6:
%54 = load i64, i64* %6, align 8
%55 = load i64, i64* %2, align 8
%56 = icmp ne i64 %54, %55
%57 = zext i1 %56 to i8
%58 = trunc i8 %57 to i1
br i1 %58, label %if.then-7, label %if.done-8
if.then-7:
; ReturnStmt
%59 = load i64, i64* %2, align 8
%60 = add i64 %59, 1
%61 = bitcast {i64, i64, i8}* %8 to %..rawptr
%62 = call %..rawptr @__mem_zero(%..rawptr %61, i64 24)
store {i64, i64, i8} zeroinitializer, {i64, i64, i8}* %8
%63 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %8, i64 0, i32 0
store i64 0, i64* %63
%64 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %8, i64 0, i32 1
store i64 %60, i64* %64
%65 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %8, i64 0, i32 2
store i8 0, i8* %65
%66 = load {i64, i64, i8}, {i64, i64, i8}* %8, align 8
ret {i64, i64, i8} %66
if.done-8:
; ReturnStmt
%67 = load i64, i64* %5, align 8
%68 = sub i64 %67, 1
%69 = load i64, i64* %2, align 8
%70 = add i64 %69, 1
%71 = bitcast {i64, i64, i8}* %9 to %..rawptr
%72 = call %..rawptr @__mem_zero(%..rawptr %71, i64 24)
store {i64, i64, i8} zeroinitializer, {i64, i64, i8}* %9
%73 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %9, i64 0, i32 0
store i64 %68, i64* %73
%74 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %9, i64 0, i32 1
store i64 %70, i64* %74
%75 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %9, i64 0, i32 2
store i8 1, i8* %75
%76 = load {i64, i64, i8}, {i64, i64, i8}* %9, align 8
ret {i64, i64, i8} %76
if.done-9:
br label %for.interval.loop-3
for.interval.done-10:
; ReturnStmt
%77 = bitcast {i64, i64, i8}* %10 to %..rawptr
%78 = call %..rawptr @__mem_zero(%..rawptr %77, i64 24)
store {i64, i64, i8} zeroinitializer, {i64, i64, i8}* %10
%79 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %10, i64 0, i32 0
store i64 0, i64* %79
%80 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %10, i64 0, i32 1
store i64 1, i64* %80
%81 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %10, i64 0, i32 2
store i8 0, i8* %81
%82 = load {i64, i64, i8}, {i64, i64, i8}* %10, align 8
ret {i64, i64, i8} %82
}
define {i64, i64, i8} @fmt-11.int_from_arg({%..any*, i64}* %args, i64 %arg_index, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca i64, align 16
%1 = alloca i64, align 16
%2 = alloca i64, align 16
%3 = alloca i8, align 16
%4 = alloca %..any, align 16
%5 = alloca i64, align 16
%6 = alloca i8, align 16
%7 = alloca i16, align 16
%8 = alloca i32, align 16
%9 = alloca i64, align 16
%10 = alloca i8, align 16
%11 = alloca i16, align 16
%12 = alloca i32, align 16
%13 = alloca i64, align 16
%14 = alloca %..any, align 16
%15 = alloca {i64, i64, i8}, align 16
%16 = load {%..any*, i64}, {%..any*, i64}* %args, align 8
store i64 %arg_index, i64* %0
; num
store i64 0, i64* %1
; new_arg_index
%17 = load i64, i64* %0, align 8
store i64 %17, i64* %2
; ok
store i8 1, i8* %3
; IfStmt
%18 = load i64, i64* %0, align 8
%19 = load {%..any*, i64}, {%..any*, i64}* %args, align 8
%20 = extractvalue {%..any*, i64} %19, 1
%21 = icmp slt i64 %18, %20
%22 = zext i1 %21 to i8
%23 = trunc i8 %22 to i1
br i1 %23, label %if.then-1, label %if.done-21
if.then-1:
; arg
; IndexExpr
%24 = load {%..any*, i64}, {%..any*, i64}* %args, align 8
%25 = extractvalue {%..any*, i64} %24, 0
%26 = load i64, i64* %0, align 8
%27 = extractvalue {%..any*, i64} %24, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1a0, i64 0, i32 0), i64 46}, i64 360, i64 15, i64 %26, i64 %27)
%28 = getelementptr inbounds %..any, %..any* %25, i64 %26
%29 = load %..any, %..any* %28, align 8
store %..any %29, %..any* %4
; AssignStmt
; SelectorExpr
%30 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 1
; SelectorExpr
%31 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 1
%32 = load %Type_Info*, %Type_Info** %31, align 8
%33 = call %Type_Info* @type_info_base(%Type_Info* %32, %Context* noalias nonnull %__.context_ptr)
store %Type_Info* %33, %Type_Info** %30
; TypeSwitchStmt
%34 = load %..any, %..any* %4, align 8
%35 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 1
%36 = load %Type_Info*, %Type_Info** %35, align 8
%37 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 6
%38 = icmp eq %Type_Info* %36, %37
br i1 %38, label %typeswitch.body-3, label %typeswitch.next-2
typeswitch.next-2:
%39 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 1
%40 = load %Type_Info*, %Type_Info** %39, align 8
%41 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 67
%42 = icmp eq %Type_Info* %40, %41
br i1 %42, label %typeswitch.body-5, label %typeswitch.next-4
typeswitch.body-3:
%43 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 0
%44 = load %..rawptr, %..rawptr* %43, align 8
%45 = bitcast %..rawptr %44 to i64*
%46 = load i64, i64* %45, align 8
store i64 %46, i64* %5
; AssignStmt
%47 = load i64, i64* %5, align 8
store i64 %47, i64* %1
br label %typeswitch.done-20
typeswitch.next-4:
%48 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 1
%49 = load %Type_Info*, %Type_Info** %48, align 8
%50 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 68
%51 = icmp eq %Type_Info* %49, %50
br i1 %51, label %typeswitch.body-7, label %typeswitch.next-6
typeswitch.body-5:
%52 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 0
%53 = load %..rawptr, %..rawptr* %52, align 8
%54 = bitcast %..rawptr %53 to i8*
%55 = load i8, i8* %54, align 1
store i8 %55, i8* %6
; AssignStmt
%56 = load i8, i8* %6, align 1
%57 = sext i8 %56 to i64
store i64 %57, i64* %1
br label %typeswitch.done-20
typeswitch.next-6:
%58 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 1
%59 = load %Type_Info*, %Type_Info** %58, align 8
%60 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 11
%61 = icmp eq %Type_Info* %59, %60
br i1 %61, label %typeswitch.body-9, label %typeswitch.next-8
typeswitch.body-7:
%62 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 0
%63 = load %..rawptr, %..rawptr* %62, align 8
%64 = bitcast %..rawptr %63 to i16*
%65 = load i16, i16* %64, align 2
store i16 %65, i16* %7
; AssignStmt
%66 = load i16, i16* %7, align 2
%67 = sext i16 %66 to i64
store i64 %67, i64* %1
br label %typeswitch.done-20
typeswitch.next-8:
%68 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 1
%69 = load %Type_Info*, %Type_Info** %68, align 8
%70 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 69
%71 = icmp eq %Type_Info* %69, %70
br i1 %71, label %typeswitch.body-11, label %typeswitch.next-10
typeswitch.body-9:
%72 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 0
%73 = load %..rawptr, %..rawptr* %72, align 8
%74 = bitcast %..rawptr %73 to i32*
%75 = load i32, i32* %74, align 4
store i32 %75, i32* %8
; AssignStmt
%76 = load i32, i32* %8, align 4
%77 = sext i32 %76 to i64
store i64 %77, i64* %1
br label %typeswitch.done-20
typeswitch.next-10:
%78 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 1
%79 = load %Type_Info*, %Type_Info** %78, align 8
%80 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 20
%81 = icmp eq %Type_Info* %79, %80
br i1 %81, label %typeswitch.body-13, label %typeswitch.next-12
typeswitch.body-11:
%82 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 0
%83 = load %..rawptr, %..rawptr* %82, align 8
%84 = bitcast %..rawptr %83 to i64*
%85 = load i64, i64* %84, align 8
store i64 %85, i64* %9
; AssignStmt
%86 = load i64, i64* %9, align 8
%87 = bitcast i64 %86 to i64
store i64 %87, i64* %1
br label %typeswitch.done-20
typeswitch.next-12:
%88 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 1
%89 = load %Type_Info*, %Type_Info** %88, align 8
%90 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 70
%91 = icmp eq %Type_Info* %89, %90
br i1 %91, label %typeswitch.body-15, label %typeswitch.next-14
typeswitch.body-13:
%92 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 0
%93 = load %..rawptr, %..rawptr* %92, align 8
%94 = bitcast %..rawptr %93 to i8*
%95 = load i8, i8* %94, align 1
store i8 %95, i8* %10
; AssignStmt
%96 = load i8, i8* %10, align 1
%97 = zext i8 %96 to i64
store i64 %97, i64* %1
br label %typeswitch.done-20
typeswitch.next-14:
%98 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 1
%99 = load %Type_Info*, %Type_Info** %98, align 8
%100 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 3
%101 = icmp eq %Type_Info* %99, %100
br i1 %101, label %typeswitch.body-17, label %typeswitch.next-16
typeswitch.body-15:
%102 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 0
%103 = load %..rawptr, %..rawptr* %102, align 8
%104 = bitcast %..rawptr %103 to i16*
%105 = load i16, i16* %104, align 2
store i16 %105, i16* %11
; AssignStmt
%106 = load i16, i16* %11, align 2
%107 = zext i16 %106 to i64
store i64 %107, i64* %1
br label %typeswitch.done-20
typeswitch.next-16:
%108 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 1
%109 = load %Type_Info*, %Type_Info** %108, align 8
%110 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 71
%111 = icmp eq %Type_Info* %109, %110
br i1 %111, label %typeswitch.body-19, label %typeswitch.next-18
typeswitch.body-17:
%112 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 0
%113 = load %..rawptr, %..rawptr* %112, align 8
%114 = bitcast %..rawptr %113 to i32*
%115 = load i32, i32* %114, align 4
store i32 %115, i32* %12
; AssignStmt
%116 = load i32, i32* %12, align 4
%117 = zext i32 %116 to i64
store i64 %117, i64* %1
br label %typeswitch.done-20
typeswitch.next-18:
store %..any %34, %..any* %14
; AssignStmt
store i8 0, i8* %3
br label %typeswitch.done-20
typeswitch.body-19:
%118 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 0
%119 = load %..rawptr, %..rawptr* %118, align 8
%120 = bitcast %..rawptr %119 to i64*
%121 = load i64, i64* %120, align 8
store i64 %121, i64* %13
; AssignStmt
%122 = load i64, i64* %13, align 8
%123 = bitcast i64 %122 to i64
store i64 %123, i64* %1
br label %typeswitch.done-20
typeswitch.done-20:
br label %if.done-21
if.done-21:
; ReturnStmt
%124 = load i64, i64* %1, align 8
%125 = load i64, i64* %2, align 8
%126 = load i8, i8* %3, align 1
%127 = bitcast {i64, i64, i8}* %15 to %..rawptr
%128 = call %..rawptr @__mem_zero(%..rawptr %127, i64 24)
store {i64, i64, i8} zeroinitializer, {i64, i64, i8}* %15
%129 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %15, i64 0, i32 0
store i64 %124, i64* %129
%130 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %15, i64 0, i32 1
store i64 %125, i64* %130
%131 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %15, i64 0, i32 2
store i8 %126, i8* %131
%132 = load {i64, i64, i8}, {i64, i64, i8}* %15, align 8
ret {i64, i64, i8} %132
}
define void @fmt-11.fmt_bad_verb(%fmt-11.Fmt_Info* %fi, i32 %verb, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %fmt-11.Fmt_Info*, align 16
%1 = alloca i32, align 16
%2 = alloca %Source_Code_Location, align 16
store %fmt-11.Fmt_Info* %fi, %fmt-11.Fmt_Info** %0
store i32 %verb, i32* %1
%3 = load i32, i32* %1, align 4
%4 = icmp ne i32 %3, 118
%5 = zext i1 %4 to i8
%6 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1a1, i64 0, i32 0), i64 46}, i64 382, i64 2, %..string {i8* getelementptr inbounds ([13 x i8], [13 x i8]* @__str$1a2, i64 0, i32 0), i64 12})
%7 = trunc i8 %5 to i1
%8 = bitcast %Source_Code_Location* %2 to %..rawptr
%9 = call %..rawptr @__mem_zero(%..rawptr %8, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %2
store %Source_Code_Location %6, %Source_Code_Location* %2
%10 = call i8 @assert(i1 %7, %..string zeroinitializer, %Source_Code_Location* %2)
%11 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%12 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %11, i64 0
%13 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %12, i64 0, i32 12
%14 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %13, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %14, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$1a3, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr)
%15 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%16 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %15, i64 0
%17 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %16, i64 0, i32 12
%18 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %17, align 8
%19 = load i32, i32* %1, align 4
call void @fmt-11.write_rune({i8*, i64, i64, %Allocator}* %18, i32 %19, %Context* noalias nonnull %__.context_ptr)
%20 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%21 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %20, i64 0
%22 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %21, i64 0, i32 12
%23 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %22, align 8
call void @fmt-11.write_byte({i8*, i64, i64, %Allocator}* %23, i8 40, %Context* noalias nonnull %__.context_ptr)
; IfStmt
; SelectorExpr
%24 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%25 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %24, i64 0
%26 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %25, i64 0, i32 13
%27 = getelementptr inbounds %..any, %..any* %26, i64 0, i32 1
%28 = load %Type_Info*, %Type_Info** %27, align 8
%29 = icmp ne %Type_Info* %28, zeroinitializer
%30 = zext i1 %29 to i8
%31 = trunc i8 %30 to i1
br i1 %31, label %if.then-1, label %if.else-2
if.then-1:
%32 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%33 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %32, i64 0
%34 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %33, i64 0, i32 12
%35 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %34, align 8
; SelectorExpr
%36 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%37 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %36, i64 0
%38 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %37, i64 0, i32 13
%39 = getelementptr inbounds %..any, %..any* %38, i64 0, i32 1
%40 = load %Type_Info*, %Type_Info** %39, align 8
call void @fmt-11.write_type({i8*, i64, i64, %Allocator}* %35, %Type_Info* %40, %Context* noalias nonnull %__.context_ptr)
%41 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%42 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %41, i64 0
%43 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %42, i64 0, i32 12
%44 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %43, align 8
call void @fmt-11.write_byte({i8*, i64, i64, %Allocator}* %44, i8 61, %Context* noalias nonnull %__.context_ptr)
%45 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%46 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%47 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %46, i64 0
%48 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %47, i64 0, i32 13
%49 = load %..any, %..any* %48, align 8
call void @fmt-11.fmt_value(%fmt-11.Fmt_Info* %45, %..any %49, i32 118, %Context* noalias nonnull %__.context_ptr)
br label %if.done-3
if.else-2:
%50 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%51 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %50, i64 0
%52 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %51, i64 0, i32 12
%53 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %52, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %53, %..string {i8* getelementptr inbounds ([6 x i8], [6 x i8]* @__str$1a4, i64 0, i32 0), i64 5}, %Context* noalias nonnull %__.context_ptr)
br label %if.done-3
if.done-3:
%54 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%55 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %54, i64 0
%56 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %55, i64 0, i32 12
%57 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %56, align 8
call void @fmt-11.write_byte({i8*, i64, i64, %Allocator}* %57, i8 41, %Context* noalias nonnull %__.context_ptr)
ret void
}
define void @fmt-11.fmt_bool(%fmt-11.Fmt_Info* %fi, i1 %b, i32 %verb, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %fmt-11.Fmt_Info*, align 16
%1 = alloca i8, align 16
%2 = alloca i32, align 16
store %fmt-11.Fmt_Info* %fi, %fmt-11.Fmt_Info** %0
%3 = zext i1 %b to i8
store i8 %3, i8* %1
store i32 %verb, i32* %2
; SwitchStmt
%4 = load i32, i32* %2, align 4
%5 = icmp eq i32 %4, 116
br i1 %5, label %switch.case.body-3, label %switch.case.next-1
switch.case.next-1:
%6 = icmp eq i32 %4, 118
br i1 %6, label %switch.case.body-3, label %switch.case.next-2
switch.case.next-2:
%7 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%8 = load i32, i32* %2, align 4
call void @fmt-11.fmt_bad_verb(%fmt-11.Fmt_Info* %7, i32 %8, %Context* noalias nonnull %__.context_ptr)
br label %switch.done-7
switch.case.body-3:
%9 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%10 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %9, i64 0
%11 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %10, i64 0, i32 12
%12 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %11, align 8
; TernaryExpr
%13 = load i8, i8* %1, align 1
%14 = trunc i8 %13 to i1
br i1 %14, label %if.then-4, label %if.else-5
if.then-4:
br label %if.done-6
if.else-5:
br label %if.done-6
if.done-6:
%15 = phi %..string [ {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$1a5, i64 0, i32 0), i64 4}, %if.then-4 ], [ {i8* getelementptr inbounds ([6 x i8], [6 x i8]* @__str$1a6, i64 0, i32 0), i64 5}, %if.else-5 ]
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %12, %..string %15, %Context* noalias nonnull %__.context_ptr)
br label %switch.done-7
switch.done-7:
ret void
}
define void @fmt-11.fmt_write_padding(%fmt-11.Fmt_Info* %fi, i64 %width, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %fmt-11.Fmt_Info*, align 16
%1 = alloca i64, align 16
%2 = alloca i8, align 16
%3 = alloca i64, align 16
%4 = alloca i64, align 16
store %fmt-11.Fmt_Info* %fi, %fmt-11.Fmt_Info** %0
store i64 %width, i64* %1
; IfStmt
%5 = load i64, i64* %1, align 8
%6 = icmp sle i64 %5, 0
%7 = zext i1 %6 to i8
%8 = trunc i8 %7 to i1
br i1 %8, label %if.then-1, label %if.done-2
if.then-1:
; ReturnStmt
ret void
if.done-2:
; pad_byte
store i8 48, i8* %2
; IfStmt
; SelectorExpr
%9 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%10 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %9, i64 0
%11 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %10, i64 0, i32 2
%12 = load i8, i8* %11, align 1
%13 = trunc i8 %12 to i1
br i1 %13, label %if.then-3, label %if.done-4
if.then-3:
; AssignStmt
store i8 32, i8* %2
br label %if.done-4
if.done-4:
; RangeStmt
%14 = bitcast i64* %3 to %..rawptr
%15 = call %..rawptr @__mem_zero(%..rawptr %14, i64 8)
store i64 zeroinitializer, i64* %3
store i64 0, i64* %3
%16 = bitcast i64* %4 to %..rawptr
%17 = call %..rawptr @__mem_zero(%..rawptr %16, i64 8)
store i64 zeroinitializer, i64* %4
store i64 0, i64* %4
br label %for.interval.loop-5
for.interval.loop-5:
%18 = load i64, i64* %1, align 8
%19 = load i64, i64* %3, align 8
%20 = icmp slt i64 %19, %18
br i1 %20, label %for.interval.body-6, label %for.interval.done-7
for.interval.body-6:
%21 = load i64, i64* %3, align 8
%22 = load i64, i64* %4, align 8
%23 = load i64, i64* %3, align 8
%24 = add i64 %23, 1
store i64 %24, i64* %3
%25 = load i64, i64* %4, align 8
%26 = add i64 %25, 1
store i64 %26, i64* %4
; SelectorExpr
%27 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%28 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %27, i64 0
%29 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %28, i64 0, i32 12
%30 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %29, align 8
%31 = load i8, i8* %2, align 1
call void @fmt-11.write_byte({i8*, i64, i64, %Allocator}* %30, i8 %31, %Context* noalias nonnull %__.context_ptr)
br label %for.interval.loop-5
for.interval.done-7:
ret void
}
define void @fmt-11._fmt_int(%fmt-11.Fmt_Info* %fi, i64 %u, i64 %base, i1 %is_signed, i64 %bit_size, %..string %digits, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %fmt-11.Fmt_Info*, align 16
%1 = alloca i64, align 16
%2 = alloca i64, align 16
%3 = alloca i8, align 16
%4 = alloca i64, align 16
%5 = alloca %..string, align 16
%6 = alloca i8, align 16
%7 = alloca i64, align 16
%8 = alloca %Source_Code_Location, align 16
%9 = alloca i64, align 16
%10 = alloca i8, align 16
%11 = alloca %Source_Code_Location, align 16
%12 = alloca [256 x i8], align 16
%13 = alloca i64, align 16
%14 = alloca i64, align 16
%15 = alloca %..string, align 16
%16 = alloca {i8*, i64}, align 16
%17 = alloca {i8*, i64}, align 16
%18 = alloca i8, align 16
%19 = alloca i8, align 16
store %fmt-11.Fmt_Info* %fi, %fmt-11.Fmt_Info** %0
store i64 %u, i64* %1
store i64 %base, i64* %2
%20 = zext i1 %is_signed to i8
store i8 %20, i8* %3
store i64 %bit_size, i64* %4
store %..string %digits, %..string* %5
; neg
; SelectorExpr
%21 = load i64, i64* %1, align 8
%22 = load i8, i8* %3, align 1
%23 = load i64, i64* %4, align 8
%24 = trunc i8 %22 to i1
%25 = call {i64, i8} @strconv-42.is_integer_negative(i64 %21, i1 %24, i64 %23, %Context* noalias nonnull %__.context_ptr)
%26 = extractvalue {i64, i8} %25, 0
%27 = extractvalue {i64, i8} %25, 1
store i8 %27, i8* %6
; IfStmt
; SelectorExpr
%28 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%29 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %28, i64 0
%30 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %29, i64 0, i32 5
%31 = load i8, i8* %30, align 1
%32 = trunc i8 %31 to i1
br i1 %32, label %if.then-2, label %cmp.or-1
cmp.or-1:
; SelectorExpr
%33 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%34 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %33, i64 0
%35 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %34, i64 0, i32 6
%36 = load i8, i8* %35, align 1
%37 = trunc i8 %36 to i1
br i1 %37, label %if.then-2, label %if.done-5
if.then-2:
; width
; SelectorExpr
%38 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%39 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %38, i64 0
%40 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %39, i64 0, i32 7
%41 = load i64, i64* %40, align 8
; SelectorExpr
%42 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%43 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %42, i64 0
%44 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %43, i64 0, i32 8
%45 = load i64, i64* %44, align 8
%46 = add i64 %41, %45
%47 = add i64 %46, 3
store i64 %47, i64* %7
; IfStmt
%48 = load i64, i64* %7, align 8
%49 = icmp sgt i64 %48, 256
%50 = zext i1 %49 to i8
%51 = trunc i8 %50 to i1
br i1 %51, label %if.then-3, label %if.done-4
if.then-3:
%52 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1a7, i64 0, i32 0), i64 46}, i64 425, i64 4, %..string {i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__str$1a8, i64 0, i32 0), i64 8})
%53 = bitcast %Source_Code_Location* %8 to %..rawptr
%54 = call %..rawptr @__mem_zero(%..rawptr %53, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %8
store %Source_Code_Location %52, %Source_Code_Location* %8
call void @panic(%..string {i8* getelementptr inbounds ([54 x i8], [54 x i8]* @__str$1a9, i64 0, i32 0), i64 53}, %Source_Code_Location* %8)
br label %if.done-4
if.done-4:
br label %if.done-5
if.done-5:
; prec
store i64 0, i64* %9
; IfStmt
; SelectorExpr
%55 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%56 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %55, i64 0
%57 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %56, i64 0, i32 6
%58 = load i8, i8* %57, align 1
%59 = trunc i8 %58 to i1
br i1 %59, label %if.then-6, label %if.else-10
if.then-6:
; AssignStmt
; SelectorExpr
%60 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%61 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %60, i64 0
%62 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %61, i64 0, i32 8
%63 = load i64, i64* %62, align 8
store i64 %63, i64* %9
; IfStmt
%64 = load i64, i64* %9, align 8
%65 = icmp eq i64 %64, 0
%66 = zext i1 %65 to i8
%67 = trunc i8 %66 to i1
br i1 %67, label %cmp.and-7, label %if.done-9
cmp.and-7:
%68 = load i64, i64* %1, align 8
%69 = icmp eq i64 %68, 0
%70 = zext i1 %69 to i8
%71 = trunc i8 %70 to i1
br i1 %71, label %if.then-8, label %if.done-9
if.then-8:
; prev_zero
; SelectorExpr
%72 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%73 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %72, i64 0
%74 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %73, i64 0, i32 3
%75 = load i8, i8* %74, align 1
store i8 %75, i8* %10
; AssignStmt
; SelectorExpr
%76 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%77 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %76, i64 0
%78 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %77, i64 0, i32 3
store i8 0, i8* %78
%79 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
; SelectorExpr
%80 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%81 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %80, i64 0
%82 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %81, i64 0, i32 7
%83 = load i64, i64* %82, align 8
call void @fmt-11.fmt_write_padding(%fmt-11.Fmt_Info* %79, i64 %83, %Context* noalias nonnull %__.context_ptr)
; AssignStmt
; SelectorExpr
%84 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%85 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %84, i64 0
%86 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %85, i64 0, i32 3
%87 = load i8, i8* %10, align 1
store i8 %87, i8* %86
; ReturnStmt
ret void
if.done-9:
br label %if.done-18
if.else-10:
; IfStmt
; SelectorExpr
%88 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%89 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %88, i64 0
%90 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %89, i64 0, i32 3
%91 = load i8, i8* %90, align 1
%92 = trunc i8 %91 to i1
br i1 %92, label %cmp.and-11, label %if.done-17
cmp.and-11:
; SelectorExpr
%93 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%94 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %93, i64 0
%95 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %94, i64 0, i32 5
%96 = load i8, i8* %95, align 1
%97 = trunc i8 %96 to i1
br i1 %97, label %if.then-12, label %if.done-17
if.then-12:
; AssignStmt
; SelectorExpr
%98 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%99 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %98, i64 0
%100 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %99, i64 0, i32 7
%101 = load i64, i64* %100, align 8
store i64 %101, i64* %9
; IfStmt
%102 = load i8, i8* %6, align 1
%103 = trunc i8 %102 to i1
br i1 %103, label %if.then-15, label %cmp.or-13
cmp.or-13:
; SelectorExpr
%104 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%105 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %104, i64 0
%106 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %105, i64 0, i32 1
%107 = load i8, i8* %106, align 1
%108 = trunc i8 %107 to i1
br i1 %108, label %if.then-15, label %cmp.or-14
cmp.or-14:
; SelectorExpr
%109 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%110 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %109, i64 0
%111 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %110, i64 0, i32 2
%112 = load i8, i8* %111, align 1
%113 = trunc i8 %112 to i1
br i1 %113, label %if.then-15, label %if.done-16
if.then-15:
; AssignStmt
%114 = load i64, i64* %9, align 8
%115 = sub i64 %114, 1
store i64 %115, i64* %9
br label %if.done-16
if.done-16:
br label %if.done-17
if.done-17:
br label %if.done-18
if.done-18:
; SwitchStmt
%116 = load i64, i64* %2, align 8
%117 = icmp eq i64 %116, 2
br i1 %117, label %switch.case.body-24, label %switch.case.next-19
switch.case.next-19:
%118 = icmp eq i64 %116, 8
br i1 %118, label %switch.case.body-24, label %switch.case.next-20
switch.case.next-20:
%119 = icmp eq i64 %116, 10
br i1 %119, label %switch.case.body-24, label %switch.case.next-21
switch.case.next-21:
%120 = icmp eq i64 %116, 12
br i1 %120, label %switch.case.body-24, label %switch.case.next-22
switch.case.next-22:
%121 = icmp eq i64 %116, 16
br i1 %121, label %switch.case.body-24, label %switch.case.next-23
switch.case.next-23:
%122 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1aa, i64 0, i32 0), i64 46}, i64 451, i64 3, %..string {i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__str$1ab, i64 0, i32 0), i64 8})
%123 = bitcast %Source_Code_Location* %11 to %..rawptr
%124 = call %..rawptr @__mem_zero(%..rawptr %123, i64 48)
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %11
store %Source_Code_Location %122, %Source_Code_Location* %11
call void @panic(%..string {i8* getelementptr inbounds ([31 x i8], [31 x i8]* @__str$1ac, i64 0, i32 0), i64 30}, %Source_Code_Location* %11)
br label %switch.done-25
switch.case.body-24:
; break
br label %switch.done-25
switch.done-25:
; buf
%125 = bitcast [256 x i8]* %12 to %..rawptr
%126 = call %..rawptr @__mem_zero(%..rawptr %125, i64 256)
store [256 x i8] zeroinitializer, [256 x i8]* %12
; start
store i64 0, i64* %13
; flags
%127 = bitcast i64* %14 to %..rawptr
%128 = call %..rawptr @__mem_zero(%..rawptr %127, i64 8)
store i64 zeroinitializer, i64* %14
; IfStmt
; SelectorExpr
%129 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%130 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %129, i64 0
%131 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %130, i64 0, i32 4
%132 = load i8, i8* %131, align 1
%133 = trunc i8 %132 to i1
br i1 %133, label %cmp.and-26, label %if.done-28
cmp.and-26:
; SelectorExpr
%134 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%135 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %134, i64 0
%136 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %135, i64 0, i32 3
%137 = load i8, i8* %136, align 1
%138 = trunc i8 %137 to i1
br i1 %138, label %if.done-28, label %if.then-27
if.then-27:
; AssignStmt
%139 = load i64, i64* %14, align 8
%140 = or i64 %139, 1
store i64 %140, i64* %14
br label %if.done-28
if.done-28:
; IfStmt
; SelectorExpr
%141 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%142 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %141, i64 0
%143 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %142, i64 0, i32 1
%144 = load i8, i8* %143, align 1
%145 = trunc i8 %144 to i1
br i1 %145, label %if.then-29, label %if.done-30
if.then-29:
; AssignStmt
%146 = load i64, i64* %14, align 8
%147 = or i64 %146, 2
store i64 %147, i64* %14
br label %if.done-30
if.done-30:
; IfStmt
; SelectorExpr
%148 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%149 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %148, i64 0
%150 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %149, i64 0, i32 2
%151 = load i8, i8* %150, align 1
%152 = trunc i8 %151 to i1
br i1 %152, label %if.then-31, label %if.done-32
if.then-31:
; AssignStmt
%153 = load i64, i64* %14, align 8
%154 = or i64 %153, 4
store i64 %154, i64* %14
br label %if.done-32
if.done-32:
; s
; SelectorExpr
; SliceExpr
%155 = load i64, i64* %13, align 8
%156 = load [256 x i8], [256 x i8]* %12, align 1
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1ad, i64 0, i32 0), i64 46}, i64 461, i64 30, i64 %155, i64 256, i64 256)
%157 = getelementptr inbounds [256 x i8], [256 x i8]* %12, i64 0, i32 0
%158 = getelementptr inbounds i8, i8* %157, i64 %155
%159 = sub i64 256, %155
%160 = bitcast {i8*, i64}* %16 to %..rawptr
%161 = call %..rawptr @__mem_zero(%..rawptr %160, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %16
%162 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %16, i64 0, i32 0
store i8* %158, i8** %162
%163 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %16, i64 0, i32 1
store i64 %159, i64* %163
%164 = load {i8*, i64}, {i8*, i64}* %16, align 8
%165 = load i64, i64* %1, align 8
%166 = load i64, i64* %2, align 8
%167 = load i8, i8* %3, align 1
%168 = load i64, i64* %4, align 8
%169 = load %..string, %..string* %5, align 8
%170 = load i64, i64* %14, align 8
%171 = bitcast {i8*, i64}* %17 to %..rawptr
%172 = call %..rawptr @__mem_zero(%..rawptr %171, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %17
store {i8*, i64} %164, {i8*, i64}* %17
%173 = trunc i8 %167 to i1
%174 = call %..string @strconv-42.append_bits({i8*, i64}* %17, i64 %165, i64 %166, i1 %173, i64 %168, %..string %169, i64 %170, %Context* noalias nonnull %__.context_ptr)
store %..string %174, %..string* %15
; IfStmt
; SelectorExpr
%175 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%176 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %175, i64 0
%177 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %176, i64 0, i32 4
%178 = load i8, i8* %177, align 1
%179 = trunc i8 %178 to i1
br i1 %179, label %cmp.and-33, label %if.done-46
cmp.and-33:
; SelectorExpr
%180 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%181 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %180, i64 0
%182 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %181, i64 0, i32 3
%183 = load i8, i8* %182, align 1
%184 = trunc i8 %183 to i1
br i1 %184, label %if.then-34, label %if.done-46
if.then-34:
; c
store i8 0, i8* %18
; SwitchStmt
%185 = load i64, i64* %2, align 8
%186 = icmp eq i64 %185, 2
br i1 %186, label %switch.case.body-36, label %switch.case.next-35
switch.case.next-35:
%187 = icmp eq i64 %185, 8
br i1 %187, label %switch.fall.body-38, label %switch.case.next-37
switch.case.body-36:
; AssignStmt
store i8 98, i8* %18
br label %switch.done-43
switch.case.next-37:
%188 = icmp eq i64 %185, 12
br i1 %188, label %switch.fall.body-40, label %switch.case.next-39
switch.fall.body-38:
; AssignStmt
store i8 111, i8* %18
br label %switch.done-43
switch.case.next-39:
%189 = icmp eq i64 %185, 16
br i1 %189, label %switch.fall.body-42, label %switch.case.next-41
switch.fall.body-40:
; AssignStmt
store i8 122, i8* %18
br label %switch.done-43
switch.case.next-41:
br label %switch.done-43
switch.fall.body-42:
; AssignStmt
store i8 120, i8* %18
br label %switch.done-43
switch.done-43:
; IfStmt
%190 = load i8, i8* %18, align 1
%191 = icmp ne i8 %190, 0
%192 = zext i1 %191 to i8
%193 = trunc i8 %192 to i1
br i1 %193, label %if.then-44, label %if.done-45
if.then-44:
; SelectorExpr
%194 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%195 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %194, i64 0
%196 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %195, i64 0, i32 12
%197 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %196, align 8
call void @fmt-11.write_byte({i8*, i64, i64, %Allocator}* %197, i8 48, %Context* noalias nonnull %__.context_ptr)
; SelectorExpr
%198 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%199 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %198, i64 0
%200 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %199, i64 0, i32 12
%201 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %200, align 8
%202 = load i8, i8* %18, align 1
call void @fmt-11.write_byte({i8*, i64, i64, %Allocator}* %201, i8 %202, %Context* noalias nonnull %__.context_ptr)
br label %if.done-45
if.done-45:
br label %if.done-46
if.done-46:
; prev_zero
; SelectorExpr
%203 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%204 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %203, i64 0
%205 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %204, i64 0, i32 3
%206 = load i8, i8* %205, align 1
store i8 %206, i8* %19
; DeferStmt
; AssignStmt
; SelectorExpr
%207 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%208 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %207, i64 0
%209 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %208, i64 0, i32 3
store i8 0, i8* %209
%210 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%211 = load %..string, %..string* %15, align 8
call void @fmt-11._pad(%fmt-11.Fmt_Info* %210, %..string %211, %Context* noalias nonnull %__.context_ptr)
; defer
; AssignStmt
; SelectorExpr
%212 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%213 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %212, i64 0
%214 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %213, i64 0, i32 3
%215 = load i8, i8* %19, align 1
store i8 %215, i8* %214
ret void
}
define void @fmt-11.fmt_rune(%fmt-11.Fmt_Info* %fi, i32 %r, i32 %verb, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %fmt-11.Fmt_Info*, align 16
%1 = alloca i32, align 16
%2 = alloca i32, align 16
store %fmt-11.Fmt_Info* %fi, %fmt-11.Fmt_Info** %0
store i32 %r, i32* %1
store i32 %verb, i32* %2
; SwitchStmt
%3 = load i32, i32* %2, align 4
%4 = icmp eq i32 %3, 99
br i1 %4, label %switch.case.body-4, label %switch.case.next-1
switch.case.next-1:
%5 = icmp eq i32 %3, 114
br i1 %5, label %switch.case.body-4, label %switch.case.next-2
switch.case.next-2:
%6 = icmp eq i32 %3, 118
br i1 %6, label %switch.case.body-4, label %switch.case.next-3
switch.case.next-3:
%7 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%8 = load i32, i32* %1, align 4
%9 = sext i32 %8 to i64
%10 = load i32, i32* %2, align 4
call void @fmt-11.fmt_int(%fmt-11.Fmt_Info* %7, i64 %9, i1 false, i64 32, i32 %10, %Context* noalias nonnull %__.context_ptr)
br label %switch.done-5
switch.case.body-4:
; SelectorExpr
%11 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%12 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %11, i64 0
%13 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %12, i64 0, i32 12
%14 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %13, align 8
%15 = load i32, i32* %1, align 4
call void @fmt-11.write_rune({i8*, i64, i64, %Allocator}* %14, i32 %15, %Context* noalias nonnull %__.context_ptr)
br label %switch.done-5
switch.done-5:
ret void
}
define void @fmt-11.fmt_int(%fmt-11.Fmt_Info* %fi, i64 %u, i1 %is_signed, i64 %bit_size, i32 %verb, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %fmt-11.Fmt_Info*, align 16
%1 = alloca i64, align 16
%2 = alloca i8, align 16
%3 = alloca i64, align 16
%4 = alloca i32, align 16
%5 = alloca i32, align 16
store %fmt-11.Fmt_Info* %fi, %fmt-11.Fmt_Info** %0
store i64 %u, i64* %1
%6 = zext i1 %is_signed to i8
store i8 %6, i8* %2
store i64 %bit_size, i64* %3
store i32 %verb, i32* %4
; SwitchStmt
%7 = load i32, i32* %4, align 4
%8 = icmp eq i32 %7, 118
br i1 %8, label %switch.case.body-2, label %switch.case.next-1
switch.case.next-1:
%9 = icmp eq i32 %7, 98
br i1 %9, label %switch.fall.body-4, label %switch.case.next-3
switch.case.body-2:
%10 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%11 = load i64, i64* %1, align 8
%12 = load i8, i8* %2, align 1
%13 = load i64, i64* %3, align 8
%14 = load %..string, %..string* @fmt-11.__DIGITS_LOWER, align 8
%15 = trunc i8 %12 to i1
call void @fmt-11._fmt_int(%fmt-11.Fmt_Info* %10, i64 %11, i64 10, i1 %15, i64 %13, %..string %14, %Context* noalias nonnull %__.context_ptr)
br label %switch.done-24
switch.case.next-3:
%16 = icmp eq i32 %7, 111
br i1 %16, label %switch.fall.body-6, label %switch.case.next-5
switch.fall.body-4:
%17 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%18 = load i64, i64* %1, align 8
%19 = load i8, i8* %2, align 1
%20 = load i64, i64* %3, align 8
%21 = load %..string, %..string* @fmt-11.__DIGITS_LOWER, align 8
%22 = trunc i8 %19 to i1
call void @fmt-11._fmt_int(%fmt-11.Fmt_Info* %17, i64 %18, i64 2, i1 %22, i64 %20, %..string %21, %Context* noalias nonnull %__.context_ptr)
br label %switch.done-24
switch.case.next-5:
%23 = icmp eq i32 %7, 100
br i1 %23, label %switch.fall.body-8, label %switch.case.next-7
switch.fall.body-6:
%24 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%25 = load i64, i64* %1, align 8
%26 = load i8, i8* %2, align 1
%27 = load i64, i64* %3, align 8
%28 = load %..string, %..string* @fmt-11.__DIGITS_LOWER, align 8
%29 = trunc i8 %26 to i1
call void @fmt-11._fmt_int(%fmt-11.Fmt_Info* %24, i64 %25, i64 8, i1 %29, i64 %27, %..string %28, %Context* noalias nonnull %__.context_ptr)
br label %switch.done-24
switch.case.next-7:
%30 = icmp eq i32 %7, 122
br i1 %30, label %switch.fall.body-10, label %switch.case.next-9
switch.fall.body-8:
%31 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%32 = load i64, i64* %1, align 8
%33 = load i8, i8* %2, align 1
%34 = load i64, i64* %3, align 8
%35 = load %..string, %..string* @fmt-11.__DIGITS_LOWER, align 8
%36 = trunc i8 %33 to i1
call void @fmt-11._fmt_int(%fmt-11.Fmt_Info* %31, i64 %32, i64 10, i1 %36, i64 %34, %..string %35, %Context* noalias nonnull %__.context_ptr)
br label %switch.done-24
switch.case.next-9:
%37 = icmp eq i32 %7, 120
br i1 %37, label %switch.fall.body-12, label %switch.case.next-11
switch.fall.body-10:
%38 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%39 = load i64, i64* %1, align 8
%40 = load i8, i8* %2, align 1
%41 = load i64, i64* %3, align 8
%42 = load %..string, %..string* @fmt-11.__DIGITS_LOWER, align 8
%43 = trunc i8 %40 to i1
call void @fmt-11._fmt_int(%fmt-11.Fmt_Info* %38, i64 %39, i64 12, i1 %43, i64 %41, %..string %42, %Context* noalias nonnull %__.context_ptr)
br label %switch.done-24
switch.case.next-11:
%44 = icmp eq i32 %7, 88
br i1 %44, label %switch.fall.body-14, label %switch.case.next-13
switch.fall.body-12:
%45 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%46 = load i64, i64* %1, align 8
%47 = load i8, i8* %2, align 1
%48 = load i64, i64* %3, align 8
%49 = load %..string, %..string* @fmt-11.__DIGITS_LOWER, align 8
%50 = trunc i8 %47 to i1
call void @fmt-11._fmt_int(%fmt-11.Fmt_Info* %45, i64 %46, i64 16, i1 %50, i64 %48, %..string %49, %Context* noalias nonnull %__.context_ptr)
br label %switch.done-24
switch.case.next-13:
%51 = icmp eq i32 %7, 99
br i1 %51, label %switch.fall.body-17, label %switch.case.next-15
switch.fall.body-14:
%52 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%53 = load i64, i64* %1, align 8
%54 = load i8, i8* %2, align 1
%55 = load i64, i64* %3, align 8
%56 = load %..string, %..string* @fmt-11.__DIGITS_UPPER, align 8
%57 = trunc i8 %54 to i1
call void @fmt-11._fmt_int(%fmt-11.Fmt_Info* %52, i64 %53, i64 16, i1 %57, i64 %55, %..string %56, %Context* noalias nonnull %__.context_ptr)
br label %switch.done-24
switch.case.next-15:
%58 = icmp eq i32 %7, 114
br i1 %58, label %switch.fall.body-17, label %switch.case.next-16
switch.case.next-16:
%59 = icmp eq i32 %7, 85
br i1 %59, label %switch.fall.body-19, label %switch.case.next-18
switch.fall.body-17:
%60 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%61 = load i64, i64* %1, align 8
%62 = trunc i64 %61 to i32
%63 = load i32, i32* %4, align 4
call void @fmt-11.fmt_rune(%fmt-11.Fmt_Info* %60, i32 %62, i32 %63, %Context* noalias nonnull %__.context_ptr)
br label %switch.done-24
switch.case.next-18:
%64 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%65 = load i32, i32* %4, align 4
call void @fmt-11.fmt_bad_verb(%fmt-11.Fmt_Info* %64, i32 %65, %Context* noalias nonnull %__.context_ptr)
br label %switch.done-24
switch.fall.body-19:
; r
%66 = load i64, i64* %1, align 8
%67 = trunc i64 %66 to i32
store i32 %67, i32* %5
; IfStmt
%68 = load i32, i32* %5, align 4
%69 = icmp slt i32 %68, 0
%70 = zext i1 %69 to i8
%71 = trunc i8 %70 to i1
br i1 %71, label %if.then-21, label %cmp.or-20
cmp.or-20:
%72 = load i32, i32* %5, align 4
%73 = icmp sgt i32 %72, 1114111
%74 = zext i1 %73 to i8
%75 = trunc i8 %74 to i1
br i1 %75, label %if.then-21, label %if.else-22
if.then-21:
%76 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%77 = load i32, i32* %4, align 4
call void @fmt-11.fmt_bad_verb(%fmt-11.Fmt_Info* %76, i32 %77, %Context* noalias nonnull %__.context_ptr)
br label %if.done-23
if.else-22:
; SelectorExpr
%78 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%79 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %78, i64 0
%80 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %79, i64 0, i32 12
%81 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %80, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %81, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$1ae, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr)
%82 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%83 = load i64, i64* %1, align 8
%84 = load i64, i64* %3, align 8
%85 = load %..string, %..string* @fmt-11.__DIGITS_UPPER, align 8
call void @fmt-11._fmt_int(%fmt-11.Fmt_Info* %82, i64 %83, i64 16, i1 false, i64 %84, %..string %85, %Context* noalias nonnull %__.context_ptr)
br label %if.done-23
if.done-23:
br label %switch.done-24
switch.done-24:
ret void
}
define void @fmt-11._pad(%fmt-11.Fmt_Info* %fi, %..string %s, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %fmt-11.Fmt_Info*, align 16
%1 = alloca %..string, align 16
%2 = alloca i64, align 16
store %fmt-11.Fmt_Info* %fi, %fmt-11.Fmt_Info** %0
store %..string %s, %..string* %1
; IfStmt
; SelectorExpr
%3 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%4 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %3, i64 0
%5 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %4, i64 0, i32 5
%6 = load i8, i8* %5, align 1
%7 = trunc i8 %6 to i1
br i1 %7, label %if.done-2, label %if.then-1
if.then-1:
; SelectorExpr
%8 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%9 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %8, i64 0
%10 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %9, i64 0, i32 12
%11 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %10, align 8
%12 = load %..string, %..string* %1, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %11, %..string %12, %Context* noalias nonnull %__.context_ptr)
; ReturnStmt
ret void
if.done-2:
; width
; SelectorExpr
%13 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%14 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %13, i64 0
%15 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %14, i64 0, i32 7
%16 = load i64, i64* %15, align 8
; SelectorExpr
%17 = load %..string, %..string* %1, align 8
%18 = call i64 @utf8-4.rune_count_from_string(%..string %17, %Context* noalias nonnull %__.context_ptr)
%19 = sub i64 %16, %18
store i64 %19, i64* %2
; IfStmt
; SelectorExpr
%20 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%21 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %20, i64 0
%22 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %21, i64 0, i32 0
%23 = load i8, i8* %22, align 1
%24 = trunc i8 %23 to i1
br i1 %24, label %if.then-3, label %if.else-4
if.then-3:
; SelectorExpr
%25 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%26 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %25, i64 0
%27 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %26, i64 0, i32 12
%28 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %27, align 8
%29 = load %..string, %..string* %1, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %28, %..string %29, %Context* noalias nonnull %__.context_ptr)
%30 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%31 = load i64, i64* %2, align 8
call void @fmt-11.fmt_write_padding(%fmt-11.Fmt_Info* %30, i64 %31, %Context* noalias nonnull %__.context_ptr)
br label %if.done-5
if.else-4:
%32 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%33 = load i64, i64* %2, align 8
call void @fmt-11.fmt_write_padding(%fmt-11.Fmt_Info* %32, i64 %33, %Context* noalias nonnull %__.context_ptr)
; SelectorExpr
%34 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%35 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %34, i64 0
%36 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %35, i64 0, i32 12
%37 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %36, align 8
%38 = load %..string, %..string* %1, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %37, %..string %38, %Context* noalias nonnull %__.context_ptr)
br label %if.done-5
if.done-5:
ret void
}
define void @fmt-11.fmt_float(%fmt-11.Fmt_Info* %fi, double %v, i64 %bit_size, i32 %verb, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %fmt-11.Fmt_Info*, align 16
%1 = alloca double, align 16
%2 = alloca i64, align 16
%3 = alloca i32, align 16
%4 = alloca i64, align 16
%5 = alloca [386 x i8], align 16
%6 = alloca %..string, align 16
%7 = alloca {i8*, i64}, align 16
%8 = alloca {i8*, i64}, align 16
%9 = alloca {i8*, i64}, align 16
%10 = alloca %..string, align 16
%11 = alloca %..string, align 16
%12 = alloca %..string, align 16
%13 = alloca %..string, align 16
store %fmt-11.Fmt_Info* %fi, %fmt-11.Fmt_Info** %0
store double %v, double* %1
store i64 %bit_size, i64* %2
store i32 %verb, i32* %3
; SwitchStmt
%14 = load i32, i32* %3, align 4
%15 = icmp eq i32 %14, 102
br i1 %15, label %switch.case.body-4, label %switch.case.next-1
switch.case.next-1:
%16 = icmp eq i32 %14, 70
br i1 %16, label %switch.case.body-4, label %switch.case.next-2
switch.case.next-2:
%17 = icmp eq i32 %14, 118
br i1 %17, label %switch.case.body-4, label %switch.case.next-3
switch.case.next-3:
%18 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%19 = load i32, i32* %3, align 4
call void @fmt-11.fmt_bad_verb(%fmt-11.Fmt_Info* %18, i32 %19, %Context* noalias nonnull %__.context_ptr)
br label %switch.done-28
switch.case.body-4:
; prec
store i64 3, i64* %4
; IfStmt
; SelectorExpr
%20 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%21 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %20, i64 0
%22 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %21, i64 0, i32 6
%23 = load i8, i8* %22, align 1
%24 = trunc i8 %23 to i1
br i1 %24, label %if.then-5, label %if.done-6
if.then-5:
; AssignStmt
; SelectorExpr
%25 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%26 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %25, i64 0
%27 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %26, i64 0, i32 8
%28 = load i64, i64* %27, align 8
store i64 %28, i64* %4
br label %if.done-6
if.done-6:
; buf
%29 = bitcast [386 x i8]* %5 to %..rawptr
%30 = call %..rawptr @__mem_zero(%..rawptr %29, i64 386)
store [386 x i8] zeroinitializer, [386 x i8]* %5
; str
; SelectorExpr
; SliceExpr
%31 = load [386 x i8], [386 x i8]* %5, align 1
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1af, i64 0, i32 0), i64 46}, i64 548, i64 34, i64 1, i64 386, i64 386)
%32 = getelementptr inbounds [386 x i8], [386 x i8]* %5, i64 0, i32 0
%33 = getelementptr inbounds i8, i8* %32, i64 1
%34 = sub i64 386, 1
%35 = bitcast {i8*, i64}* %7 to %..rawptr
%36 = call %..rawptr @__mem_zero(%..rawptr %35, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %7
%37 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %7, i64 0, i32 0
store i8* %33, i8** %37
%38 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %7, i64 0, i32 1
store i64 %34, i64* %38
%39 = load {i8*, i64}, {i8*, i64}* %7, align 8
%40 = load double, double* %1, align 8
%41 = load i64, i64* %4, align 8
%42 = load i64, i64* %2, align 8
%43 = bitcast {i8*, i64}* %8 to %..rawptr
%44 = call %..rawptr @__mem_zero(%..rawptr %43, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %8
store {i8*, i64} %39, {i8*, i64}* %8
%45 = call %..string @strconv-42.append_float({i8*, i64}* %8, double %40, i8 102, i64 %41, i64 %42, %Context* noalias nonnull %__.context_ptr)
store %..string %45, %..string* %6
; AssignStmt
; SliceExpr
%46 = load %..string, %..string* %6, align 8
%47 = extractvalue %..string %46, 1
%48 = add i64 %47, 1
%49 = load [386 x i8], [386 x i8]* %5, align 1
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1b0, i64 0, i32 0), i64 46}, i64 549, i64 19, i64 0, i64 %48, i64 386)
%50 = getelementptr inbounds [386 x i8], [386 x i8]* %5, i64 0, i32 0
%51 = getelementptr inbounds i8, i8* %50, i64 0
%52 = sub i64 %48, 0
%53 = bitcast {i8*, i64}* %9 to %..rawptr
%54 = call %..rawptr @__mem_zero(%..rawptr %53, i64 16)
store {i8*, i64} zeroinitializer, {i8*, i64}* %9
%55 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %9, i64 0, i32 0
store i8* %51, i8** %55
%56 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %9, i64 0, i32 1
store i64 %52, i64* %56
%57 = load {i8*, i64}, {i8*, i64}* %9, align 8
%58 = extractvalue {i8*, i64} %57, 0
%59 = extractvalue {i8*, i64} %57, 1
%60 = bitcast %..string* %10 to %..rawptr
%61 = call %..rawptr @__mem_zero(%..rawptr %60, i64 16)
store %..string zeroinitializer, %..string* %10
%62 = getelementptr inbounds %..string, %..string* %10, i64 0, i32 0
store i8* %58, i8** %62
%63 = getelementptr inbounds %..string, %..string* %10, i64 0, i32 1
store i64 %59, i64* %63
%64 = load %..string, %..string* %10, align 8
store %..string %64, %..string* %6
; IfStmt
; IndexExpr
%65 = load %..string, %..string* %6, align 8
%66 = extractvalue %..string %65, 0
%67 = extractvalue %..string %65, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1b1, i64 0, i32 0), i64 46}, i64 550, i64 10, i64 1, i64 %67)
%68 = getelementptr inbounds i8, i8* %66, i64 1
%69 = load i8, i8* %68, align 1
%70 = icmp eq i8 %69, 43
%71 = zext i1 %70 to i8
%72 = trunc i8 %71 to i1
br i1 %72, label %if.then-8, label %cmp.or-7
cmp.or-7:
; IndexExpr
%73 = load %..string, %..string* %6, align 8
%74 = extractvalue %..string %73, 0
%75 = extractvalue %..string %73, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1b2, i64 0, i32 0), i64 46}, i64 550, i64 27, i64 1, i64 %75)
%76 = getelementptr inbounds i8, i8* %74, i64 1
%77 = load i8, i8* %76, align 1
%78 = icmp eq i8 %77, 45
%79 = zext i1 %78 to i8
%80 = trunc i8 %79 to i1
br i1 %80, label %if.then-8, label %if.else-9
if.then-8:
; AssignStmt
; SliceExpr
%81 = load %..string, %..string* %6, align 8
%82 = extractvalue %..string %81, 1
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1b3, i64 0, i32 0), i64 46}, i64 551, i64 13, i64 1, i64 %82, i64 %82)
%83 = extractvalue %..string %81, 0
%84 = getelementptr inbounds i8, i8* %83, i64 1
%85 = sub i64 %82, 1
%86 = bitcast %..string* %11 to %..rawptr
%87 = call %..rawptr @__mem_zero(%..rawptr %86, i64 16)
store %..string zeroinitializer, %..string* %11
%88 = getelementptr inbounds %..string, %..string* %11, i64 0, i32 0
store i8* %84, i8** %88
%89 = getelementptr inbounds %..string, %..string* %11, i64 0, i32 1
store i64 %85, i64* %89
%90 = load %..string, %..string* %11, align 8
store %..string %90, %..string* %6
br label %if.done-10
if.else-9:
; AssignStmt
; IndexExpr
%91 = load %..string, %..string* %6, align 8
%92 = extractvalue %..string %91, 0
%93 = extractvalue %..string %91, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1b4, i64 0, i32 0), i64 46}, i64 553, i64 8, i64 0, i64 %93)
%94 = getelementptr inbounds i8, i8* %92, i64 0
store i8 43, i8* %94
br label %if.done-10
if.done-10:
; IfStmt
; SelectorExpr
%95 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%96 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %95, i64 0
%97 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %96, i64 0, i32 2
%98 = load i8, i8* %97, align 1
%99 = trunc i8 %98 to i1
br i1 %99, label %cmp.and-11, label %if.done-14
cmp.and-11:
; SelectorExpr
%100 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%101 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %100, i64 0
%102 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %101, i64 0, i32 1
%103 = load i8, i8* %102, align 1
%104 = trunc i8 %103 to i1
br i1 %104, label %if.done-14, label %cmp.and-12
cmp.and-12:
; IndexExpr
%105 = load %..string, %..string* %6, align 8
%106 = extractvalue %..string %105, 0
%107 = extractvalue %..string %105, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1b5, i64 0, i32 0), i64 46}, i64 556, i64 34, i64 0, i64 %107)
%108 = getelementptr inbounds i8, i8* %106, i64 0
%109 = load i8, i8* %108, align 1
%110 = icmp eq i8 %109, 43
%111 = zext i1 %110 to i8
%112 = trunc i8 %111 to i1
br i1 %112, label %if.then-13, label %if.done-14
if.then-13:
; AssignStmt
; IndexExpr
%113 = load %..string, %..string* %6, align 8
%114 = extractvalue %..string %113, 0
%115 = extractvalue %..string %113, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1b6, i64 0, i32 0), i64 46}, i64 557, i64 8, i64 0, i64 %115)
%116 = getelementptr inbounds i8, i8* %114, i64 0
store i8 32, i8* %116
br label %if.done-14
if.done-14:
; IfStmt
%117 = load %..string, %..string* %6, align 8
%118 = extractvalue %..string %117, 1
%119 = icmp sgt i64 %118, 1
%120 = zext i1 %119 to i8
%121 = trunc i8 %120 to i1
br i1 %121, label %cmp.and-15, label %if.done-18
cmp.and-15:
; IndexExpr
%122 = load %..string, %..string* %6, align 8
%123 = extractvalue %..string %122, 0
%124 = extractvalue %..string %122, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1b7, i64 0, i32 0), i64 46}, i64 560, i64 26, i64 1, i64 %124)
%125 = getelementptr inbounds i8, i8* %123, i64 1
%126 = load i8, i8* %125, align 1
%127 = icmp eq i8 %126, 78
%128 = zext i1 %127 to i8
%129 = trunc i8 %128 to i1
br i1 %129, label %cmp.and-16, label %if.done-18
cmp.and-16:
; IndexExpr
%130 = load %..string, %..string* %6, align 8
%131 = extractvalue %..string %130, 0
%132 = extractvalue %..string %130, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1b8, i64 0, i32 0), i64 46}, i64 560, i64 43, i64 1, i64 %132)
%133 = getelementptr inbounds i8, i8* %131, i64 1
%134 = load i8, i8* %133, align 1
%135 = icmp eq i8 %134, 73
%136 = zext i1 %135 to i8
%137 = trunc i8 %136 to i1
br i1 %137, label %if.then-17, label %if.done-18
if.then-17:
; SelectorExpr
%138 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%139 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %138, i64 0
%140 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %139, i64 0, i32 12
%141 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %140, align 8
%142 = load %..string, %..string* %6, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %141, %..string %142, %Context* noalias nonnull %__.context_ptr)
; ReturnStmt
ret void
if.done-18:
; IfStmt
; SelectorExpr
%143 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%144 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %143, i64 0
%145 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %144, i64 0, i32 1
%146 = load i8, i8* %145, align 1
%147 = trunc i8 %146 to i1
br i1 %147, label %if.then-20, label %cmp.or-19
cmp.or-19:
; IndexExpr
%148 = load %..string, %..string* %6, align 8
%149 = extractvalue %..string %148, 0
%150 = extractvalue %..string %148, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1b9, i64 0, i32 0), i64 46}, i64 565, i64 21, i64 0, i64 %150)
%151 = getelementptr inbounds i8, i8* %149, i64 0
%152 = load i8, i8* %151, align 1
%153 = icmp ne i8 %152, 43
%154 = zext i1 %153 to i8
%155 = trunc i8 %154 to i1
br i1 %155, label %if.then-20, label %if.else-26
if.then-20:
; IfStmt
; SelectorExpr
%156 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%157 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %156, i64 0
%158 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %157, i64 0, i32 3
%159 = load i8, i8* %158, align 1
%160 = trunc i8 %159 to i1
br i1 %160, label %cmp.and-21, label %if.else-24
cmp.and-21:
; SelectorExpr
%161 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%162 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %161, i64 0
%163 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %162, i64 0, i32 5
%164 = load i8, i8* %163, align 1
%165 = trunc i8 %164 to i1
br i1 %165, label %cmp.and-22, label %if.else-24
cmp.and-22:
; SelectorExpr
%166 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%167 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %166, i64 0
%168 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %167, i64 0, i32 7
%169 = load i64, i64* %168, align 8
%170 = load %..string, %..string* %6, align 8
%171 = extractvalue %..string %170, 1
%172 = icmp sgt i64 %169, %171
%173 = zext i1 %172 to i8
%174 = trunc i8 %173 to i1
br i1 %174, label %if.then-23, label %if.else-24
if.then-23:
; SelectorExpr
%175 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%176 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %175, i64 0
%177 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %176, i64 0, i32 12
%178 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %177, align 8
; IndexExpr
%179 = load %..string, %..string* %6, align 8
%180 = extractvalue %..string %179, 0
%181 = extractvalue %..string %179, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1ba, i64 0, i32 0), i64 46}, i64 567, i64 28, i64 0, i64 %181)
%182 = getelementptr inbounds i8, i8* %180, i64 0
%183 = load i8, i8* %182, align 1
call void @fmt-11.write_byte({i8*, i64, i64, %Allocator}* %178, i8 %183, %Context* noalias nonnull %__.context_ptr)
%184 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
; SelectorExpr
%185 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%186 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %185, i64 0
%187 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %186, i64 0, i32 7
%188 = load i64, i64* %187, align 8
%189 = load %..string, %..string* %6, align 8
%190 = extractvalue %..string %189, 1
%191 = sub i64 %188, %190
call void @fmt-11.fmt_write_padding(%fmt-11.Fmt_Info* %184, i64 %191, %Context* noalias nonnull %__.context_ptr)
; SelectorExpr
%192 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%193 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %192, i64 0
%194 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %193, i64 0, i32 12
%195 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %194, align 8
; SliceExpr
%196 = load %..string, %..string* %6, align 8
%197 = extractvalue %..string %196, 1
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1bb, i64 0, i32 0), i64 46}, i64 569, i64 29, i64 1, i64 %197, i64 %197)
%198 = extractvalue %..string %196, 0
%199 = getelementptr inbounds i8, i8* %198, i64 1
%200 = sub i64 %197, 1
%201 = bitcast %..string* %12 to %..rawptr
%202 = call %..rawptr @__mem_zero(%..rawptr %201, i64 16)
store %..string zeroinitializer, %..string* %12
%203 = getelementptr inbounds %..string, %..string* %12, i64 0, i32 0
store i8* %199, i8** %203
%204 = getelementptr inbounds %..string, %..string* %12, i64 0, i32 1
store i64 %200, i64* %204
%205 = load %..string, %..string* %12, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %195, %..string %205, %Context* noalias nonnull %__.context_ptr)
br label %if.done-25
if.else-24:
%206 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%207 = load %..string, %..string* %6, align 8
call void @fmt-11._pad(%fmt-11.Fmt_Info* %206, %..string %207, %Context* noalias nonnull %__.context_ptr)
br label %if.done-25
if.done-25:
br label %if.done-27
if.else-26:
%208 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
; SliceExpr
%209 = load %..string, %..string* %6, align 8
%210 = extractvalue %..string %209, 1
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1bc, i64 0, i32 0), i64 46}, i64 574, i64 16, i64 1, i64 %210, i64 %210)
%211 = extractvalue %..string %209, 0
%212 = getelementptr inbounds i8, i8* %211, i64 1
%213 = sub i64 %210, 1
%214 = bitcast %..string* %13 to %..rawptr
%215 = call %..rawptr @__mem_zero(%..rawptr %214, i64 16)
store %..string zeroinitializer, %..string* %13
%216 = getelementptr inbounds %..string, %..string* %13, i64 0, i32 0
store i8* %212, i8** %216
%217 = getelementptr inbounds %..string, %..string* %13, i64 0, i32 1
store i64 %213, i64* %217
%218 = load %..string, %..string* %13, align 8
call void @fmt-11._pad(%fmt-11.Fmt_Info* %208, %..string %218, %Context* noalias nonnull %__.context_ptr)
br label %if.done-27
if.done-27:
br label %switch.done-28
switch.done-28:
ret void
}
define void @fmt-11.fmt_string(%fmt-11.Fmt_Info* %fi, %..string %s, i32 %verb, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %fmt-11.Fmt_Info*, align 16
%1 = alloca %..string, align 16
%2 = alloca i32, align 16
%3 = alloca i8, align 16
%4 = alloca i64, align 16
%5 = alloca i64, align 16
%6 = alloca i64, align 16
%7 = alloca %..string, align 16
store %fmt-11.Fmt_Info* %fi, %fmt-11.Fmt_Info** %0
store %..string %s, %..string* %1
store i32 %verb, i32* %2
; SwitchStmt
%8 = load i32, i32* %2, align 4
%9 = icmp eq i32 %8, 115
br i1 %9, label %switch.case.body-3, label %switch.case.next-1
switch.case.next-1:
%10 = icmp eq i32 %8, 118
br i1 %10, label %switch.case.body-3, label %switch.case.next-2
switch.case.next-2:
%11 = icmp eq i32 %8, 120
br i1 %11, label %switch.fall.body-6, label %switch.case.next-4
switch.case.body-3:
; SelectorExpr
%12 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%13 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %12, i64 0
%14 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %13, i64 0, i32 12
%15 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %14, align 8
%16 = load %..string, %..string* %1, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %15, %..string %16, %Context* noalias nonnull %__.context_ptr)
br label %switch.done-15
switch.case.next-4:
%17 = icmp eq i32 %8, 88
br i1 %17, label %switch.fall.body-6, label %switch.case.next-5
switch.case.next-5:
%18 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%19 = load i32, i32* %2, align 4
call void @fmt-11.fmt_bad_verb(%fmt-11.Fmt_Info* %18, i32 %19, %Context* noalias nonnull %__.context_ptr)
br label %switch.done-15
switch.fall.body-6:
; space
; SelectorExpr
%20 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%21 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %20, i64 0
%22 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %21, i64 0, i32 2
%23 = load i8, i8* %22, align 1
store i8 %23, i8* %3
; AssignStmt
; SelectorExpr
%24 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%25 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %24, i64 0
%26 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %25, i64 0, i32 2
store i8 0, i8* %26
; DeferStmt
; RangeStmt
; i
%27 = bitcast i64* %4 to %..rawptr
%28 = call %..rawptr @__mem_zero(%..rawptr %27, i64 8)
store i64 zeroinitializer, i64* %4
%29 = bitcast i64* %5 to %..rawptr
%30 = call %..rawptr @__mem_zero(%..rawptr %29, i64 8)
store i64 zeroinitializer, i64* %5
store i64 0, i64* %5
%31 = bitcast i64* %6 to %..rawptr
%32 = call %..rawptr @__mem_zero(%..rawptr %31, i64 8)
store i64 zeroinitializer, i64* %6
store i64 0, i64* %6
br label %for.interval.loop-7
for.interval.loop-7:
%33 = load %..string, %..string* %1, align 8
%34 = extractvalue %..string %33, 1
%35 = load i64, i64* %5, align 8
%36 = icmp slt i64 %35, %34
br i1 %36, label %for.interval.body-8, label %for.interval.done-14
for.interval.body-8:
%37 = load i64, i64* %5, align 8
%38 = load i64, i64* %6, align 8
%39 = load i64, i64* %5, align 8
%40 = add i64 %39, 1
store i64 %40, i64* %5
%41 = load i64, i64* %6, align 8
%42 = add i64 %41, 1
store i64 %42, i64* %6
store i64 %37, i64* %4
; IfStmt
%43 = load i64, i64* %4, align 8
%44 = icmp sgt i64 %43, 0
%45 = zext i1 %44 to i8
%46 = trunc i8 %45 to i1
br i1 %46, label %cmp.and-9, label %if.done-11
cmp.and-9:
%47 = load i8, i8* %3, align 1
%48 = trunc i8 %47 to i1
br i1 %48, label %if.then-10, label %if.done-11
if.then-10:
; SelectorExpr
%49 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%50 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %49, i64 0
%51 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %50, i64 0, i32 12
%52 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %51, align 8
call void @fmt-11.write_byte({i8*, i64, i64, %Allocator}* %52, i8 32, %Context* noalias nonnull %__.context_ptr)
br label %if.done-11
if.done-11:
; char_set
%53 = load %..string, %..string* @fmt-11.__DIGITS_UPPER, align 8
store %..string %53, %..string* %7
; IfStmt
%54 = load i32, i32* %2, align 4
%55 = icmp eq i32 %54, 120
%56 = zext i1 %55 to i8
%57 = trunc i8 %56 to i1
br i1 %57, label %if.then-12, label %if.done-13
if.then-12:
; AssignStmt
%58 = load %..string, %..string* @fmt-11.__DIGITS_LOWER, align 8
store %..string %58, %..string* %7
br label %if.done-13
if.done-13:
%59 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
; IndexExpr
%60 = load %..string, %..string* %1, align 8
%61 = extractvalue %..string %60, 0
%62 = extractvalue %..string %60, 1
%63 = load i64, i64* %4, align 8
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1bd, i64 0, i32 0), i64 46}, i64 595, i64 23, i64 %63, i64 %62)
%64 = getelementptr inbounds i8, i8* %61, i64 %63
%65 = load i8, i8* %64, align 1
%66 = zext i8 %65 to i64
%67 = load %..string, %..string* %7, align 8
call void @fmt-11._fmt_int(%fmt-11.Fmt_Info* %59, i64 %66, i64 16, i1 false, i64 8, %..string %67, %Context* noalias nonnull %__.context_ptr)
br label %for.interval.loop-7
for.interval.done-14:
; defer
; AssignStmt
; SelectorExpr
%68 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%69 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %68, i64 0
%70 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %69, i64 0, i32 2
%71 = load i8, i8* %3, align 1
store i8 %71, i8* %70
br label %switch.done-15
switch.done-15:
ret void
}
define void @fmt-11.fmt_pointer(%fmt-11.Fmt_Info* %fi, %..rawptr %p, i32 %verb, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %fmt-11.Fmt_Info*, align 16
%1 = alloca %..rawptr, align 16
%2 = alloca i32, align 16
%3 = alloca i64, align 16
store %fmt-11.Fmt_Info* %fi, %fmt-11.Fmt_Info** %0
store %..rawptr %p, %..rawptr* %1
store i32 %verb, i32* %2
; SwitchStmt
%4 = load i32, i32* %2, align 4
%5 = icmp eq i32 %4, 112
br i1 %5, label %switch.case.body-3, label %switch.case.next-1
switch.case.next-1:
%6 = icmp eq i32 %4, 118
br i1 %6, label %switch.case.body-3, label %switch.case.next-2
switch.case.next-2:
%7 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%8 = load i32, i32* %2, align 4
call void @fmt-11.fmt_bad_verb(%fmt-11.Fmt_Info* %7, i32 %8, %Context* noalias nonnull %__.context_ptr)
br label %switch.done-7
switch.case.body-3:
; u
%9 = load %..rawptr, %..rawptr* %1, align 8
%10 = ptrtoint %..rawptr %9 to i64
%11 = bitcast i64 %10 to i64
store i64 %11, i64* %3
; IfStmt
; SelectorExpr
%12 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%13 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %12, i64 0
%14 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %13, i64 0, i32 4
%15 = load i8, i8* %14, align 1
%16 = trunc i8 %15 to i1
br i1 %16, label %cmp.or-4, label %if.then-5
cmp.or-4:
%17 = load i32, i32* %2, align 4
%18 = icmp eq i32 %17, 118
%19 = zext i1 %18 to i8
%20 = trunc i8 %19 to i1
br i1 %20, label %if.then-5, label %if.done-6
if.then-5:
; SelectorExpr
%21 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%22 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %21, i64 0
%23 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %22, i64 0, i32 12
%24 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %23, align 8
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %24, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$1be, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr)
br label %if.done-6
if.done-6:
%25 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8
%26 = load i64, i64* %3, align 8
%27 = load %..string, %..string* @fmt-11.__DIGITS_UPPER, align 8
call void @fmt-11._fmt_int(%fmt-11.Fmt_Info* %25, i64 %26, i64 16, i1 false, i64 64, %..string %27, %Context* noalias nonnull %__.context_ptr)
br label %switch.done-7
switch.done-7:
ret void
}
define {%..string, i8} @fmt-11.enum_value_to_string(%..any %v, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca %..any, align 16
%1 = alloca %Type_Info_Enum, align 16
%2 = alloca %..any, align 16
%3 = alloca %..any, align 16
%4 = alloca i32, align 16
%5 = alloca %Type_Info_Enum, align 16
%6 = alloca {%..string, i8}, align 16
%7 = alloca i8, align 16
%8 = alloca %Type_Info_Enum, align 16
%9 = alloca {%..string, i8}, align 16
%10 = alloca i16, align 16
%11 = alloca %Type_Info_Enum, align 16
%12 = alloca {%..string, i8}, align 16
%13 = alloca i32, align 16
%14 = alloca %Type_Info_Enum, align 16
%15 = alloca {%..string, i8}, align 16
%16 = alloca i64, align 16
%17 = alloca %Type_Info_Enum, align 16
%18 = alloca {%..string, i8}, align 16
%19 = alloca i64, align 16
%20 = alloca %Type_Info_Enum, align 16
%21 = alloca {%..string, i8}, align 16
%22 = alloca i8, align 16
%23 = alloca %Type_Info_Enum, align 16
%24 = alloca {%..string, i8}, align 16
%25 = alloca i16, align 16
%26 = alloca %Type_Info_Enum, align 16
%27 = alloca {%..string, i8}, align 16
%28 = alloca i32, align 16
%29 = alloca %Type_Info_Enum, align 16
%30 = alloca {%..string, i8}, align 16
%31 = alloca i64, align 16
%32 = alloca %Type_Info_Enum, align 16
%33 = alloca {%..string, i8}, align 16
%34 = alloca i64, align 16
%35 = alloca %Type_Info_Enum, align 16
%36 = alloca {%..string, i8}, align 16
%37 = alloca i64, align 16
%38 = alloca %Type_Info_Enum, align 16
%39 = alloca {%..string, i8}, align 16
%40 = alloca float, align 16
%41 = alloca %Type_Info_Enum, align 16
%42 = alloca {%..string, i8}, align 16
%43 = alloca double, align 16
%44 = alloca %Type_Info_Enum, align 16
%45 = alloca {%..string, i8}, align 16
%46 = alloca {[0 x <8 x i8>], [72 x i8], i8}, align 16
%47 = alloca {%..string, i8}, align 16
%48 = alloca {%..string, i8}, align 16
store %..any %v, %..any* %0
; AssignStmt
; SelectorExpr
%49 = getelementptr inbounds %..any, %..any* %0, i64 0, i32 1
; SelectorExpr
%50 = getelementptr inbounds %..any, %..any* %0, i64 0, i32 1
%51 = load %Type_Info*, %Type_Info** %50, align 8
%52 = call %Type_Info* @type_info_base(%Type_Info* %51, %Context* noalias nonnull %__.context_ptr)
store %Type_Info* %52, %Type_Info** %49
; TypeSwitchStmt
; SelectorExpr
; SelectorExpr
%53 = getelementptr inbounds %..any, %..any* %0, i64 0, i32 1
%54 = load %Type_Info*, %Type_Info** %53, align 8
%55 = getelementptr inbounds %Type_Info, %Type_Info* %54, i64 0
%56 = getelementptr inbounds %Type_Info, %Type_Info* %55, i64 0, i32 2
%57 = load {[0 x <8 x i8>], [72 x i8], i8}, {[0 x <8 x i8>], [72 x i8], i8}* %56, align 8
; get union's tag
%58 = getelementptr inbounds {[0 x <8 x i8>], [72 x i8], i8}, {[0 x <8 x i8>], [72 x i8], i8}* %56, i64 0, i32 2 ; UnionTagPtr
%59 = load i8, i8* %58, align 1
%60 = bitcast {[0 x <8 x i8>], [72 x i8], i8}* %56 to %..rawptr
%61 = icmp eq i8 %59, 17
br i1 %61, label %typeswitch.body-2, label %typeswitch.next-1
typeswitch.next-1:
store {[0 x <8 x i8>], [72 x i8], i8} %57, {[0 x <8 x i8>], [72 x i8], i8}* %46
; ReturnStmt
%62 = bitcast {%..string, i8}* %47 to %..rawptr
%63 = call %..rawptr @__mem_zero(%..rawptr %62, i64 24)
store {%..string, i8} zeroinitializer, {%..string, i8}* %47
%64 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %47, i64 0, i32 0
store %..string zeroinitializer, %..string* %64
%65 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %47, i64 0, i32 1
store i8 0, i8* %65
%66 = load {%..string, i8}, {%..string, i8}* %47, align 8
ret {%..string, i8} %66
typeswitch.body-2:
%67 = bitcast %..rawptr %60 to %Type_Info_Enum*
%68 = load %Type_Info_Enum, %Type_Info_Enum* %67, align 8
store %Type_Info_Enum %68, %Type_Info_Enum* %1
; a
; CompoundLit
%69 = bitcast %..any* %3 to %..rawptr
%70 = call %..rawptr @__mem_zero(%..rawptr %69, i64 16)
store %..any zeroinitializer, %..any* %3
store %..any zeroinitializer, %..any* %3
; SelectorExpr
%71 = getelementptr inbounds %..any, %..any* %0, i64 0, i32 0
%72 = load %..rawptr, %..rawptr* %71, align 8
%73 = getelementptr inbounds %..any, %..any* %3, i64 0, i32 0
store %..rawptr %72, %..rawptr* %73
; SelectorExpr
%74 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %1, i64 0, i32 0
%75 = load %Type_Info*, %Type_Info** %74, align 8
%76 = call %Type_Info* @type_info_base(%Type_Info* %75, %Context* noalias nonnull %__.context_ptr)
%77 = getelementptr inbounds %..any, %..any* %3, i64 0, i32 1
store %Type_Info* %76, %Type_Info** %77
%78 = load %..any, %..any* %3, align 8
store %..any %78, %..any* %2
; TypeSwitchStmt
%79 = load %..any, %..any* %2, align 8
%80 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 1
%81 = load %Type_Info*, %Type_Info** %80, align 8
%82 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 66
%83 = icmp eq %Type_Info* %81, %82
br i1 %83, label %typeswitch.body-4, label %typeswitch.next-3
typeswitch.next-3:
%84 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 1
%85 = load %Type_Info*, %Type_Info** %84, align 8
%86 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 67
%87 = icmp eq %Type_Info* %85, %86
br i1 %87, label %typeswitch.body-6, label %typeswitch.next-5
typeswitch.body-4:
%88 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 0
%89 = load %..rawptr, %..rawptr* %88, align 8
%90 = bitcast %..rawptr %89 to i32*
%91 = load i32, i32* %90, align 4
store i32 %91, i32* %4
; ReturnStmt
%92 = load i32, i32* %4, align 4
%93 = load %Type_Info_Enum, %Type_Info_Enum* %1, align 8
%94 = bitcast %Type_Info_Enum* %5 to %..rawptr
%95 = call %..rawptr @__mem_zero(%..rawptr %94, i64 48)
store %Type_Info_Enum zeroinitializer, %Type_Info_Enum* %5
store %Type_Info_Enum %93, %Type_Info_Enum* %5
%96 = call {%..string, i8} @fmt-11.enum_value_to_string.get_str-0(i32 %92, %Type_Info_Enum* %5, %Context* noalias nonnull %__.context_ptr)
%97 = extractvalue {%..string, i8} %96, 0
%98 = extractvalue {%..string, i8} %96, 1
%99 = bitcast {%..string, i8}* %6 to %..rawptr
%100 = call %..rawptr @__mem_zero(%..rawptr %99, i64 24)
store {%..string, i8} zeroinitializer, {%..string, i8}* %6
%101 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %6, i64 0, i32 0
store %..string %97, %..string* %101
%102 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %6, i64 0, i32 1
store i8 %98, i8* %102
%103 = load {%..string, i8}, {%..string, i8}* %6, align 8
ret {%..string, i8} %103
typeswitch.next-5:
%104 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 1
%105 = load %Type_Info*, %Type_Info** %104, align 8
%106 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 68
%107 = icmp eq %Type_Info* %105, %106
br i1 %107, label %typeswitch.body-8, label %typeswitch.next-7
typeswitch.body-6:
%108 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 0
%109 = load %..rawptr, %..rawptr* %108, align 8
%110 = bitcast %..rawptr %109 to i8*
%111 = load i8, i8* %110, align 1
store i8 %111, i8* %7
; ReturnStmt
%112 = load i8, i8* %7, align 1
%113 = load %Type_Info_Enum, %Type_Info_Enum* %1, align 8
%114 = bitcast %Type_Info_Enum* %8 to %..rawptr
%115 = call %..rawptr @__mem_zero(%..rawptr %114, i64 48)
store %Type_Info_Enum zeroinitializer, %Type_Info_Enum* %8
store %Type_Info_Enum %113, %Type_Info_Enum* %8
%116 = call {%..string, i8} @fmt-11.enum_value_to_string.get_str-1(i8 %112, %Type_Info_Enum* %8, %Context* noalias nonnull %__.context_ptr)
%117 = extractvalue {%..string, i8} %116, 0
%118 = extractvalue {%..string, i8} %116, 1
%119 = bitcast {%..string, i8}* %9 to %..rawptr
%120 = call %..rawptr @__mem_zero(%..rawptr %119, i64 24)
store {%..string, i8} zeroinitializer, {%..string, i8}* %9
%121 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %9, i64 0, i32 0
store %..string %117, %..string* %121
%122 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %9, i64 0, i32 1
store i8 %118, i8* %122
%123 = load {%..string, i8}, {%..string, i8}* %9, align 8
ret {%..string, i8} %123
typeswitch.next-7:
%124 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 1
%125 = load %Type_Info*, %Type_Info** %124, align 8
%126 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 11
%127 = icmp eq %Type_Info* %125, %126
br i1 %127, label %typeswitch.body-10, label %typeswitch.next-9
typeswitch.body-8:
%128 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 0
%129 = load %..rawptr, %..rawptr* %128, align 8
%130 = bitcast %..rawptr %129 to i16*
%131 = load i16, i16* %130, align 2
store i16 %131, i16* %10
; ReturnStmt
%132 = load i16, i16* %10, align 2
%133 = load %Type_Info_Enum, %Type_Info_Enum* %1, align 8
%134 = bitcast %Type_Info_Enum* %11 to %..rawptr
%135 = call %..rawptr @__mem_zero(%..rawptr %134, i64 48)
store %Type_Info_Enum zeroinitializer, %Type_Info_Enum* %11
store %Type_Info_Enum %133, %Type_Info_Enum* %11
%136 = call {%..string, i8} @fmt-11.enum_value_to_string.get_str-2(i16 %132, %Type_Info_Enum* %11, %Context* noalias nonnull %__.context_ptr)
%137 = extractvalue {%..string, i8} %136, 0
%138 = extractvalue {%..string, i8} %136, 1
%139 = bitcast {%..string, i8}* %12 to %..rawptr
%140 = call %..rawptr @__mem_zero(%..rawptr %139, i64 24)
store {%..string, i8} zeroinitializer, {%..string, i8}* %12
%141 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %12, i64 0, i32 0
store %..string %137, %..string* %141
%142 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %12, i64 0, i32 1
store i8 %138, i8* %142
%143 = load {%..string, i8}, {%..string, i8}* %12, align 8
ret {%..string, i8} %143
typeswitch.next-9:
%144 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 1
%145 = load %Type_Info*, %Type_Info** %144, align 8
%146 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 69
%147 = icmp eq %Type_Info* %145, %146
br i1 %147, label %typeswitch.body-12, label %typeswitch.next-11
typeswitch.body-10:
%148 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 0
%149 = load %..rawptr, %..rawptr* %148, align 8
%150 = bitcast %..rawptr %149 to i32*
%151 = load i32, i32* %150, align 4
store i32 %151, i32* %13
; ReturnStmt
%152 = load i32, i32* %13, align 4
%153 = load %Type_Info_Enum, %Type_Info_Enum* %1, align 8
%154 = bitcast %Type_Info_Enum* %14 to %..rawptr
%155 = call %..rawptr @__mem_zero(%..rawptr %154, i64 48)
store %Type_Info_Enum zeroinitializer, %Type_Info_Enum* %14
store %Type_Info_Enum %153, %Type_Info_Enum* %14
%156 = call {%..string, i8} @fmt-11.enum_value_to_string.get_str-3(i32 %152, %Type_Info_Enum* %14, %Context* noalias nonnull %__.context_ptr)
%157 = extractvalue {%..string, i8} %156, 0
%158 = extractvalue {%..string, i8} %156, 1
%159 = bitcast {%..string, i8}* %15 to %..rawptr
%160 = call %..rawptr @__mem_zero(%..rawptr %159, i64 24)
store {%..string, i8} zeroinitializer, {%..string, i8}* %15
%161 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %15, i64 0, i32 0
store %..string %157, %..string* %161
%162 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %15, i64 0, i32 1
store i8 %158, i8* %162
%163 = load {%..string, i8}, {%..string, i8}* %15, align 8
ret {%..string, i8} %163
typeswitch.next-11:
%164 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 1
%165 = load %Type_Info*, %Type_Info** %164, align 8
%166 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 6
%167 = icmp eq %Type_Info* %165, %166
br i1 %167, label %typeswitch.body-14, label %typeswitch.next-13
typeswitch.body-12:
%168 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 0
%169 = load %..rawptr, %..rawptr* %168, align 8
%170 = bitcast %..rawptr %169 to i64*
%171 = load i64, i64* %170, align 8
store i64 %171, i64* %16
; ReturnStmt
%172 = load i64, i64* %16, align 8
%173 = load %Type_Info_Enum, %Type_Info_Enum* %1, align 8
%174 = bitcast %Type_Info_Enum* %17 to %..rawptr
%175 = call %..rawptr @__mem_zero(%..rawptr %174, i64 48)
store %Type_Info_Enum zeroinitializer, %Type_Info_Enum* %17
store %Type_Info_Enum %173, %Type_Info_Enum* %17
%176 = call {%..string, i8} @fmt-11.enum_value_to_string.get_str-4(i64 %172, %Type_Info_Enum* %17, %Context* noalias nonnull %__.context_ptr)
%177 = extractvalue {%..string, i8} %176, 0
%178 = extractvalue {%..string, i8} %176, 1
%179 = bitcast {%..string, i8}* %18 to %..rawptr
%180 = call %..rawptr @__mem_zero(%..rawptr %179, i64 24)
store {%..string, i8} zeroinitializer, {%..string, i8}* %18
%181 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %18, i64 0, i32 0
store %..string %177, %..string* %181
%182 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %18, i64 0, i32 1
store i8 %178, i8* %182
%183 = load {%..string, i8}, {%..string, i8}* %18, align 8
ret {%..string, i8} %183
typeswitch.next-13:
%184 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 1
%185 = load %Type_Info*, %Type_Info** %184, align 8
%186 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 20
%187 = icmp eq %Type_Info* %185, %186
br i1 %187, label %typeswitch.body-16, label %typeswitch.next-15
typeswitch.body-14:
%188 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 0
%189 = load %..rawptr, %..rawptr* %188, align 8
%190 = bitcast %..rawptr %189 to i64*
%191 = load i64, i64* %190, align 8
store i64 %191, i64* %19
; ReturnStmt
%192 = load i64, i64* %19, align 8
%193 = load %Type_Info_Enum, %Type_Info_Enum* %1, align 8
%194 = bitcast %Type_Info_Enum* %20 to %..rawptr
%195 = call %..rawptr @__mem_zero(%..rawptr %194, i64 48)
store %Type_Info_Enum zeroinitializer, %Type_Info_Enum* %20
store %Type_Info_Enum %193, %Type_Info_Enum* %20
%196 = call {%..string, i8} @fmt-11.enum_value_to_string.get_str-5(i64 %192, %Type_Info_Enum* %20, %Context* noalias nonnull %__.context_ptr)
%197 = extractvalue {%..string, i8} %196, 0
%198 = extractvalue {%..string, i8} %196, 1
%199 = bitcast {%..string, i8}* %21 to %..rawptr
%200 = call %..rawptr @__mem_zero(%..rawptr %199, i64 24)
store {%..string, i8} zeroinitializer, {%..string, i8}* %21
%201 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %21, i64 0, i32 0
store %..string %197, %..string* %201
%202 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %21, i64 0, i32 1
store i8 %198, i8* %202
%203 = load {%..string, i8}, {%..string, i8}* %21, align 8
ret {%..string, i8} %203
typeswitch.next-15:
%204 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 1
%205 = load %Type_Info*, %Type_Info** %204, align 8
%206 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 70
%207 = icmp eq %Type_Info* %205, %206
br i1 %207, label %typeswitch.body-18, label %typeswitch.next-17
typeswitch.body-16:
%208 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 0
%209 = load %..rawptr, %..rawptr* %208, align 8
%210 = bitcast %..rawptr %209 to i8*
%211 = load i8, i8* %210, align 1
store i8 %211, i8* %22
; ReturnStmt
%212 = load i8, i8* %22, align 1
%213 = load %Type_Info_Enum, %Type_Info_Enum* %1, align 8
%214 = bitcast %Type_Info_Enum* %23 to %..rawptr
%215 = call %..rawptr @__mem_zero(%..rawptr %214, i64 48)
store %Type_Info_Enum zeroinitializer, %Type_Info_Enum* %23
store %Type_Info_Enum %213, %Type_Info_Enum* %23
%216 = call {%..string, i8} @fmt-11.enum_value_to_string.get_str-6(i8 %212, %Type_Info_Enum* %23, %Context* noalias nonnull %__.context_ptr)
%217 = extractvalue {%..string, i8} %216, 0
%218 = extractvalue {%..string, i8} %216, 1
%219 = bitcast {%..string, i8}* %24 to %..rawptr
%220 = call %..rawptr @__mem_zero(%..rawptr %219, i64 24)
store {%..string, i8} zeroinitializer, {%..string, i8}* %24
%221 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %24, i64 0, i32 0
store %..string %217, %..string* %221
%222 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %24, i64 0, i32 1
store i8 %218, i8* %222
%223 = load {%..string, i8}, {%..string, i8}* %24, align 8
ret {%..string, i8} %223
typeswitch.next-17:
%224 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 1
%225 = load %Type_Info*, %Type_Info** %224, align 8
%226 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 3
%227 = icmp eq %Type_Info* %225, %226
br i1 %227, label %typeswitch.body-20, label %typeswitch.next-19
typeswitch.body-18:
%228 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 0
%229 = load %..rawptr, %..rawptr* %228, align 8
%230 = bitcast %..rawptr %229 to i16*
%231 = load i16, i16* %230, align 2
store i16 %231, i16* %25
; ReturnStmt
%232 = load i16, i16* %25, align 2
%233 = load %Type_Info_Enum, %Type_Info_Enum* %1, align 8
%234 = bitcast %Type_Info_Enum* %26 to %..rawptr
%235 = call %..rawptr @__mem_zero(%..rawptr %234, i64 48)
store %Type_Info_Enum zeroinitializer, %Type_Info_Enum* %26
store %Type_Info_Enum %233, %Type_Info_Enum* %26
%236 = call {%..string, i8} @fmt-11.enum_value_to_string.get_str-7(i16 %232, %Type_Info_Enum* %26, %Context* noalias nonnull %__.context_ptr)
%237 = extractvalue {%..string, i8} %236, 0
%238 = extractvalue {%..string, i8} %236, 1
%239 = bitcast {%..string, i8}* %27 to %..rawptr
%240 = call %..rawptr @__mem_zero(%..rawptr %239, i64 24)
store {%..string, i8} zeroinitializer, {%..string, i8}* %27
%241 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %27, i64 0, i32 0
store %..string %237, %..string* %241
%242 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %27, i64 0, i32 1
store i8 %238, i8* %242
%243 = load {%..string, i8}, {%..string, i8}* %27, align 8
ret {%..string, i8} %243
typeswitch.next-19:
%244 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 1
%245 = load %Type_Info*, %Type_Info** %244, align 8
%246 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 71
%247 = icmp eq %Type_Info* %245, %246
br i1 %247, label %typeswitch.body-22, label %typeswitch.next-21
typeswitch.body-20:
%248 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 0
%249 = load %..rawptr, %..rawptr* %248, align 8
%250 = bitcast %..rawptr %249 to i32*
%251 = load i32, i32* %250, align 4
store i32 %251, i32* %28
; ReturnStmt
%252 = load i32, i32* %28, align 4
%253 = load %Type_Info_Enum, %Type_Info_Enum* %1, align 8
%254 = bitcast %Type_Info_Enum* %29 to %..rawptr
%255 = call %..rawptr @__mem_zero(%..rawptr %254, i64 48)
store %Type_Info_Enum zeroinitializer, %Type_Info_Enum* %29
store %Type_Info_Enum %253, %Type_Info_Enum* %29
%256 = call {%..string, i8} @fmt-11.enum_value_to_string.get_str-8(i32 %252, %Type_Info_Enum* %29, %Context* noalias nonnull %__.context_ptr)
%257 = extractvalue {%..string, i8} %256, 0
%258 = extractvalue {%..string, i8} %256, 1
%259 = bitcast {%..string, i8}* %30 to %..rawptr
%260 = call %..rawptr @__mem_zero(%..rawptr %259, i64 24)
store {%..string, i8} zeroinitializer, {%..string, i8}* %30
%261 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %30, i64 0, i32 0
store %..string %257, %..string* %261
%262 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %30, i64 0, i32 1
store i8 %258, i8* %262
%263 = load {%..string, i8}, {%..string, i8}* %30, align 8
ret {%..string, i8} %263
typeswitch.next-21:
%264 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 1
%265 = load %Type_Info*, %Type_Info** %264, align 8
%266 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 72
%267 = icmp eq %Type_Info* %265, %266
br i1 %267, label %typeswitch.body-24, label %typeswitch.next-23
typeswitch.body-22:
%268 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 0
%269 = load %..rawptr, %..rawptr* %268, align 8
%270 = bitcast %..rawptr %269 to i64*
%271 = load i64, i64* %270, align 8
store i64 %271, i64* %31
; ReturnStmt
%272 = load i64, i64* %31, align 8
%273 = load %Type_Info_Enum, %Type_Info_Enum* %1, align 8
%274 = bitcast %Type_Info_Enum* %32 to %..rawptr
%275 = call %..rawptr @__mem_zero(%..rawptr %274, i64 48)
store %Type_Info_Enum zeroinitializer, %Type_Info_Enum* %32
store %Type_Info_Enum %273, %Type_Info_Enum* %32
%276 = call {%..string, i8} @fmt-11.enum_value_to_string.get_str-9(i64 %272, %Type_Info_Enum* %32, %Context* noalias nonnull %__.context_ptr)
%277 = extractvalue {%..string, i8} %276, 0
%278 = extractvalue {%..string, i8} %276, 1
%279 = bitcast {%..string, i8}* %33 to %..rawptr
%280 = call %..rawptr @__mem_zero(%..rawptr %279, i64 24)
store {%..string, i8} zeroinitializer, {%..string, i8}* %33
%281 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %33, i64 0, i32 0
store %..string %277, %..string* %281
%282 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %33, i64 0, i32 1
store i8 %278, i8* %282
%283 = load {%..string, i8}, {%..string, i8}* %33, align 8
ret {%..string, i8} %283
typeswitch.next-23:
%284 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 1
%285 = load %Type_Info*, %Type_Info** %284, align 8
%286 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 55
%287 = icmp eq %Type_Info* %285, %286
br i1 %287, label %typeswitch.body-26, label %typeswitch.next-25
typeswitch.body-24:
%288 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 0
%289 = load %..rawptr, %..rawptr* %288, align 8
%290 = bitcast %..rawptr %289 to i64*
%291 = load i64, i64* %290, align 8
store i64 %291, i64* %34
; ReturnStmt
%292 = load i64, i64* %34, align 8
%293 = load %Type_Info_Enum, %Type_Info_Enum* %1, align 8
%294 = bitcast %Type_Info_Enum* %35 to %..rawptr
%295 = call %..rawptr @__mem_zero(%..rawptr %294, i64 48)
store %Type_Info_Enum zeroinitializer, %Type_Info_Enum* %35
store %Type_Info_Enum %293, %Type_Info_Enum* %35
%296 = call {%..string, i8} @fmt-11.enum_value_to_string.get_str-10(i64 %292, %Type_Info_Enum* %35, %Context* noalias nonnull %__.context_ptr)
%297 = extractvalue {%..string, i8} %296, 0
%298 = extractvalue {%..string, i8} %296, 1
%299 = bitcast {%..string, i8}* %36 to %..rawptr
%300 = call %..rawptr @__mem_zero(%..rawptr %299, i64 24)
store {%..string, i8} zeroinitializer, {%..string, i8}* %36
%301 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %36, i64 0, i32 0
store %..string %297, %..string* %301
%302 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %36, i64 0, i32 1
store i8 %298, i8* %302
%303 = load {%..string, i8}, {%..string, i8}* %36, align 8
ret {%..string, i8} %303
typeswitch.next-25:
%304 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 1
%305 = load %Type_Info*, %Type_Info** %304, align 8
%306 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 73
%307 = icmp eq %Type_Info* %305, %306
br i1 %307, label %typeswitch.body-28, label %typeswitch.next-27
typeswitch.body-26:
%308 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 0
%309 = load %..rawptr, %..rawptr* %308, align 8
%310 = bitcast %..rawptr %309 to i64*
%311 = load i64, i64* %310, align 8
store i64 %311, i64* %37
; ReturnStmt
%312 = load i64, i64* %37, align 8
%313 = load %Type_Info_Enum, %Type_Info_Enum* %1, align 8
%314 = bitcast %Type_Info_Enum* %38 to %..rawptr
%315 = call %..rawptr @__mem_zero(%..rawptr %314, i64 48)
store %Type_Info_Enum zeroinitializer, %Type_Info_Enum* %38
store %Type_Info_Enum %313, %Type_Info_Enum* %38
%316 = call {%..string, i8} @fmt-11.enum_value_to_string.get_str-11(i64 %312, %Type_Info_Enum* %38, %Context* noalias nonnull %__.context_ptr)
%317 = extractvalue {%..string, i8} %316, 0
%318 = extractvalue {%..string, i8} %316, 1
%319 = bitcast {%..string, i8}* %39 to %..rawptr
%320 = call %..rawptr @__mem_zero(%..rawptr %319, i64 24)
store {%..string, i8} zeroinitializer, {%..string, i8}* %39
%321 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %39, i64 0, i32 0
store %..string %317, %..string* %321
%322 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %39, i64 0, i32 1
store i8 %318, i8* %322
%323 = load {%..string, i8}, {%..string, i8}* %39, align 8
ret {%..string, i8} %323
typeswitch.next-27:
%324 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 1
%325 = load %Type_Info*, %Type_Info** %324, align 8
%326 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 74
%327 = icmp eq %Type_Info* %325, %326
br i1 %327, label %typeswitch.body-30, label %typeswitch.next-29
typeswitch.body-28:
%328 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 0
%329 = load %..rawptr, %..rawptr* %328, align 8
%330 = bitcast %..rawptr %329 to float*
%331 = load float, float* %330, align 4
store float %331, float* %40
; ReturnStmt
%332 = load float, float* %40, align 4
%333 = load %Type_Info_Enum, %Type_Info_Enum* %1, align 8
%334 = bitcast %Type_Info_Enum* %41 to %..rawptr
%335 = call %..rawptr @__mem_zero(%..rawptr %334, i64 48)
store %Type_Info_Enum zeroinitializer, %Type_Info_Enum* %41
store %Type_Info_Enum %333, %Type_Info_Enum* %41
%336 = call {%..string, i8} @fmt-11.enum_value_to_string.get_str-12(float %332, %Type_Info_Enum* %41, %Context* noalias nonnull %__.context_ptr)
%337 = extractvalue {%..string, i8} %336, 0
%338 = extractvalue {%..string, i8} %336, 1
%339 = bitcast {%..string, i8}* %42 to %..rawptr
%340 = call %..rawptr @__mem_zero(%..rawptr %339, i64 24)
store {%..string, i8} zeroinitializer, {%..string, i8}* %42
%341 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %42, i64 0, i32 0
store %..string %337, %..string* %341
%342 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %42, i64 0, i32 1
store i8 %338, i8* %342
%343 = load {%..string, i8}, {%..string, i8}* %42, align 8
ret {%..string, i8} %343
typeswitch.next-29:
; ReturnStmt
%344 = bitcast {%..string, i8}* %48 to %..rawptr
%345 = call %..rawptr @__mem_zero(%..rawptr %344, i64 24)
store {%..string, i8} zeroinitializer, {%..string, i8}* %48
%346 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %48, i64 0, i32 0
store %..string zeroinitializer, %..string* %346
%347 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %48, i64 0, i32 1
store i8 0, i8* %347
%348 = load {%..string, i8}, {%..string, i8}* %48, align 8
ret {%..string, i8} %348
typeswitch.body-30:
%349 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 0
%350 = load %..rawptr, %..rawptr* %349, align 8
%351 = bitcast %..rawptr %350 to double*
%352 = load double, double* %351, align 8
store double %352, double* %43
; ReturnStmt
%353 = load double, double* %43, align 8
%354 = load %Type_Info_Enum, %Type_Info_Enum* %1, align 8
%355 = bitcast %Type_Info_Enum* %44 to %..rawptr
%356 = call %..rawptr @__mem_zero(%..rawptr %355, i64 48)
store %Type_Info_Enum zeroinitializer, %Type_Info_Enum* %44
store %Type_Info_Enum %354, %Type_Info_Enum* %44
%357 = call {%..string, i8} @fmt-11.enum_value_to_string.get_str-13(double %353, %Type_Info_Enum* %44, %Context* noalias nonnull %__.context_ptr)
%358 = extractvalue {%..string, i8} %357, 0
%359 = extractvalue {%..string, i8} %357, 1
%360 = bitcast {%..string, i8}* %45 to %..rawptr
%361 = call %..rawptr @__mem_zero(%..rawptr %360, i64 24)
store {%..string, i8} zeroinitializer, {%..string, i8}* %45
%362 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %45, i64 0, i32 0
store %..string %358, %..string* %362
%363 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %45, i64 0, i32 1
store i8 %359, i8* %363
%364 = load {%..string, i8}, {%..string, i8}* %45, align 8
ret {%..string, i8} %364
}
define {%..string, i8} @fmt-11.enum_value_to_string.get_str-0(i32 %i, %Type_Info_Enum* %e, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca i32, align 16
%1 = alloca %Type_Info_Enum_Value, align 16
%2 = alloca i64, align 16
%3 = alloca i64, align 16
%4 = alloca i64, align 16
%5 = alloca i32, align 16
%6 = alloca i8, align 16
%7 = alloca {i32, i8}, align 16
%8 = alloca {%..string, i8}, align 16
%9 = alloca {%..string, i8}, align 16
%10 = alloca %Type_Info_Enum_Value, align 16
%11 = alloca i64, align 16
%12 = alloca i64, align 16
%13 = alloca i64, align 16
%14 = alloca i32, align 16
%15 = alloca i8, align 16
%16 = alloca {i32, i8}, align 16
%17 = alloca {%..string, i8}, align 16
%18 = alloca {%..string, i8}, align 16
store i32 %i, i32* %0
%19 = load %Type_Info_Enum, %Type_Info_Enum* %e, align 8
; IfStmt
; SelectorExpr
; SelectorExpr
%20 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 0
%21 = load %Type_Info*, %Type_Info** %20, align 8
%22 = call i8 @types-41.is_string(%Type_Info* %21, %Context* noalias nonnull %__.context_ptr)
%23 = trunc i8 %22 to i1
br i1 %23, label %if.then-1, label %if.else-10
if.then-1:
; RangeStmt
; val
%24 = bitcast %Type_Info_Enum_Value* %1 to %..rawptr
%25 = call %..rawptr @__mem_zero(%..rawptr %24, i64 16)
store %Type_Info_Enum_Value zeroinitializer, %Type_Info_Enum_Value* %1
; idx
%26 = bitcast i64* %2 to %..rawptr
%27 = call %..rawptr @__mem_zero(%..rawptr %26, i64 8)
store i64 zeroinitializer, i64* %2
; SelectorExpr
%28 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 2
%29 = load {%Type_Info_Enum_Value*, i64}, {%Type_Info_Enum_Value*, i64}* %28, align 8
%30 = bitcast i64* %3 to %..rawptr
%31 = call %..rawptr @__mem_zero(%..rawptr %30, i64 8)
store i64 zeroinitializer, i64* %3
%32 = extractvalue {%Type_Info_Enum_Value*, i64} %29, 1
store i64 %32, i64* %3
%33 = bitcast i64* %4 to %..rawptr
%34 = call %..rawptr @__mem_zero(%..rawptr %33, i64 8)
store i64 zeroinitializer, i64* %4
store i64 -1, i64* %4
br label %for.index.loop-2
for.index.loop-2:
%35 = load i64, i64* %4, align 8
%36 = add i64 %35, 1
store i64 %36, i64* %4
%37 = load i64, i64* %3, align 8
%38 = icmp slt i64 %36, %37
br i1 %38, label %for.index.body-3, label %for.index.done-9
for.index.body-3:
%39 = load i64, i64* %4, align 8
%40 = extractvalue {%Type_Info_Enum_Value*, i64} %29, 0
%41 = getelementptr inbounds %Type_Info_Enum_Value, %Type_Info_Enum_Value* %40, i64 %39
%42 = load %Type_Info_Enum_Value, %Type_Info_Enum_Value* %41, align 8
store %Type_Info_Enum_Value %42, %Type_Info_Enum_Value* %1
store i64 %39, i64* %2
; IfStmt
; v
; ok
%43 = load %Type_Info_Enum_Value, %Type_Info_Enum_Value* %1, align 8
; cast - union_cast
%44 = bitcast {i32, i8}* %7 to %..rawptr
%45 = call %..rawptr @__mem_zero(%..rawptr %44, i64 8)
store {i32, i8} zeroinitializer, {i32, i8}* %7
%46 = getelementptr inbounds %Type_Info_Enum_Value, %Type_Info_Enum_Value* %1, i64 0, i32 2 ; UnionTagPtr
%47 = load i8, i8* %46, align 1
%48 = icmp eq i8 %47, 1
br i1 %48, label %union_cast.ok-4, label %union_cast.end-5
union_cast.ok-4:
%49 = getelementptr inbounds {i32, i8}, {i32, i8}* %7, i64 0, i32 0
%50 = getelementptr inbounds {i32, i8}, {i32, i8}* %7, i64 0, i32 1
%51 = bitcast %Type_Info_Enum_Value* %1 to i32*
%52 = load i32, i32* %51, align 4
store i32 %52, i32* %49
store i8 1, i8* %50
br label %union_cast.end-5
union_cast.end-5:
%53 = load {i32, i8}, {i32, i8}* %7, align 4
%54 = extractvalue {i32, i8} %53, 0
%55 = extractvalue {i32, i8} %53, 1
store i32 %54, i32* %5
store i8 %55, i8* %6
%56 = load i8, i8* %6, align 1
%57 = trunc i8 %56 to i1
br i1 %57, label %cmp.and-6, label %if.done-8
cmp.and-6:
%58 = load i32, i32* %5, align 4
%59 = load i32, i32* %0, align 4
%60 = icmp eq i32 %58, %59
%61 = zext i1 %60 to i8
%62 = trunc i8 %61 to i1
br i1 %62, label %if.then-7, label %if.done-8
if.then-7:
; ReturnStmt
; IndexExpr
; SelectorExpr
%63 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 1
%64 = load {%..string*, i64}, {%..string*, i64}* %63, align 8
%65 = extractvalue {%..string*, i64} %64, 0
%66 = load i64, i64* %2, align 8
%67 = extractvalue {%..string*, i64} %64, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1bf, i64 0, i32 0), i64 46}, i64 626, i64 22, i64 %66, i64 %67)
%68 = getelementptr inbounds %..string, %..string* %65, i64 %66
%69 = load %..string, %..string* %68, align 8
%70 = bitcast {%..string, i8}* %8 to %..rawptr
%71 = call %..rawptr @__mem_zero(%..rawptr %70, i64 24)
store {%..string, i8} zeroinitializer, {%..string, i8}* %8
%72 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %8, i64 0, i32 0
store %..string %69, %..string* %72
%73 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %8, i64 0, i32 1
store i8 1, i8* %73
%74 = load {%..string, i8}, {%..string, i8}* %8, align 8
ret {%..string, i8} %74
if.done-8:
br label %for.index.loop-2
for.index.done-9:
br label %if.done-21
if.else-10:
; IfStmt
; SelectorExpr
%75 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 2
%76 = load {%Type_Info_Enum_Value*, i64}, {%Type_Info_Enum_Value*, i64}* %75, align 8
%77 = extractvalue {%Type_Info_Enum_Value*, i64} %76, 1
%78 = icmp eq i64 %77, 0
%79 = zext i1 %78 to i8
%80 = trunc i8 %79 to i1
br i1 %80, label %if.then-11, label %if.else-12
if.then-11:
; ReturnStmt
%81 = bitcast {%..string, i8}* %9 to %..rawptr
%82 = call %..rawptr @__mem_zero(%..rawptr %81, i64 24)
store {%..string, i8} zeroinitializer, {%..string, i8}* %9
%83 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %9, i64 0, i32 0
store %..string zeroinitializer, %..string* %83
%84 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %9, i64 0, i32 1
store i8 1, i8* %84
%85 = load {%..string, i8}, {%..string, i8}* %9, align 8
ret {%..string, i8} %85
if.else-12:
; RangeStmt
; val
%86 = bitcast %Type_Info_Enum_Value* %10 to %..rawptr
%87 = call %..rawptr @__mem_zero(%..rawptr %86, i64 16)
store %Type_Info_Enum_Value zeroinitializer, %Type_Info_Enum_Value* %10
; idx
%88 = bitcast i64* %11 to %..rawptr
%89 = call %..rawptr @__mem_zero(%..rawptr %88, i64 8)
store i64 zeroinitializer, i64* %11
; SelectorExpr
%90 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 2
%91 = load {%Type_Info_Enum_Value*, i64}, {%Type_Info_Enum_Value*, i64}* %90, align 8
%92 = bitcast i64* %12 to %..rawptr
%93 = call %..rawptr @__mem_zero(%..rawptr %92, i64 8)
store i64 zeroinitializer, i64* %12
%94 = extractvalue {%Type_Info_Enum_Value*, i64} %91, 1
store i64 %94, i64* %12
%95 = bitcast i64* %13 to %..rawptr
%96 = call %..rawptr @__mem_zero(%..rawptr %95, i64 8)
store i64 zeroinitializer, i64* %13
store i64 -1, i64* %13
br label %for.index.loop-13
for.index.loop-13:
%97 = load i64, i64* %13, align 8
%98 = add i64 %97, 1
store i64 %98, i64* %13
%99 = load i64, i64* %12, align 8
%100 = icmp slt i64 %98, %99
br i1 %100, label %for.index.body-14, label %for.index.done-20
for.index.body-14:
%101 = load i64, i64* %13, align 8
%102 = extractvalue {%Type_Info_Enum_Value*, i64} %91, 0
%103 = getelementptr inbounds %Type_Info_Enum_Value, %Type_Info_Enum_Value* %102, i64 %101
%104 = load %Type_Info_Enum_Value, %Type_Info_Enum_Value* %103, align 8
store %Type_Info_Enum_Value %104, %Type_Info_Enum_Value* %10
store i64 %101, i64* %11
; IfStmt
; v
; ok
%105 = load %Type_Info_Enum_Value, %Type_Info_Enum_Value* %10, align 8
; cast - union_cast
%106 = bitcast {i32, i8}* %16 to %..rawptr
%107 = call %..rawptr @__mem_zero(%..rawptr %106, i64 8)
store {i32, i8} zeroinitializer, {i32, i8}* %16
%108 = getelementptr inbounds %Type_Info_Enum_Value, %Type_Info_Enum_Value* %10, i64 0, i32 2 ; UnionTagPtr
%109 = load i8, i8* %108, align 1
%110 = icmp eq i8 %109, 1
br i1 %110, label %union_cast.ok-15, label %union_cast.end-16
union_cast.ok-15:
%111 = getelementptr inbounds {i32, i8}, {i32, i8}* %16, i64 0, i32 0
%112 = getelementptr inbounds {i32, i8}, {i32, i8}* %16, i64 0, i32 1
%113 = bitcast %Type_Info_Enum_Value* %10 to i32*
%114 = load i32, i32* %113, align 4
store i32 %114, i32* %111
store i8 1, i8* %112
br label %union_cast.end-16
union_cast.end-16:
%115 = load {i32, i8}, {i32, i8}* %16, align 4
%116 = extractvalue {i32, i8} %115, 0
%117 = extractvalue {i32, i8} %115, 1
store i32 %116, i32* %14
store i8 %117, i8* %15
%118 = load i8, i8* %15, align 1
%119 = trunc i8 %118 to i1
br i1 %119, label %cmp.and-17, label %if.done-19
cmp.and-17:
%120 = load i32, i32* %14, align 4
%121 = load i32, i32* %0, align 4
%122 = icmp eq i32 %120, %121
%123 = zext i1 %122 to i8
%124 = trunc i8 %123 to i1
br i1 %124, label %if.then-18, label %if.done-19
if.then-18:
; ReturnStmt
; IndexExpr
; SelectorExpr
%125 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 1
%126 = load {%..string*, i64}, {%..string*, i64}* %125, align 8
%127 = extractvalue {%..string*, i64} %126, 0
%128 = load i64, i64* %11, align 8
%129 = extractvalue {%..string*, i64} %126, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1c0, i64 0, i32 0), i64 46}, i64 634, i64 22, i64 %128, i64 %129)
%130 = getelementptr inbounds %..string, %..string* %127, i64 %128
%131 = load %..string, %..string* %130, align 8
%132 = bitcast {%..string, i8}* %17 to %..rawptr
%133 = call %..rawptr @__mem_zero(%..rawptr %132, i64 24)
store {%..string, i8} zeroinitializer, {%..string, i8}* %17
%134 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %17, i64 0, i32 0
store %..string %131, %..string* %134
%135 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %17, i64 0, i32 1
store i8 1, i8* %135
%136 = load {%..string, i8}, {%..string, i8}* %17, align 8
ret {%..string, i8} %136
if.done-19:
br label %for.index.loop-13
for.index.done-20:
br label %if.done-21
if.done-21:
; ReturnStmt
%137 = bitcast {%..string, i8}* %18 to %..rawptr
%138 = call %..rawptr @__mem_zero(%..rawptr %137, i64 24)
store {%..string, i8} zeroinitializer, {%..string, i8}* %18
%139 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %18, i64 0, i32 0
store %..string zeroinitializer, %..string* %139
%140 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %18, i64 0, i32 1
store i8 0, i8* %140
%141 = load {%..string, i8}, {%..string, i8}* %18, align 8
ret {%..string, i8} %141
}
define {%..string, i8} @fmt-11.enum_value_to_string.get_str-1(i8 %i, %Type_Info_Enum* %e, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca i8, align 16
%1 = alloca %Type_Info_Enum_Value, align 16
%2 = alloca i64, align 16
%3 = alloca i64, align 16
%4 = alloca i64, align 16
%5 = alloca i8, align 16
%6 = alloca i8, align 16
%7 = alloca {i8, i8}, align 16
%8 = alloca {%..string, i8}, align 16
%9 = alloca {%..string, i8}, align 16
%10 = alloca %Type_Info_Enum_Value, align 16
%11 = alloca i64, align 16
%12 = alloca i64, align 16
%13 = alloca i64, align 16
%14 = alloca i8, align 16
%15 = alloca i8, align 16
%16 = alloca {i8, i8}, align 16
%17 = alloca {%..string, i8}, align 16
%18 = alloca {%..string, i8}, align 16
store i8 %i, i8* %0
%19 = load %Type_Info_Enum, %Type_Info_Enum* %e, align 8
; IfStmt
; SelectorExpr
; SelectorExpr
%20 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 0
%21 = load %Type_Info*, %Type_Info** %20, align 8
%22 = call i8 @types-41.is_string(%Type_Info* %21, %Context* noalias nonnull %__.context_ptr)
%23 = trunc i8 %22 to i1
br i1 %23, label %if.then-1, label %if.else-10
if.then-1:
; RangeStmt
; val
%24 = bitcast %Type_Info_Enum_Value* %1 to %..rawptr
%25 = call %..rawptr @__mem_zero(%..rawptr %24, i64 16)
store %Type_Info_Enum_Value zeroinitializer, %Type_Info_Enum_Value* %1
; idx
%26 = bitcast i64* %2 to %..rawptr
%27 = call %..rawptr @__mem_zero(%..rawptr %26, i64 8)
store i64 zeroinitializer, i64* %2
; SelectorExpr
%28 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 2
%29 = load {%Type_Info_Enum_Value*, i64}, {%Type_Info_Enum_Value*, i64}* %28, align 8
%30 = bitcast i64* %3 to %..rawptr
%31 = call %..rawptr @__mem_zero(%..rawptr %30, i64 8)
store i64 zeroinitializer, i64* %3
%32 = extractvalue {%Type_Info_Enum_Value*, i64} %29, 1
store i64 %32, i64* %3
%33 = bitcast i64* %4 to %..rawptr
%34 = call %..rawptr @__mem_zero(%..rawptr %33, i64 8)
store i64 zeroinitializer, i64* %4
store i64 -1, i64* %4
br label %for.index.loop-2
for.index.loop-2:
%35 = load i64, i64* %4, align 8
%36 = add i64 %35, 1
store i64 %36, i64* %4
%37 = load i64, i64* %3, align 8
%38 = icmp slt i64 %36, %37
br i1 %38, label %for.index.body-3, label %for.index.done-9
for.index.body-3:
%39 = load i64, i64* %4, align 8
%40 = extractvalue {%Type_Info_Enum_Value*, i64} %29, 0
%41 = getelementptr inbounds %Type_Info_Enum_Value, %Type_Info_Enum_Value* %40, i64 %39
%42 = load %Type_Info_Enum_Value, %Type_Info_Enum_Value* %41, align 8
store %Type_Info_Enum_Value %42, %Type_Info_Enum_Value* %1
store i64 %39, i64* %2
; IfStmt
; v
; ok
%43 = load %Type_Info_Enum_Value, %Type_Info_Enum_Value* %1, align 8
; cast - union_cast
%44 = bitcast {i8, i8}* %7 to %..rawptr
%45 = call %..rawptr @__mem_zero(%..rawptr %44, i64 2)
store {i8, i8} zeroinitializer, {i8, i8}* %7
%46 = getelementptr inbounds %Type_Info_Enum_Value, %Type_Info_Enum_Value* %1, i64 0, i32 2 ; UnionTagPtr
%47 = load i8, i8* %46, align 1
%48 = icmp eq i8 %47, 2
br i1 %48, label %union_cast.ok-4, label %union_cast.end-5
union_cast.ok-4:
%49 = getelementptr inbounds {i8, i8}, {i8, i8}* %7, i64 0, i32 0
%50 = getelementptr inbounds {i8, i8}, {i8, i8}* %7, i64 0, i32 1
%51 = bitcast %Type_Info_Enum_Value* %1 to i8*
%52 = load i8, i8* %51, align 1
store i8 %52, i8* %49
store i8 1, i8* %50
br label %union_cast.end-5
union_cast.end-5:
%53 = load {i8, i8}, {i8, i8}* %7, align 1
%54 = extractvalue {i8, i8} %53, 0
%55 = extractvalue {i8, i8} %53, 1
store i8 %54, i8* %5
store i8 %55, i8* %6
%56 = load i8, i8* %6, align 1
%57 = trunc i8 %56 to i1
br i1 %57, label %cmp.and-6, label %if.done-8
cmp.and-6:
%58 = load i8, i8* %5, align 1
%59 = load i8, i8* %0, align 1
%60 = icmp eq i8 %58, %59
%61 = zext i1 %60 to i8
%62 = trunc i8 %61 to i1
br i1 %62, label %if.then-7, label %if.done-8
if.then-7:
; ReturnStmt
; IndexExpr
; SelectorExpr
%63 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 1
%64 = load {%..string*, i64}, {%..string*, i64}* %63, align 8
%65 = extractvalue {%..string*, i64} %64, 0
%66 = load i64, i64* %2, align 8
%67 = extractvalue {%..string*, i64} %64, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1c1, i64 0, i32 0), i64 46}, i64 626, i64 22, i64 %66, i64 %67)
%68 = getelementptr inbounds %..string, %..string* %65, i64 %66
%69 = load %..string, %..string* %68, align 8
%70 = bitcast {%..string, i8}* %8 to %..rawptr
%71 = call %..rawptr @__mem_zero(%..rawptr %70, i64 24)
store {%..string, i8} zeroinitializer, {%..string, i8}* %8
%72 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %8, i64 0, i32 0
store %..string %69, %..string* %72
%73 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %8, i64 0, i32 1
store i8 1, i8* %73
%74 = load {%..string, i8}, {%..string, i8}* %8, align 8
ret {%..string, i8} %74
if.done-8:
br label %for.index.loop-2
for.index.done-9:
br label %if.done-21
if.else-10:
; IfStmt
; SelectorExpr
%75 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 2
%76 = load {%Type_Info_Enum_Value*, i64}, {%Type_Info_Enum_Value*, i64}* %75, align 8
%77 = extractvalue {%Type_Info_Enum_Value*, i64} %76, 1
%78 = icmp eq i64 %77, 0
%79 = zext i1 %78 to i8
%80 = trunc i8 %79 to i1
br i1 %80, label %if.then-11, label %if.else-12
if.then-11:
; ReturnStmt
%81 = bitcast {%..string, i8}* %9 to %..rawptr
%82 = call %..rawptr @__mem_zero(%..rawptr %81, i64 24)
store {%..string, i8} zeroinitializer, {%..string, i8}* %9
%83 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %9, i64 0, i32 0
store %..string zeroinitializer, %..string* %83
%84 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %9, i64 0, i32 1
store i8 1, i8* %84
%85 = load {%..string, i8}, {%..string, i8}* %9, align 8
ret {%..string, i8} %85
if.else-12:
; RangeStmt
; val
%86 = bitcast %Type_Info_Enum_Value* %10 to %..rawptr
%87 = call %..rawptr @__mem_zero(%..rawptr %86, i64 16)
store %Type_Info_Enum_Value zeroinitializer, %Type_Info_Enum_Value* %10
; idx
%88 = bitcast i64* %11 to %..rawptr
%89 = call %..rawptr @__mem_zero(%..rawptr %88, i64 8)
store i64 zeroinitializer, i64* %11
; SelectorExpr
%90 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 2
%91 = load {%Type_Info_Enum_Value*, i64}, {%Type_Info_Enum_Value*, i64}* %90, align 8
%92 = bitcast i64* %12 to %..rawptr
%93 = call %..rawptr @__mem_zero(%..rawptr %92, i64 8)
store i64 zeroinitializer, i64* %12
%94 = extractvalue {%Type_Info_Enum_Value*, i64} %91, 1
store i64 %94, i64* %12
%95 = bitcast i64* %13 to %..rawptr
%96 = call %..rawptr @__mem_zero(%..rawptr %95, i64 8)
store i64 zeroinitializer, i64* %13
store i64 -1, i64* %13
br label %for.index.loop-13
for.index.loop-13:
%97 = load i64, i64* %13, align 8
%98 = add i64 %97, 1
store i64 %98, i64* %13
%99 = load i64, i64* %12, align 8
%100 = icmp slt i64 %98, %99
br i1 %100, label %for.index.body-14, label %for.index.done-20
for.index.body-14:
%101 = load i64, i64* %13, align 8
%102 = extractvalue {%Type_Info_Enum_Value*, i64} %91, 0
%103 = getelementptr inbounds %Type_Info_Enum_Value, %Type_Info_Enum_Value* %102, i64 %101
%104 = load %Type_Info_Enum_Value, %Type_Info_Enum_Value* %103, align 8
store %Type_Info_Enum_Value %104, %Type_Info_Enum_Value* %10
store i64 %101, i64* %11
; IfStmt
; v
; ok
%105 = load %Type_Info_Enum_Value, %Type_Info_Enum_Value* %10, align 8
; cast - union_cast
%106 = bitcast {i8, i8}* %16 to %..rawptr
%107 = call %..rawptr @__mem_zero(%..rawptr %106, i64 2)
store {i8, i8} zeroinitializer, {i8, i8}* %16
%108 = getelementptr inbounds %Type_Info_Enum_Value, %Type_Info_Enum_Value* %10, i64 0, i32 2 ; UnionTagPtr
%109 = load i8, i8* %108, align 1
%110 = icmp eq i8 %109, 2
br i1 %110, label %union_cast.ok-15, label %union_cast.end-16
union_cast.ok-15:
%111 = getelementptr inbounds {i8, i8}, {i8, i8}* %16, i64 0, i32 0
%112 = getelementptr inbounds {i8, i8}, {i8, i8}* %16, i64 0, i32 1
%113 = bitcast %Type_Info_Enum_Value* %10 to i8*
%114 = load i8, i8* %113, align 1
store i8 %114, i8* %111
store i8 1, i8* %112
br label %union_cast.end-16
union_cast.end-16:
%115 = load {i8, i8}, {i8, i8}* %16, align 1
%116 = extractvalue {i8, i8} %115, 0
%117 = extractvalue {i8, i8} %115, 1
store i8 %116, i8* %14
store i8 %117, i8* %15
%118 = load i8, i8* %15, align 1
%119 = trunc i8 %118 to i1
br i1 %119, label %cmp.and-17, label %if.done-19
cmp.and-17:
%120 = load i8, i8* %14, align 1
%121 = load i8, i8* %0, align 1
%122 = icmp eq i8 %120, %121
%123 = zext i1 %122 to i8
%124 = trunc i8 %123 to i1
br i1 %124, label %if.then-18, label %if.done-19
if.then-18:
; ReturnStmt
; IndexExpr
; SelectorExpr
%125 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 1
%126 = load {%..string*, i64}, {%..string*, i64}* %125, align 8
%127 = extractvalue {%..string*, i64} %126, 0
%128 = load i64, i64* %11, align 8
%129 = extractvalue {%..string*, i64} %126, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1c2, i64 0, i32 0), i64 46}, i64 634, i64 22, i64 %128, i64 %129)
%130 = getelementptr inbounds %..string, %..string* %127, i64 %128
%131 = load %..string, %..string* %130, align 8
%132 = bitcast {%..string, i8}* %17 to %..rawptr
%133 = call %..rawptr @__mem_zero(%..rawptr %132, i64 24)
store {%..string, i8} zeroinitializer, {%..string, i8}* %17
%134 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %17, i64 0, i32 0
store %..string %131, %..string* %134
%135 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %17, i64 0, i32 1
store i8 1, i8* %135
%136 = load {%..string, i8}, {%..string, i8}* %17, align 8
ret {%..string, i8} %136
if.done-19:
br label %for.index.loop-13
for.index.done-20:
br label %if.done-21
if.done-21:
; ReturnStmt
%137 = bitcast {%..string, i8}* %18 to %..rawptr
%138 = call %..rawptr @__mem_zero(%..rawptr %137, i64 24)
store {%..string, i8} zeroinitializer, {%..string, i8}* %18
%139 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %18, i64 0, i32 0
store %..string zeroinitializer, %..string* %139
%140 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %18, i64 0, i32 1
store i8 0, i8* %140
%141 = load {%..string, i8}, {%..string, i8}* %18, align 8
ret {%..string, i8} %141
}
define {%..string, i8} @fmt-11.enum_value_to_string.get_str-2(i16 %i, %Type_Info_Enum* %e, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca i16, align 16
%1 = alloca %Type_Info_Enum_Value, align 16
%2 = alloca i64, align 16
%3 = alloca i64, align 16
%4 = alloca i64, align 16
%5 = alloca i16, align 16
%6 = alloca i8, align 16
%7 = alloca {i16, i8}, align 16
%8 = alloca {%..string, i8}, align 16
%9 = alloca {%..string, i8}, align 16
%10 = alloca %Type_Info_Enum_Value, align 16
%11 = alloca i64, align 16
%12 = alloca i64, align 16
%13 = alloca i64, align 16
%14 = alloca i16, align 16
%15 = alloca i8, align 16
%16 = alloca {i16, i8}, align 16
%17 = alloca {%..string, i8}, align 16
%18 = alloca {%..string, i8}, align 16
store i16 %i, i16* %0
%19 = load %Type_Info_Enum, %Type_Info_Enum* %e, align 8
; IfStmt
; SelectorExpr
; SelectorExpr
%20 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 0
%21 = load %Type_Info*, %Type_Info** %20, align 8
%22 = call i8 @types-41.is_string(%Type_Info* %21, %Context* noalias nonnull %__.context_ptr)
%23 = trunc i8 %22 to i1
br i1 %23, label %if.then-1, label %if.else-10
if.then-1:
; RangeStmt
; val
%24 = bitcast %Type_Info_Enum_Value* %1 to %..rawptr
%25 = call %..rawptr @__mem_zero(%..rawptr %24, i64 16)
store %Type_Info_Enum_Value zeroinitializer, %Type_Info_Enum_Value* %1
; idx
%26 = bitcast i64* %2 to %..rawptr
%27 = call %..rawptr @__mem_zero(%..rawptr %26, i64 8)
store i64 zeroinitializer, i64* %2
; SelectorExpr
%28 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 2
%29 = load {%Type_Info_Enum_Value*, i64}, {%Type_Info_Enum_Value*, i64}* %28, align 8
%30 = bitcast i64* %3 to %..rawptr
%31 = call %..rawptr @__mem_zero(%..rawptr %30, i64 8)
store i64 zeroinitializer, i64* %3
%32 = extractvalue {%Type_Info_Enum_Value*, i64} %29, 1
store i64 %32, i64* %3
%33 = bitcast i64* %4 to %..rawptr
%34 = call %..rawptr @__mem_zero(%..rawptr %33, i64 8)
store i64 zeroinitializer, i64* %4
store i64 -1, i64* %4
br label %for.index.loop-2
for.index.loop-2:
%35 = load i64, i64* %4, align 8
%36 = add i64 %35, 1
store i64 %36, i64* %4
%37 = load i64, i64* %3, align 8
%38 = icmp slt i64 %36, %37
br i1 %38, label %for.index.body-3, label %for.index.done-9
for.index.body-3:
%39 = load i64, i64* %4, align 8
%40 = extractvalue {%Type_Info_Enum_Value*, i64} %29, 0
%41 = getelementptr inbounds %Type_Info_Enum_Value, %Type_Info_Enum_Value* %40, i64 %39
%42 = load %Type_Info_Enum_Value, %Type_Info_Enum_Value* %41, align 8
store %Type_Info_Enum_Value %42, %Type_Info_Enum_Value* %1
store i64 %39, i64* %2
; IfStmt
; v
; ok
%43 = load %Type_Info_Enum_Value, %Type_Info_Enum_Value* %1, align 8
; cast - union_cast
%44 = bitcast {i16, i8}* %7 to %..rawptr
%45 = call %..rawptr @__mem_zero(%..rawptr %44, i64 4)
store {i16, i8} zeroinitializer, {i16, i8}* %7
%46 = getelementptr inbounds %Type_Info_Enum_Value, %Type_Info_Enum_Value* %1, i64 0, i32 2 ; UnionTagPtr
%47 = load i8, i8* %46, align 1
%48 = icmp eq i8 %47, 3
br i1 %48, label %union_cast.ok-4, label %union_cast.end-5
union_cast.ok-4:
%49 = getelementptr inbounds {i16, i8}, {i16, i8}* %7, i64 0, i32 0
%50 = getelementptr inbounds {i16, i8}, {i16, i8}* %7, i64 0, i32 1
%51 = bitcast %Type_Info_Enum_Value* %1 to i16*
%52 = load i16, i16* %51, align 2
store i16 %52, i16* %49
store i8 1, i8* %50
br label %union_cast.end-5
union_cast.end-5:
%53 = load {i16, i8}, {i16, i8}* %7, align 2
%54 = extractvalue {i16, i8} %53, 0
%55 = extractvalue {i16, i8} %53, 1
store i16 %54, i16* %5
store i8 %55, i8* %6
%56 = load i8, i8* %6, align 1
%57 = trunc i8 %56 to i1
br i1 %57, label %cmp.and-6, label %if.done-8
cmp.and-6:
%58 = load i16, i16* %5, align 2
%59 = load i16, i16* %0, align 2
%60 = icmp eq i16 %58, %59
%61 = zext i1 %60 to i8
%62 = trunc i8 %61 to i1
br i1 %62, label %if.then-7, label %if.done-8
if.then-7:
; ReturnStmt
; IndexExpr
; SelectorExpr
%63 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 1
%64 = load {%..string*, i64}, {%..string*, i64}* %63, align 8
%65 = extractvalue {%..string*, i64} %64, 0
%66 = load i64, i64* %2, align 8
%67 = extractvalue {%..string*, i64} %64, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1c3, i64 0, i32 0), i64 46}, i64 626, i64 22, i64 %66, i64 %67)
%68 = getelementptr inbounds %..string, %..string* %65, i64 %66
%69 = load %..string, %..string* %68, align 8
%70 = bitcast {%..string, i8}* %8 to %..rawptr
%71 = call %..rawptr @__mem_zero(%..rawptr %70, i64 24)
store {%..string, i8} zeroinitializer, {%..string, i8}* %8
%72 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %8, i64 0, i32 0
store %..string %69, %..string* %72
%73 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %8, i64 0, i32 1
store i8 1, i8* %73
%74 = load {%..string, i8}, {%..string, i8}* %8, align 8
ret {%..string, i8} %74
if.done-8:
br label %for.index.loop-2
for.index.done-9:
br label %if.done-21
if.else-10:
; IfStmt
; SelectorExpr
%75 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 2
%76 = load {%Type_Info_Enum_Value*, i64}, {%Type_Info_Enum_Value*, i64}* %75, align 8
%77 = extractvalue {%Type_Info_Enum_Value*, i64} %76, 1
%78 = icmp eq i64 %77, 0
%79 = zext i1 %78 to i8
%80 = trunc i8 %79 to i1
br i1 %80, label %if.then-11, label %if.else-12
if.then-11:
; ReturnStmt
%81 = bitcast {%..string, i8}* %9 to %..rawptr
%82 = call %..rawptr @__mem_zero(%..rawptr %81, i64 24)
store {%..string, i8} zeroinitializer, {%..string, i8}* %9
%83 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %9, i64 0, i32 0
store %..string zeroinitializer, %..string* %83
%84 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %9, i64 0, i32 1
store i8 1, i8* %84
%85 = load {%..string, i8}, {%..string, i8}* %9, align 8
ret {%..string, i8} %85
if.else-12:
; RangeStmt
; val
%86 = bitcast %Type_Info_Enum_Value* %10 to %..rawptr
%87 = call %..rawptr @__mem_zero(%..rawptr %86, i64 16)
store %Type_Info_Enum_Value zeroinitializer, %Type_Info_Enum_Value* %10
; idx
%88 = bitcast i64* %11 to %..rawptr
%89 = call %..rawptr @__mem_zero(%..rawptr %88, i64 8)
store i64 zeroinitializer, i64* %11
; SelectorExpr
%90 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 2
%91 = load {%Type_Info_Enum_Value*, i64}, {%Type_Info_Enum_Value*, i64}* %90, align 8
%92 = bitcast i64* %12 to %..rawptr
%93 = call %..rawptr @__mem_zero(%..rawptr %92, i64 8)
store i64 zeroinitializer, i64* %12
%94 = extractvalue {%Type_Info_Enum_Value*, i64} %91, 1
store i64 %94, i64* %12
%95 = bitcast i64* %13 to %..rawptr
%96 = call %..rawptr @__mem_zero(%..rawptr %95, i64 8)
store i64 zeroinitializer, i64* %13
store i64 -1, i64* %13
br label %for.index.loop-13
for.index.loop-13:
%97 = load i64, i64* %13, align 8
%98 = add i64 %97, 1
store i64 %98, i64* %13
%99 = load i64, i64* %12, align 8
%100 = icmp slt i64 %98, %99
br i1 %100, label %for.index.body-14, label %for.index.done-20
for.index.body-14:
%101 = load i64, i64* %13, align 8
%102 = extractvalue {%Type_Info_Enum_Value*, i64} %91, 0
%103 = getelementptr inbounds %Type_Info_Enum_Value, %Type_Info_Enum_Value* %102, i64 %101
%104 = load %Type_Info_Enum_Value, %Type_Info_Enum_Value* %103, align 8
store %Type_Info_Enum_Value %104, %Type_Info_Enum_Value* %10
store i64 %101, i64* %11
; IfStmt
; v
; ok
%105 = load %Type_Info_Enum_Value, %Type_Info_Enum_Value* %10, align 8
; cast - union_cast
%106 = bitcast {i16, i8}* %16 to %..rawptr
%107 = call %..rawptr @__mem_zero(%..rawptr %106, i64 4)
store {i16, i8} zeroinitializer, {i16, i8}* %16
%108 = getelementptr inbounds %Type_Info_Enum_Value, %Type_Info_Enum_Value* %10, i64 0, i32 2 ; UnionTagPtr
%109 = load i8, i8* %108, align 1
%110 = icmp eq i8 %109, 3
br i1 %110, label %union_cast.ok-15, label %union_cast.end-16
union_cast.ok-15:
%111 = getelementptr inbounds {i16, i8}, {i16, i8}* %16, i64 0, i32 0
%112 = getelementptr inbounds {i16, i8}, {i16, i8}* %16, i64 0, i32 1
%113 = bitcast %Type_Info_Enum_Value* %10 to i16*
%114 = load i16, i16* %113, align 2
store i16 %114, i16* %111
store i8 1, i8* %112
br label %union_cast.end-16
union_cast.end-16:
%115 = load {i16, i8}, {i16, i8}* %16, align 2
%116 = extractvalue {i16, i8} %115, 0
%117 = extractvalue {i16, i8} %115, 1
store i16 %116, i16* %14
store i8 %117, i8* %15
%118 = load i8, i8* %15, align 1
%119 = trunc i8 %118 to i1
br i1 %119, label %cmp.and-17, label %if.done-19
cmp.and-17:
%120 = load i16, i16* %14, align 2
%121 = load i16, i16* %0, align 2
%122 = icmp eq i16 %120, %121
%123 = zext i1 %122 to i8
%124 = trunc i8 %123 to i1
br i1 %124, label %if.then-18, label %if.done-19
if.then-18:
; ReturnStmt
; IndexExpr
; SelectorExpr
%125 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 1
%126 = load {%..string*, i64}, {%..string*, i64}* %125, align 8
%127 = extractvalue {%..string*, i64} %126, 0
%128 = load i64, i64* %11, align 8
%129 = extractvalue {%..string*, i64} %126, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1c4, i64 0, i32 0), i64 46}, i64 634, i64 22, i64 %128, i64 %129)
%130 = getelementptr inbounds %..string, %..string* %127, i64 %128
%131 = load %..string, %..string* %130, align 8
%132 = bitcast {%..string, i8}* %17 to %..rawptr
%133 = call %..rawptr @__mem_zero(%..rawptr %132, i64 24)
store {%..string, i8} zeroinitializer, {%..string, i8}* %17
%134 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %17, i64 0, i32 0
store %..string %131, %..string* %134
%135 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %17, i64 0, i32 1
store i8 1, i8* %135
%136 = load {%..string, i8}, {%..string, i8}* %17, align 8
ret {%..string, i8} %136
if.done-19:
br label %for.index.loop-13
for.index.done-20:
br label %if.done-21
if.done-21:
; ReturnStmt
%137 = bitcast {%..string, i8}* %18 to %..rawptr
%138 = call %..rawptr @__mem_zero(%..rawptr %137, i64 24)
store {%..string, i8} zeroinitializer, {%..string, i8}* %18
%139 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %18, i64 0, i32 0
store %..string zeroinitializer, %..string* %139
%140 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %18, i64 0, i32 1
store i8 0, i8* %140
%141 = load {%..string, i8}, {%..string, i8}* %18, align 8
ret {%..string, i8} %141
}
define {%..string, i8} @fmt-11.enum_value_to_string.get_str-3(i32 %i, %Type_Info_Enum* %e, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca i32, align 16
%1 = alloca %Type_Info_Enum_Value, align 16
%2 = alloca i64, align 16
%3 = alloca i64, align 16
%4 = alloca i64, align 16
%5 = alloca i32, align 16
%6 = alloca i8, align 16
%7 = alloca {i32, i8}, align 16
%8 = alloca {%..string, i8}, align 16
%9 = alloca {%..string, i8}, align 16
%10 = alloca %Type_Info_Enum_Value, align 16
%11 = alloca i64, align 16
%12 = alloca i64, align 16
%13 = alloca i64, align 16
%14 = alloca i32, align 16
%15 = alloca i8, align 16
%16 = alloca {i32, i8}, align 16
%17 = alloca {%..string, i8}, align 16
%18 = alloca {%..string, i8}, align 16
store i32 %i, i32* %0
%19 = load %Type_Info_Enum, %Type_Info_Enum* %e, align 8
; IfStmt
; SelectorExpr
; SelectorExpr
%20 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 0
%21 = load %Type_Info*, %Type_Info** %20, align 8
%22 = call i8 @types-41.is_string(%Type_Info* %21, %Context* noalias nonnull %__.context_ptr)
%23 = trunc i8 %22 to i1
br i1 %23, label %if.then-1, label %if.else-10
if.then-1:
; RangeStmt
; val
%24 = bitcast %Type_Info_Enum_Value* %1 to %..rawptr
%25 = call %..rawptr @__mem_zero(%..rawptr %24, i64 16)
store %Type_Info_Enum_Value zeroinitializer, %Type_Info_Enum_Value* %1
; idx
%26 = bitcast i64* %2 to %..rawptr
%27 = call %..rawptr @__mem_zero(%..rawptr %26, i64 8)
store i64 zeroinitializer, i64* %2
; SelectorExpr
%28 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 2
%29 = load {%Type_Info_Enum_Value*, i64}, {%Type_Info_Enum_Value*, i64}* %28, align 8
%30 = bitcast i64* %3 to %..rawptr
%31 = call %..rawptr @__mem_zero(%..rawptr %30, i64 8)
store i64 zeroinitializer, i64* %3
%32 = extractvalue {%Type_Info_Enum_Value*, i64} %29, 1
store i64 %32, i64* %3
%33 = bitcast i64* %4 to %..rawptr
%34 = call %..rawptr @__mem_zero(%..rawptr %33, i64 8)
store i64 zeroinitializer, i64* %4
store i64 -1, i64* %4
br label %for.index.loop-2
for.index.loop-2:
%35 = load i64, i64* %4, align 8
%36 = add i64 %35, 1
store i64 %36, i64* %4
%37 = load i64, i64* %3, align 8
%38 = icmp slt i64 %36, %37
br i1 %38, label %for.index.body-3, label %for.index.done-9
for.index.body-3:
%39 = load i64, i64* %4, align 8
%40 = extractvalue {%Type_Info_Enum_Value*, i64} %29, 0
%41 = getelementptr inbounds %Type_Info_Enum_Value, %Type_Info_Enum_Value* %40, i64 %39
%42 = load %Type_Info_Enum_Value, %Type_Info_Enum_Value* %41, align 8
store %Type_Info_Enum_Value %42, %Type_Info_Enum_Value* %1
store i64 %39, i64* %2
; IfStmt
; v
; ok
%43 = load %Type_Info_Enum_Value, %Type_Info_Enum_Value* %1, align 8
; cast - union_cast
%44 = bitcast {i32, i8}* %7 to %..rawptr
%45 = call %..rawptr @__mem_zero(%..rawptr %44, i64 8)
store {i32, i8} zeroinitializer, {i32, i8}* %7
%46 = getelementptr inbounds %Type_Info_Enum_Value, %Type_Info_Enum_Value* %1, i64 0, i32 2 ; UnionTagPtr
%47 = load i8, i8* %46, align 1
%48 = icmp eq i8 %47, 4
br i1 %48, label %union_cast.ok-4, label %union_cast.end-5
union_cast.ok-4:
%49 = getelementptr inbounds {i32, i8}, {i32, i8}* %7, i64 0, i32 0
%50 = getelementptr inbounds {i32, i8}, {i32, i8}* %7, i64 0, i32 1
%51 = bitcast %Type_Info_Enum_Value* %1 to i32*
%52 = load i32, i32* %51, align 4
store i32 %52, i32* %49
store i8 1, i8* %50
br label %union_cast.end-5
union_cast.end-5:
%53 = load {i32, i8}, {i32, i8}* %7, align 4
%54 = extractvalue {i32, i8} %53, 0
%55 = extractvalue {i32, i8} %53, 1
store i32 %54, i32* %5
store i8 %55, i8* %6
%56 = load i8, i8* %6, align 1
%57 = trunc i8 %56 to i1
br i1 %57, label %cmp.and-6, label %if.done-8
cmp.and-6:
%58 = load i32, i32* %5, align 4
%59 = load i32, i32* %0, align 4
%60 = icmp eq i32 %58, %59
%61 = zext i1 %60 to i8
%62 = trunc i8 %61 to i1
br i1 %62, label %if.then-7, label %if.done-8
if.then-7:
; ReturnStmt
; IndexExpr
; SelectorExpr
%63 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 1
%64 = load {%..string*, i64}, {%..string*, i64}* %63, align 8
%65 = extractvalue {%..string*, i64} %64, 0
%66 = load i64, i64* %2, align 8
%67 = extractvalue {%..string*, i64} %64, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1c5, i64 0, i32 0), i64 46}, i64 626, i64 22, i64 %66, i64 %67)
%68 = getelementptr inbounds %..string, %..string* %65, i64 %66
%69 = load %..string, %..string* %68, align 8
%70 = bitcast {%..string, i8}* %8 to %..rawptr
%71 = call %..rawptr @__mem_zero(%..rawptr %70, i64 24)
store {%..string, i8} zeroinitializer, {%..string, i8}* %8
%72 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %8, i64 0, i32 0
store %..string %69, %..string* %72
%73 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %8, i64 0, i32 1
store i8 1, i8* %73
%74 = load {%..string, i8}, {%..string, i8}* %8, align 8
ret {%..string, i8} %74
if.done-8:
br label %for.index.loop-2
for.index.done-9:
br label %if.done-21
if.else-10:
; IfStmt
; SelectorExpr
%75 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 2
%76 = load {%Type_Info_Enum_Value*, i64}, {%Type_Info_Enum_Value*, i64}* %75, align 8
%77 = extractvalue {%Type_Info_Enum_Value*, i64} %76, 1
%78 = icmp eq i64 %77, 0
%79 = zext i1 %78 to i8
%80 = trunc i8 %79 to i1
br i1 %80, label %if.then-11, label %if.else-12
if.then-11:
; ReturnStmt
%81 = bitcast {%..string, i8}* %9 to %..rawptr
%82 = call %..rawptr @__mem_zero(%..rawptr %81, i64 24)
store {%..string, i8} zeroinitializer, {%..string, i8}* %9
%83 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %9, i64 0, i32 0
store %..string zeroinitializer, %..string* %83
%84 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %9, i64 0, i32 1
store i8 1, i8* %84
%85 = load {%..string, i8}, {%..string, i8}* %9, align 8
ret {%..string, i8} %85
if.else-12:
; RangeStmt
; val
%86 = bitcast %Type_Info_Enum_Value* %10 to %..rawptr
%87 = call %..rawptr @__mem_zero(%..rawptr %86, i64 16)
store %Type_Info_Enum_Value zeroinitializer, %Type_Info_Enum_Value* %10
; idx
%88 = bitcast i64* %11 to %..rawptr
%89 = call %..rawptr @__mem_zero(%..rawptr %88, i64 8)
store i64 zeroinitializer, i64* %11
; SelectorExpr
%90 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 2
%91 = load {%Type_Info_Enum_Value*, i64}, {%Type_Info_Enum_Value*, i64}* %90, align 8
%92 = bitcast i64* %12 to %..rawptr
%93 = call %..rawptr @__mem_zero(%..rawptr %92, i64 8)
store i64 zeroinitializer, i64* %12
%94 = extractvalue {%Type_Info_Enum_Value*, i64} %91, 1
store i64 %94, i64* %12
%95 = bitcast i64* %13 to %..rawptr
%96 = call %..rawptr @__mem_zero(%..rawptr %95, i64 8)
store i64 zeroinitializer, i64* %13
store i64 -1, i64* %13
br label %for.index.loop-13
for.index.loop-13:
%97 = load i64, i64* %13, align 8
%98 = add i64 %97, 1
store i64 %98, i64* %13
%99 = load i64, i64* %12, align 8
%100 = icmp slt i64 %98, %99
br i1 %100, label %for.index.body-14, label %for.index.done-20
for.index.body-14:
%101 = load i64, i64* %13, align 8
%102 = extractvalue {%Type_Info_Enum_Value*, i64} %91, 0
%103 = getelementptr inbounds %Type_Info_Enum_Value, %Type_Info_Enum_Value* %102, i64 %101
%104 = load %Type_Info_Enum_Value, %Type_Info_Enum_Value* %103, align 8
store %Type_Info_Enum_Value %104, %Type_Info_Enum_Value* %10
store i64 %101, i64* %11
; IfStmt
; v
; ok
%105 = load %Type_Info_Enum_Value, %Type_Info_Enum_Value* %10, align 8
; cast - union_cast
%106 = bitcast {i32, i8}* %16 to %..rawptr
%107 = call %..rawptr @__mem_zero(%..rawptr %106, i64 8)
store {i32, i8} zeroinitializer, {i32, i8}* %16
%108 = getelementptr inbounds %Type_Info_Enum_Value, %Type_Info_Enum_Value* %10, i64 0, i32 2 ; UnionTagPtr
%109 = load i8, i8* %108, align 1
%110 = icmp eq i8 %109, 4
br i1 %110, label %union_cast.ok-15, label %union_cast.end-16
union_cast.ok-15:
%111 = getelementptr inbounds {i32, i8}, {i32, i8}* %16, i64 0, i32 0
%112 = getelementptr inbounds {i32, i8}, {i32, i8}* %16, i64 0, i32 1
%113 = bitcast %Type_Info_Enum_Value* %10 to i32*
%114 = load i32, i32* %113, align 4
store i32 %114, i32* %111
store i8 1, i8* %112
br label %union_cast.end-16
union_cast.end-16:
%115 = load {i32, i8}, {i32, i8}* %16, align 4
%116 = extractvalue {i32, i8} %115, 0
%117 = extractvalue {i32, i8} %115, 1
store i32 %116, i32* %14
store i8 %117, i8* %15
%118 = load i8, i8* %15, align 1
%119 = trunc i8 %118 to i1
br i1 %119, label %cmp.and-17, label %if.done-19
cmp.and-17:
%120 = load i32, i32* %14, align 4
%121 = load i32, i32* %0, align 4
%122 = icmp eq i32 %120, %121
%123 = zext i1 %122 to i8
%124 = trunc i8 %123 to i1
br i1 %124, label %if.then-18, label %if.done-19
if.then-18:
; ReturnStmt
; IndexExpr
; SelectorExpr
%125 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 1
%126 = load {%..string*, i64}, {%..string*, i64}* %125, align 8
%127 = extractvalue {%..string*, i64} %126, 0
%128 = load i64, i64* %11, align 8
%129 = extractvalue {%..string*, i64} %126, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1c6, i64 0, i32 0), i64 46}, i64 634, i64 22, i64 %128, i64 %129)
%130 = getelementptr inbounds %..string, %..string* %127, i64 %128
%131 = load %..string, %..string* %130, align 8
%132 = bitcast {%..string, i8}* %17 to %..rawptr
%133 = call %..rawptr @__mem_zero(%..rawptr %132, i64 24)
store {%..string, i8} zeroinitializer, {%..string, i8}* %17
%134 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %17, i64 0, i32 0
store %..string %131, %..string* %134
%135 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %17, i64 0, i32 1
store i8 1, i8* %135
%136 = load {%..string, i8}, {%..string, i8}* %17, align 8
ret {%..string, i8} %136
if.done-19:
br label %for.index.loop-13
for.index.done-20:
br label %if.done-21
if.done-21:
; ReturnStmt
%137 = bitcast {%..string, i8}* %18 to %..rawptr
%138 = call %..rawptr @__mem_zero(%..rawptr %137, i64 24)
store {%..string, i8} zeroinitializer, {%..string, i8}* %18
%139 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %18, i64 0, i32 0
store %..string zeroinitializer, %..string* %139
%140 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %18, i64 0, i32 1
store i8 0, i8* %140
%141 = load {%..string, i8}, {%..string, i8}* %18, align 8
ret {%..string, i8} %141
}
define {%..string, i8} @fmt-11.enum_value_to_string.get_str-4(i64 %i, %Type_Info_Enum* %e, %Context* noalias nonnull %__.context_ptr) #0 {
decls-0:
%0 = alloca i64, align 16
%1 = alloca %Type_Info_Enum_Value, align 16
%2 = alloca i64, align 16
%3 = alloca i64, align 16
%4 = alloca i64, align 16
%5 = alloca i64, align 16
%6 = alloca i8, align 16
%7 = alloca {i64, i8}, align 16
%8 = alloca {%..string, i8}, align 16
%9 = alloca {%..string, i8}, align 16
%10 = alloca %Type_Info_Enum_Value, align 16
%11 = alloca i64, align 16
%12 = alloca i64, align 16
%13 = alloca i64, align 16
%14 = alloca i64, align 16
%15 = alloca i8, align 16
%16 = alloca {i64, i8}, align 16
%17 = alloca {%..string, i8}, align 16
%18 = alloca {%..string, i8}, align 16
store i64 %i, i64* %0
%19 = load %Type_Info_Enum, %Type_Info_Enum* %e, align 8
; IfStmt
; SelectorExpr
; SelectorExpr
%20 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 0
%21 = load %Type_Info*, %Type_Info** %20, align 8
%22 = call i8 @types-41.is_string(%Type_Info* %21, %Context* noalias nonnull %__.context_ptr)
%23 = trunc i8 %22 to i1
br i1 %23, label %if.then-1, label %if.else-10
if.then-1:
; RangeStmt
; val
%24 = bitcast %Type_Info_Enum_Value* %1 to %..rawptr
%25 = call %..rawptr @__mem_zero(%..rawptr %24, i64 16)
store %Type_Info_Enum_Value zeroinitializer, %Type_Info_Enum_Value* %1
; idx
%26 = bitcast i64* %2 to %..rawptr
%27 = call %..rawptr @__mem_zero(%..rawptr %26, i64 8)
store i64 zeroinitializer, i64* %2
; SelectorExpr
%28 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 2
%29 = load {%Type_Info_Enum_Value*, i64}, {%Type_Info_Enum_Value*, i64}* %28, align 8
%30 = bitcast i64* %3 to %..rawptr
%31 = call %..rawptr @__mem_zero(%..rawptr %30, i64 8)
store i64 zeroinitializer, i64* %3
%32 = extractvalue {%Type_Info_Enum_Value*, i64} %29, 1
store i64 %32, i64* %3
%33 = bitcast i64* %4 to %..rawptr
%34 = call %..rawptr @__mem_zero(%..rawptr %33, i64 8)
store i64 zeroinitializer, i64* %4
store i64 -1, i64* %4
br label %for.index.loop-2
for.index.loop-2:
%35 = load i64, i64* %4, align 8
%36 = add i64 %35, 1
store i64 %36, i64* %4
%37 = load i64, i64* %3, align 8
%38 = icmp slt i64 %36, %37
br i1 %38, label %for.index.body-3, label %for.index.done-9
for.index.body-3:
%39 = load i64, i64* %4, align 8
%40 = extractvalue {%Type_Info_Enum_Value*, i64} %29, 0
%41 = getelementptr inbounds %Type_Info_Enum_Value, %Type_Info_Enum_Value* %40, i64 %39
%42 = load %Type_Info_Enum_Value, %Type_Info_Enum_Value* %41, align 8
store %Type_Info_Enum_Value %42, %Type_Info_Enum_Value* %1
store i64 %39, i64* %2
; IfStmt
; v
; ok
%43 = load %Type_Info_Enum_Value, %Type_Info_Enum_Value* %1, align 8
; cast - union_cast
%44 = bitcast {i64, i8}* %7 to %..rawptr
%45 = call %..rawptr @__mem_zero(%..rawptr %44, i64 16)
store {i64, i8} zeroinitializer, {i64, i8}* %7
%46 = getelementptr inbounds %Type_Info_Enum_Value, %Type_Info_Enum_Value* %1, i64 0, i32 2 ; UnionTagPtr
%47 = load i8, i8* %46, align 1
%48 = icmp eq i8 %47, 5
br i1 %48, label %union_cast.ok-4, label %union_cast.end-5
union_cast.ok-4:
%49 = getelementptr inbounds {i64, i8}, {i64, i8}* %7, i64 0, i32 0
%50 = getelementptr inbounds {i64, i8}, {i64, i8}* %7, i64 0, i32 1
%51 = bitcast %Type_Info_Enum_Value* %1 to i64*
%52 = load i64, i64* %51, align 8
store i64 %52, i64* %49
store i8 1, i8* %50
br label %union_cast.end-5
union_cast.end-5:
%53 = load {i64, i8}, {i64, i8}* %7, align 8
%54 = extractvalue {i64, i8} %53, 0
%55 = extractvalue {i64, i8} %53, 1
store i64 %54, i64* %5
store i8 %55, i8* %6
%56 = load i8, i8* %6, align 1
%57 = trunc i8 %56 to i1
br i1 %57, label %cmp.and-6, label %if.done-8
cmp.and-6:
%58 = load i64, i64* %5, align 8
%59 = load i64, i64* %0, align 8
%60 = icmp eq i64 %58, %59
%61 = zext i1 %60 to i8
%62 = trunc i8 %61 to i1
br i1 %62, label %if.then-7, label %if.done-8
if.then-7:
; ReturnStmt
; IndexExpr
; SelectorExpr
%63 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 1
%64 = load {%..string*, i64}, {%..string*, i64}* %63, align 8
%65 = extractvalue {%..string*, i64} %64, 0
%66 = load i64, i64* %2, align 8
%67 = extractvalue {%..string*, i64} %64, 1
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1c7, i64 0, i32 0), i64 46}, i64 626, i64 22, i64 %66, i64 %67)
%68 = getelementptr inbounds %..string, %..string* %65, i64 %66
%69 = load %..string, %..string* %68, align 8
%70 = bitcast {%..string, i8}* %8 to %..rawptr
%71 = call %..rawptr @__mem_zero(%..rawptr %70, i64 24)
store {%..string, i8} zeroinitializer, {%..string, i8}* %8
%72 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %8, i64 0, i32 0
store %..string %69, %..s
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment