,`      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_Safe`a`a`aSafe!"$22An invalid use of GEPA resolved type"Continue, after resolving an aliasR*Return from function with the given value.Ends basic block. SReturn from function.Ends basic block. T>Binary arithmetic operation, both operands have the same type.Middle of basic block.&The result is the same as parameters. U>Binary bit-vector operation, both operands have the same type.Middle of basic block.&The result is the same as parameters. V)Convert a value from one type to another.Middle of basic block.&The result matches the 3rd parameter. WUCall a function. The boolean is tail-call hint (XXX: needs to be updated)Middle of basic block.1The result is as indicated by the provided type. X^Allocated space on the stack: type of elements; how many elements (1 if b!); required alignment.Middle of basic block.7Returns a pointer to hold the given number of elemets. YRead a value from the given address: address to read from; assumptions about alignment of the given pointer.Middle of basic block..Returns a value of type matching the pointer. ZWrite a value ot memory: value to store; pointer to location where to store; assumptions about the alignment of the given pointer.Middle olf basic block.Effect. [Compare two integral values.Middle of basic block.Returns a boolean value. \"Compare two floating point values.Middle of basic block.Returns a boolean value. ]UJoin point for an SSA value: we get one value per predecessor basic block.Middle of basic block.'Returns a value of the specified type. ^"Get element pointer", compute the address of a field in a structure: inbounds check (value poisoned if this fails); pointer to parent strucutre; path to a sub-component of a strucutre.Middle of basic block.-Returns the address of the requiested member.=The types in path are the types of the index, not the fields.The indexes are in units of a fields (i.e., the first element in a struct is field 0, the next one is 1, etc., regardless of the size of the fields in bytes). _{Local if-then-else; the first argument is boolean, if true pick the 2nd argument, otherwise evaluate to the 3rd.Middle of basic block.,Returns either the 2nd or the 3rd argument. `Get the value of a member of an aggregate value: the first argument is an aggregate value (not a pointer!), the second is a path of indexes, similar to the one in ^. Middle of basic block.1Returns the given member of the aggregate value. aSet the value for a member of an aggregate value: the first argument is the value to insert, the second is the aggreagate value to be modified.Middle of basic block.$Returns an updated aggregate value. b]Get an element from a vector: the first argument is a vector, the second an index.Middle of basic block.+Returns the element at the given positoin. cModify an element of a vector: the first argument is the vector, the second the value to be inserted, the third is the index where to insert the value.Middle of basic block.Returns an updated vector. eJump to the given basic block.Ends basic block. fnConditional jump: if the value is true jump to the first basic block, otherwise jump to the second.Ends basic block. hCommenti/No defined sematics, we should not get to here.mMulti-way branch: the first value determines the direction of the branch, the label is a default direction, if the value does not appear in the jump table, the last argument is the jump table.Ends basic block.  Shift left.EFirst bool flag: check for unsigned overflow (i.e., shifted out a 1).xSecond bool flag: check for signed overflow (i.e., shifted out something that does not match the sign bit).If a check fails, then the result is poisoned.The value of the second parameter must be strictly less than the nubmer of bits in the first parameter, otherwise the result is undefined. Logical shift right.nThe boolean is for exact check: posion the result, if we shift out a 1 bit (i.e., had to round).The value of the second parameter must be strictly less than the nubmer of bits in the first parameter, otherwise the result is undefined.Arithmetic shift right.pThe boolean is for exact check: posion the result, if we shift out a 1 bit (i.e., had to round).The value of the second parameter must be strictly less than the nubmer of bits in the first parameter, otherwise the result is undefined.Integral addition.0First boolean flag: check for unsigned overflow./Second boolean flag: check for signed overflow.1If the checks fail, then the result is poisoned. Floating point addition.Integral subtraction.0First boolean flag: check for unsigned overflow./Second boolean flag: check for signed overflow.1If the checks fail, then the result is poisoned. Floating point subtraction.Integral multiplication.0First boolean flag: check for unsigned overflow./Second boolean flag: check for signed overflow.1If the checks fail, then the result is poisoned. Floating point multiplication.Integral unsigned division.%Boolean flag: check for exact result.1If the check fails, then the result is poisoned. Integral signed division.%Boolean flag: check for exact result.1If the check fails, then the result is poisoned. Floating point division.YIntegral unsigned reminder resulting from unsigned division. Division by 0 is undefined.9Integral signded reminder resulting from signed division.@The sign of the reminder matches the divident (first parameter).Division by 0 is undefined.?Floating point reminder resulting from floating point division.AThe reminder has the same sign as the divident (first parameter).Symbol Linkage!Parse the data layout string."2Parse a single layout specification from a string.#.Traverse a type, updating or removing aliases.8/Eliminator for array, pointer and vector types.;%The function type of this declarationMResolves the type of a GEP instruction. Type aliases are resolved using the given function. An invalid use of GEP or one relying on unknown type aliases will return bNzResolve the type of a GEP instruction. Note that the type produced is the type of the result, not necessarily a pointer.OmResolve the type of a GEP instruction. This assumes that the input has already been processed as a pointer.Z  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMType alias resolution Pointer type Path Type of result NOPQRSTUVWXYS /- !$"#%&'()*+,.0123456789:;<=>?@ABCDEFGHIJKLMONPQfgemlRSTUVWXYZ[\]^_`abcdhijknopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRZY      !"XWV#$%&'()*+,-./0123456789:;<=>U?TS@AB~qrstuvwxyz{|}pQRSTUVWXYZ[\]^_`abcdefghijklmnoPMNOLCDEABCDEFGHIJK0123456789:;<=>?@ !"#$%&'()*+,-./FGH IJK LMNOPQRj   !"#$%&'()*+,-./0123456789:;<=>?@A BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopq rstuvwxyz{|}~          !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYSafeGiven a function for resolving labels, where the presence of a symbol denotes a label in a different function, rename all labels in a function.  Trevor Elliott 2011-2016BSD3awesomelyawesome@gmail.com experimentalunknownSafe*OTAThe differences between various versions of the llvm textual AST.jTrue when the type of the result of a load is derived from its pointer argument, or supplied implicitly.DTrue when the type of the result of the GEP instruction is implied.)Pretty print a data layout specification.+Pretty print a single layout specification.<Pretty-print the common case for data layout specifications.'Pretty-print the inline assembly block.(Build a variable-argument argument list.NNNKNone 9;<=?IJQR8Types that can be used to define the body of a function.cSAvoid generating the provided name. When the name already exists, return Nothing.Emit a declaration.Emit a global declaration.yOutput a somewhat clunky representation for a string global, that deals well with escaping in the haskell-source string.Define a function.A combination of define and  freshSymbol.iFunction definition when the argument list isn't statically known. This is useful when generating code.Force termination of the current basic block, and start a new one with the given label. If the previous block had no instructions defined, it will just be thrown away. ZEmit an assignment that uses the given identifier to name the result of the BB operation.WARNING: this can throw errors. Emit the `ret'3 instruction and terminate the current basic block.8Emit ``ret void'' and terminate the current basic block.&CReturns the value stored in the member field of an aggregate value.'XInserts a value into the member field of an aggregate value, and returns the new value.?DEmit a call instruction, and generate a new variable for its result.@JEmit a call instruction, but don't generate a new variable for its result.AGEmit an invoke instruction, and generate a new variable for its result.BJEmit a call instruction, but don't generate a new variable for its result.defghijklmnocpqrstuvwxyz{     | !"#$%&'()*+,}-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTU /- !$"#%&'()*+,.0123456789:;<=>?@ABCDEFGHIJKLMONPQfgemlRSTUVWXYZ[\]^_`abcdhijknopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQR      !"#$%&'()*+,-./0123456789:;<=>?@ABX      !"#$%-./012345678&')*+>,9:<;=?@AB(zdefghijklmnocpqrstuvwxyz{     | !"#$%&'()*+,}-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTU00~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUUVWXYZ[\]^_`abcdefghijk&llvm-pretty-0.5-LhVqL2CumQa1fuOd38VsLd Text.LLVM.ASTText.LLVM.Labels Text.LLVM.PP Text.LLVMText.LLVM.Util IndexResultInvalidHasTypeResolve ConstExpr ConstExpr'ConstGEP ConstConv ConstSelectConstBlockAddrStmtStmt'ResultEffectDebugLoc DebugLoc'dlLinedlColdlScopedlIAValMdValMd' ValMdString ValMdValueValMdRef ValMdNodeValMdLocValueValue' ValIntegerValBoolValFloat ValDoubleValIdent ValSymbolValNullValArray ValVector ValStructValPackedStruct ValString ValConstExprValUndefValLabel ValZeroInitValAsmFCmpOpFfalseFoeqFogtFogeFoltFoleFoneFordFueqFugtFugeFultFuleFuneFunoFtrueICmpOpIeqIneIugtIugeIultIuleIsgtIsgeIsltIsleClauseClause'CatchFilterInstrInstr'RetRetVoidArithBitConvCallAllocaLoadStoreICmpFCmpPhiGEPSelect ExtractValue InsertValue ExtractElt InsertElt ShuffleVectorJumpBrInvokeComment UnreachableUnwindVaArg IndirectBrSwitch LandingPadResumeAlignConvOpTruncZExtSExtFpTruncFpExtFpToUiFpToSiUiToFpSiToFpPtrToIntIntToPtrBitCastBitOpShlLshrAshrAndOrXorArithOpAddFAddSubFSubMulFMulUDivSDivFDivURemSRemFRemTyped typedType typedValueGCgetGCLinkagePrivate LinkerPrivateLinkerPrivateWeakLinkerPrivateWeakDefAutoInternalAvailableExternallyLinkonceWeakCommon Appending ExternWeak LinkonceODRWeakODRExternal DLLImport DLLExport BasicBlock BasicBlock'bbLabelbbStmts BlockLabelNamedAnonFunAttrs funLinkagefunGCDefinedefAttrs defRetTypedefNamedefArgs defVarArgs defSectiondefBodyDeclare decRetTypedecNamedecArgs decVarArgs GlobalAttrs gaLinkage gaConstantGlobal globalSym globalAttrs globalType globalValue globalAlignTypeDecltypeName typeValue NullResultHasNull ResolveNullType'PrimTypeAliasArrayFunTyPtrToStruct PackedStructVectorOpaqueType FloatTypeHalfFloatDoubleFp128X86_fp80 PPC_fp128LabelVoidIntegerX86mmxMetadataSymbolIdent InlineAsmMangling ElfMangling MipsMangling MachOManglingWindowsCoffMangling LayoutSpec BigEndian LittleEndian PointerSize IntegerSize VectorSize FloatSize AggregateSize StackObjSize NativeIntSize StackAlign DataLayout GlobalAlias aliasName aliasType aliasTarget UnnamedMdumIndexumValues umDistinctNamedMdnmNamenmValuesModule modDataLayoutmodTypes modNamedMd modUnnamedMd modGlobals modDeclares modDefines modInlineAsm modAliases emptyModuleparseDataLayoutparseLayoutSpec updateAliasesisFloatingPointisAlias isPrimTypeOfisLabel isIntegerisVector isVectorOfisArray isPointer primTypeNull floatTypeNulltypeNull elimFunTy elimAlias elimPtrTo elimVector elimArray elimFunPtr elimPrimType elimFloatTypeelimSequentialType addGlobalemptyGlobalAttrs decFunType defFunType addDefine emptyFunAttrs brTargets mapMTypedisIArithisFArith isTerminator isCommentisPhiisConst elimValSymbolelimValInteger stmtInstr stmtMetadataextendMetadata isInvalidresolveGepFull resolveGepresolveGepBody isGepIndexisGepStructIndexresolveValueIndex$fTraversableTyped$fFoldableTyped$fIsStringBlockLabel$fIsStringSymbol$fMonoidSymbol$fIsStringIdent$fMonoidModule $fShowNamedMd$fShowMangling $fEqMangling$fShowLayoutSpec $fShowIdent $fEqIdent $fOrdIdent $fShowSymbol $fEqSymbol $fOrdSymbol $fEqFloatType$fOrdFloatType$fShowFloatType $fEqPrimType $fOrdPrimType$fShowPrimType $fEqType' $fOrdType' $fShowType'$fFunctorType'$fShowTypeDecl $fShowDeclare$fEqBlockLabel$fOrdBlockLabel$fShowBlockLabel $fEqLinkage $fShowLinkage$fShowGlobalAttrs$fShowGC$fShowFunAttrs $fShowTyped$fFunctorTyped $fEqArithOp $fShowArithOp $fShowBitOp $fShowConvOp $fShowICmpOp $fShowFCmpOp$fShowConstExpr'$fFunctorConstExpr' $fShowValue'$fFunctorValue' $fShowValMd'$fFunctorValMd'$fShowDebugLoc'$fFunctorDebugLoc'$fShowUnnamedMd $fShowGlobal$fShowGlobalAlias $fShowClause'$fFunctorClause' $fShowInstr'$fFunctorInstr' $fShowStmt'$fFunctorStmt'$fShowBasicBlock' $fShowDefine $fShowModuleHasLabelrelabel$fHasLabelConstExpr'$fHasLabelDebugLoc'$fHasLabelValMd'$fHasLabelValue'$fHasLabelClause'$fHasLabelInstr'$fHasLabelStmt'ConfigcfgLoadImplicitTypecfgGEPImplicitTypeLLVM withConfigppLLVMppLLVM35ppLLVM36ppLLVM37ppLLVM38 checkConfigppModule ppNamedMd ppUnnamedMd ppGlobalAlias ppDataLayout ppLayoutSpec ppLayoutBody ppMangling ppInlineAsmppIdentppSymbol ppPrimType ppFloatTypeppType ppTypeDeclppGlobal ppGlobalAttrs ppDeclareppDefine ppLabelDefppLabel ppBasicBlockppStmtppAttachedMetadata ppLinkageppGCppTyped ppSignBitsppExact ppArithOpppBitOpppConvOpppInstrppLoad ppClausesppClause ppTypedLabel ppSwitchEntry ppVectorIndexppAlignppAllocappCall ppCallSymppGEPppInvokeppPhiArgppICmpOpppFCmpOpppValueppValMd ppDebugLoc ppTypedValMd ppMetadatappMetadataNodeppBoolppStringLiteralppAsm ppConstExpr ppArgListint32optcommasangles structBracesppMaybecolonsPhiArgIsValuetoValueBB DefineArgs:>runLLVM emitTypeDecl emitGlobal emitDefine emitDeclarealias freshSymboldeclareglobalstringdefine defineFreshdefine' freshLabellabeliTptrTvoidTarrayT-:=:intintegerstructarraycommentassignretretVoidjumpbr unreachableunwindaddfaddsubfsubmulfmuludivsdivfdivuremsremfremshllshrashrbandborbxor extractValue insertValue shuffleVectorallocaloadstorenullPtrtrunczextsextfptruncfpextfptouifptosiuitofpsitofpptrtointinttoptrbitcasticmpfcmpfromphiselect getelementptrcallcall_invokeswitch$fIsValueSymbol$fIsValueIdent$fIsValueDouble$fIsValueFloat$fIsValueInt64$fIsValueInt32$fIsValueInt16 $fIsValueInt8 $fIsValueInt$fIsValueInteger $fIsValueBool$fIsValueTyped$fIsValueValue' $fIsStringBB$fDefineArgs(,,)(->)$fDefineArgs(,)(->)$fDefineArgsType'(->)$fDefineArgs:>(->)$fDefineArgs()BB $fFunctorLLVM$fApplicativeLLVM $fMonadLLVM$fMonadFixLLVM$fShow:>$fShowRW $fFunctorBB$fApplicativeBB $fMonadBB $fMonadFixBBbreaksunconsbaseGHC.BaseNothingavoidRWrwNamesrwLabelrwStmtsunBB defineBodyunLLVMNamesnextName freshNameLLVMfreshArg avoidName freshNameBBrunBBemptyRW rwBasicBlockemitStmteffectobserveterminateBasicBlockbinopconvop