    {-# OPTIONS_GHC -w #-}
    {-# OPTIONS -XMagicHash -XBangPatterns -XTypeSynonymInstances -XFlexibleInstances -cpp #-}
    #if __GLASGOW_HASKELL__ >= 710
    {-# OPTIONS_GHC -XPartialTypeSignatures #-}
    #endif
    {-# LANGUAGE TupleSections #-}

    module GHC.Cmm.Parser ( parseCmmFile, CmmParserConfig(..) ) where

    import GHC.Prelude
    import qualified Prelude -- for happy-generated code

    import GHC.Platform
    import GHC.Platform.Profile

    import GHC.StgToCmm.ExtCode
    import GHC.StgToCmm.Heap
    import GHC.StgToCmm.Monad hiding ( getCode, getCodeR, getCodeScoped, emitLabel, emit
                                     , emitStore, emitAssign, emitOutOfLine, withUpdFrameOff
                                     , getUpdFrameOff, getProfile, getPlatform, getContext)
    import qualified GHC.StgToCmm.Monad as F
    import GHC.StgToCmm.Utils
    import GHC.StgToCmm.Foreign
    import GHC.StgToCmm.Expr
    import GHC.StgToCmm.Lit
    import GHC.StgToCmm.Closure
    import GHC.StgToCmm.Config
    import GHC.StgToCmm.Layout     hiding (ArgRep(..))
    import GHC.StgToCmm.Ticky
    import GHC.StgToCmm.Prof
    import GHC.StgToCmm.Bind  ( emitBlackHoleCode, emitUpdateFrame )
    import GHC.StgToCmm.InfoTableProv

    import GHC.Cmm.Opt
    import GHC.Cmm.Graph
    import GHC.Cmm
    import GHC.Cmm.Utils
    import GHC.Cmm.Switch     ( mkSwitchTargets )
    import GHC.Cmm.Info
    import GHC.Cmm.BlockId
    import GHC.Cmm.Lexer
    import GHC.Cmm.CLabel
    import GHC.Cmm.Parser.Config
    import GHC.Cmm.Parser.Monad hiding (getPlatform, getProfile)
    import qualified GHC.Cmm.Parser.Monad as PD
    import GHC.Cmm.CallConv
    import GHC.Runtime.Heap.Layout
    import GHC.Parser.Lexer
    import GHC.Parser.Errors.Types
    import GHC.Parser.Errors.Ppr

    import GHC.Types.CostCentre
    import GHC.Types.ForeignCall
    import GHC.Unit.Module
    import GHC.Unit.Home
    import GHC.Types.Literal
    import GHC.Types.Unique
    import GHC.Types.Unique.FM
    import GHC.Types.SrcLoc
    import GHC.Types.Tickish  ( GenTickish(SourceNote) )
    import GHC.Utils.Error
    import GHC.Data.StringBuffer
    import GHC.Data.FastString
    import GHC.Utils.Panic
    import GHC.Settings.Constants
    import GHC.Utils.Outputable
    import GHC.Types.Basic
    import GHC.Data.Bag     ( Bag, emptyBag, unitBag, isEmptyBag )
    import GHC.Types.Var

    import Control.Monad
    import Data.Array
    import Data.Char        ( ord )
    import System.Exit
    import Data.Maybe
    import qualified Data.Map as M
    import qualified Data.ByteString.Char8 as BS8
    import qualified Data.Array as Happy_Data_Array
    import qualified Data.Bits as Bits
    import qualified GHC.Exts as Happy_GHC_Exts
    import Control.Applicative(Applicative(..))
    import Control.Monad (ap)

    -- parser produced by Happy Version 1.20.1.1

    newtype HappyAbsSyn  = HappyAbsSyn HappyAny
    #if __GLASGOW_HASKELL__ >= 607
    type HappyAny = Happy_GHC_Exts.Any
    #else
    type HappyAny = forall a . a
    #endif
    newtype HappyWrap4 = HappyWrap4 (CmmParse ())
    happyIn4 :: (CmmParse ()) -> (HappyAbsSyn )
    happyIn4 :: CmmParse () -> HappyAbsSyn
    happyIn4 CmmParse ()
    x = HappyWrap4 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# (CmmParse () -> HappyWrap4
    HappyWrap4 CmmParse ()
    x)
    {-# INLINE happyIn4 #-}
    happyOut4 :: (HappyAbsSyn ) -> HappyWrap4
    happyOut4 :: HappyAbsSyn -> HappyWrap4
    happyOut4 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap4
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut4 #-}
    newtype HappyWrap5 = HappyWrap5 (CmmParse ())
    happyIn5 :: (CmmParse ()) -> (HappyAbsSyn )
    happyIn5 :: CmmParse () -> HappyAbsSyn
    happyIn5 CmmParse ()
    x = HappyWrap5 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# (CmmParse () -> HappyWrap5
    HappyWrap5 CmmParse ()
    x)
    {-# INLINE happyIn5 #-}
    happyOut5 :: (HappyAbsSyn ) -> HappyWrap5
    happyOut5 :: HappyAbsSyn -> HappyWrap5
    happyOut5 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap5
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut5 #-}
    newtype HappyWrap6 = HappyWrap6 (CmmParse ())
    happyIn6 :: (CmmParse ()) -> (HappyAbsSyn )
    happyIn6 :: CmmParse () -> HappyAbsSyn
    happyIn6 CmmParse ()
    x = HappyWrap6 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# (CmmParse () -> HappyWrap6
    HappyWrap6 CmmParse ()
    x)
    {-# INLINE happyIn6 #-}
    happyOut6 :: (HappyAbsSyn ) -> HappyWrap6
    happyOut6 :: HappyAbsSyn -> HappyWrap6
    happyOut6 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap6
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut6 #-}
    newtype HappyWrap7 = HappyWrap7 (CmmParse CLabel)
    happyIn7 :: (CmmParse CLabel) -> (HappyAbsSyn )
    happyIn7 :: CmmParse CLabel -> HappyAbsSyn
    happyIn7 CmmParse CLabel
    x = HappyWrap7 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# (CmmParse CLabel -> HappyWrap7
    HappyWrap7 CmmParse CLabel
    x)
    {-# INLINE happyIn7 #-}
    happyOut7 :: (HappyAbsSyn ) -> HappyWrap7
    happyOut7 :: HappyAbsSyn -> HappyWrap7
    happyOut7 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap7
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut7 #-}
    newtype HappyWrap8 = HappyWrap8 ([CmmParse [CmmStatic]])
    happyIn8 :: ([CmmParse [CmmStatic]]) -> (HappyAbsSyn )
    happyIn8 :: [CmmParse [CmmStatic]] -> HappyAbsSyn
    happyIn8 [CmmParse [CmmStatic]]
    x = HappyWrap8 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# ([CmmParse [CmmStatic]] -> HappyWrap8
    HappyWrap8 [CmmParse [CmmStatic]]
    x)
    {-# INLINE happyIn8 #-}
    happyOut8 :: (HappyAbsSyn ) -> HappyWrap8
    happyOut8 :: HappyAbsSyn -> HappyWrap8
    happyOut8 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap8
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut8 #-}
    newtype HappyWrap9 = HappyWrap9 (CmmParse [CmmStatic])
    happyIn9 :: (CmmParse [CmmStatic]) -> (HappyAbsSyn )
    happyIn9 :: CmmParse [CmmStatic] -> HappyAbsSyn
    happyIn9 CmmParse [CmmStatic]
    x = HappyWrap9 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# (CmmParse [CmmStatic] -> HappyWrap9
    HappyWrap9 CmmParse [CmmStatic]
    x)
    {-# INLINE happyIn9 #-}
    happyOut9 :: (HappyAbsSyn ) -> HappyWrap9
    happyOut9 :: HappyAbsSyn -> HappyWrap9
    happyOut9 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap9
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut9 #-}
    newtype HappyWrap10 = HappyWrap10 ([CmmParse CmmExpr])
    happyIn10 :: ([CmmParse CmmExpr]) -> (HappyAbsSyn )
    happyIn10 :: [CmmParse CmmExpr] -> HappyAbsSyn
    happyIn10 [CmmParse CmmExpr]
    x = HappyWrap10 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# ([CmmParse CmmExpr] -> HappyWrap10
    HappyWrap10 [CmmParse CmmExpr]
    x)
    {-# INLINE happyIn10 #-}
    happyOut10 :: (HappyAbsSyn ) -> HappyWrap10
    happyOut10 :: HappyAbsSyn -> HappyWrap10
    happyOut10 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap10
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut10 #-}
    newtype HappyWrap11 = HappyWrap11 (CmmParse ())
    happyIn11 :: (CmmParse ()) -> (HappyAbsSyn )
    happyIn11 :: CmmParse () -> HappyAbsSyn
    happyIn11 CmmParse ()
    x = HappyWrap11 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# (CmmParse () -> HappyWrap11
    HappyWrap11 CmmParse ()
    x)
    {-# INLINE happyIn11 #-}
    happyOut11 :: (HappyAbsSyn ) -> HappyWrap11
    happyOut11 :: HappyAbsSyn -> HappyWrap11
    happyOut11 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap11
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut11 #-}
    newtype HappyWrap12 = HappyWrap12 (Convention)
    happyIn12 :: (Convention) -> (HappyAbsSyn )
    happyIn12 :: Convention -> HappyAbsSyn
    happyIn12 Convention
    x = HappyWrap12 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# (Convention -> HappyWrap12
    HappyWrap12 Convention
    x)
    {-# INLINE happyIn12 #-}
    happyOut12 :: (HappyAbsSyn ) -> HappyWrap12
    happyOut12 :: HappyAbsSyn -> HappyWrap12
    happyOut12 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap12
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut12 #-}
    newtype HappyWrap13 = HappyWrap13 (CmmParse ())
    happyIn13 :: (CmmParse ()) -> (HappyAbsSyn )
    happyIn13 :: CmmParse () -> HappyAbsSyn
    happyIn13 CmmParse ()
    x = HappyWrap13 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# (CmmParse () -> HappyWrap13
    HappyWrap13 CmmParse ()
    x)
    {-# INLINE happyIn13 #-}
    happyOut13 :: (HappyAbsSyn ) -> HappyWrap13
    happyOut13 :: HappyAbsSyn -> HappyWrap13
    happyOut13 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap13
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut13 #-}
    newtype HappyWrap14 = HappyWrap14 (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
    happyIn14 :: (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])) -> (HappyAbsSyn )
    happyIn14 :: CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]) -> HappyAbsSyn
    happyIn14 CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
    x = HappyWrap14 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]) -> HappyWrap14
    HappyWrap14 CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
    x)
    {-# INLINE happyIn14 #-}
    happyOut14 :: (HappyAbsSyn ) -> HappyWrap14
    happyOut14 :: HappyAbsSyn -> HappyWrap14
    happyOut14 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap14
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut14 #-}
    newtype HappyWrap15 = HappyWrap15 (CmmParse ())
    happyIn15 :: (CmmParse ()) -> (HappyAbsSyn )
    happyIn15 :: CmmParse () -> HappyAbsSyn
    happyIn15 CmmParse ()
    x = HappyWrap15 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# (CmmParse () -> HappyWrap15
    HappyWrap15 CmmParse ()
    x)
    {-# INLINE happyIn15 #-}
    happyOut15 :: (HappyAbsSyn ) -> HappyWrap15
    happyOut15 :: HappyAbsSyn -> HappyWrap15
    happyOut15 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap15
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut15 #-}
    newtype HappyWrap16 = HappyWrap16 (CmmParse ())
    happyIn16 :: (CmmParse ()) -> (HappyAbsSyn )
    happyIn16 :: CmmParse () -> HappyAbsSyn
    happyIn16 CmmParse ()
    x = HappyWrap16 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# (CmmParse () -> HappyWrap16
    HappyWrap16 CmmParse ()
    x)
    {-# INLINE happyIn16 #-}
    happyOut16 :: (HappyAbsSyn ) -> HappyWrap16
    happyOut16 :: HappyAbsSyn -> HappyWrap16
    happyOut16 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap16
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut16 #-}
    newtype HappyWrap17 = HappyWrap17 ([(FastString, CLabel)])
    happyIn17 :: ([(FastString, CLabel)]) -> (HappyAbsSyn )
    happyIn17 :: [(FastString, CLabel)] -> HappyAbsSyn
    happyIn17 [(FastString, CLabel)]
    x = HappyWrap17 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# ([(FastString, CLabel)] -> HappyWrap17
    HappyWrap17 [(FastString, CLabel)]
    x)
    {-# INLINE happyIn17 #-}
    happyOut17 :: (HappyAbsSyn ) -> HappyWrap17
    happyOut17 :: HappyAbsSyn -> HappyWrap17
    happyOut17 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap17
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut17 #-}
    newtype HappyWrap18 = HappyWrap18 ((FastString,  CLabel))
    happyIn18 :: ((FastString,  CLabel)) -> (HappyAbsSyn )
    happyIn18 :: (FastString, CLabel) -> HappyAbsSyn
    happyIn18 (FastString, CLabel)
    x = HappyWrap18 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# ((FastString, CLabel) -> HappyWrap18
    HappyWrap18 (FastString, CLabel)
    x)
    {-# INLINE happyIn18 #-}
    happyOut18 :: (HappyAbsSyn ) -> HappyWrap18
    happyOut18 :: HappyAbsSyn -> HappyWrap18
    happyOut18 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap18
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut18 #-}
    newtype HappyWrap19 = HappyWrap19 ([FastString])
    happyIn19 :: ([FastString]) -> (HappyAbsSyn )
    happyIn19 :: [FastString] -> HappyAbsSyn
    happyIn19 [FastString]
    x = HappyWrap19 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# ([FastString] -> HappyWrap19
    HappyWrap19 [FastString]
    x)
    {-# INLINE happyIn19 #-}
    happyOut19 :: (HappyAbsSyn ) -> HappyWrap19
    happyOut19 :: HappyAbsSyn -> HappyWrap19
    happyOut19 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap19
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut19 #-}
    newtype HappyWrap20 = HappyWrap20 (CmmParse ())
    happyIn20 :: (CmmParse ()) -> (HappyAbsSyn )
    happyIn20 :: CmmParse () -> HappyAbsSyn
    happyIn20 CmmParse ()
    x = HappyWrap20 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# (CmmParse () -> HappyWrap20
    HappyWrap20 CmmParse ()
    x)
    {-# INLINE happyIn20 #-}
    happyOut20 :: (HappyAbsSyn ) -> HappyWrap20
    happyOut20 :: HappyAbsSyn -> HappyWrap20
    happyOut20 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap20
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut20 #-}
    newtype HappyWrap21 = HappyWrap21 (CmmParse [(GlobalReg, Maybe CmmExpr)])
    happyIn21 :: (CmmParse [(GlobalReg, Maybe CmmExpr)]) -> (HappyAbsSyn )
    happyIn21 :: CmmParse [(GlobalReg, Maybe CmmExpr)] -> HappyAbsSyn
    happyIn21 CmmParse [(GlobalReg, Maybe CmmExpr)]
    x = HappyWrap21 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# (CmmParse [(GlobalReg, Maybe CmmExpr)] -> HappyWrap21
    HappyWrap21 CmmParse [(GlobalReg, Maybe CmmExpr)]
    x)
    {-# INLINE happyIn21 #-}
    happyOut21 :: (HappyAbsSyn ) -> HappyWrap21
    happyOut21 :: HappyAbsSyn -> HappyWrap21
    happyOut21 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap21
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut21 #-}
    newtype HappyWrap22 = HappyWrap22 (CmmParse MemoryOrdering)
    happyIn22 :: (CmmParse MemoryOrdering) -> (HappyAbsSyn )
    happyIn22 :: CmmParse MemoryOrdering -> HappyAbsSyn
    happyIn22 CmmParse MemoryOrdering
    x = HappyWrap22 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# (CmmParse MemoryOrdering -> HappyWrap22
    HappyWrap22 CmmParse MemoryOrdering
    x)
    {-# INLINE happyIn22 #-}
    happyOut22 :: (HappyAbsSyn ) -> HappyWrap22
    happyOut22 :: HappyAbsSyn -> HappyWrap22
    happyOut22 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap22
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut22 #-}
    newtype HappyWrap23 = HappyWrap23 (CmmParse (Maybe CmmExpr))
    happyIn23 :: (CmmParse (Maybe CmmExpr)) -> (HappyAbsSyn )
    happyIn23 :: CmmParse (Maybe CmmExpr) -> HappyAbsSyn
    happyIn23 CmmParse (Maybe CmmExpr)
    x = HappyWrap23 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# (CmmParse (Maybe CmmExpr) -> HappyWrap23
    HappyWrap23 CmmParse (Maybe CmmExpr)
    x)
    {-# INLINE happyIn23 #-}
    happyOut23 :: (HappyAbsSyn ) -> HappyWrap23
    happyOut23 :: HappyAbsSyn -> HappyWrap23
    happyOut23 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap23
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut23 #-}
    newtype HappyWrap24 = HappyWrap24 (CmmParse CmmExpr)
    happyIn24 :: (CmmParse CmmExpr) -> (HappyAbsSyn )
    happyIn24 :: CmmParse CmmExpr -> HappyAbsSyn
    happyIn24 CmmParse CmmExpr
    x = HappyWrap24 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# (CmmParse CmmExpr -> HappyWrap24
    HappyWrap24 CmmParse CmmExpr
    x)
    {-# INLINE happyIn24 #-}
    happyOut24 :: (HappyAbsSyn ) -> HappyWrap24
    happyOut24 :: HappyAbsSyn -> HappyWrap24
    happyOut24 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap24
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut24 #-}
    newtype HappyWrap25 = HappyWrap25 (CmmReturnInfo)
    happyIn25 :: (CmmReturnInfo) -> (HappyAbsSyn )
    happyIn25 :: CmmReturnInfo -> HappyAbsSyn
    happyIn25 CmmReturnInfo
    x = HappyWrap25 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# (CmmReturnInfo -> HappyWrap25
    HappyWrap25 CmmReturnInfo
    x)
    {-# INLINE happyIn25 #-}
    happyOut25 :: (HappyAbsSyn ) -> HappyWrap25
    happyOut25 :: HappyAbsSyn -> HappyWrap25
    happyOut25 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap25
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut25 #-}
    newtype HappyWrap26 = HappyWrap26 (CmmParse BoolExpr)
    happyIn26 :: (CmmParse BoolExpr) -> (HappyAbsSyn )
    happyIn26 :: CmmParse BoolExpr -> HappyAbsSyn
    happyIn26 CmmParse BoolExpr
    x = HappyWrap26 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# (CmmParse BoolExpr -> HappyWrap26
    HappyWrap26 CmmParse BoolExpr
    x)
    {-# INLINE happyIn26 #-}
    happyOut26 :: (HappyAbsSyn ) -> HappyWrap26
    happyOut26 :: HappyAbsSyn -> HappyWrap26
    happyOut26 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap26
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut26 #-}
    newtype HappyWrap27 = HappyWrap27 (CmmParse BoolExpr)
    happyIn27 :: (CmmParse BoolExpr) -> (HappyAbsSyn )
    happyIn27 :: CmmParse BoolExpr -> HappyAbsSyn
    happyIn27 CmmParse BoolExpr
    x = HappyWrap27 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# (CmmParse BoolExpr -> HappyWrap27
    HappyWrap27 CmmParse BoolExpr
    x)
    {-# INLINE happyIn27 #-}
    happyOut27 :: (HappyAbsSyn ) -> HappyWrap27
    happyOut27 :: HappyAbsSyn -> HappyWrap27
    happyOut27 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap27
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut27 #-}
    newtype HappyWrap28 = HappyWrap28 (Safety)
    happyIn28 :: (Safety) -> (HappyAbsSyn )
    happyIn28 :: Safety -> HappyAbsSyn
    happyIn28 Safety
    x = HappyWrap28 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# (Safety -> HappyWrap28
    HappyWrap28 Safety
    x)
    {-# INLINE happyIn28 #-}
    happyOut28 :: (HappyAbsSyn ) -> HappyWrap28
    happyOut28 :: HappyAbsSyn -> HappyWrap28
    happyOut28 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap28
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut28 #-}
    newtype HappyWrap29 = HappyWrap29 ([GlobalReg])
    happyIn29 :: ([GlobalReg]) -> (HappyAbsSyn )
    happyIn29 :: [GlobalReg] -> HappyAbsSyn
    happyIn29 [GlobalReg]
    x = HappyWrap29 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# ([GlobalReg] -> HappyWrap29
    HappyWrap29 [GlobalReg]
    x)
    {-# INLINE happyIn29 #-}
    happyOut29 :: (HappyAbsSyn ) -> HappyWrap29
    happyOut29 :: HappyAbsSyn -> HappyWrap29
    happyOut29 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap29
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut29 #-}
    newtype HappyWrap30 = HappyWrap30 ([GlobalRegUse])
    happyIn30 :: ([GlobalRegUse]) -> (HappyAbsSyn )
    happyIn30 :: [GlobalRegUse] -> HappyAbsSyn
    happyIn30 [GlobalRegUse]
    x = HappyWrap30 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# ([GlobalRegUse] -> HappyWrap30
    HappyWrap30 [GlobalRegUse]
    x)
    {-# INLINE happyIn30 #-}
    happyOut30 :: (HappyAbsSyn ) -> HappyWrap30
    happyOut30 :: HappyAbsSyn -> HappyWrap30
    happyOut30 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap30
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut30 #-}
    newtype HappyWrap31 = HappyWrap31 (Maybe (Integer,Integer))
    happyIn31 :: (Maybe (Integer,Integer)) -> (HappyAbsSyn )
    happyIn31 :: Maybe (Integer, Integer) -> HappyAbsSyn
    happyIn31 Maybe (Integer, Integer)
    x = HappyWrap31 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# (Maybe (Integer, Integer) -> HappyWrap31
    HappyWrap31 Maybe (Integer, Integer)
    x)
    {-# INLINE happyIn31 #-}
    happyOut31 :: (HappyAbsSyn ) -> HappyWrap31
    happyOut31 :: HappyAbsSyn -> HappyWrap31
    happyOut31 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap31
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut31 #-}
    newtype HappyWrap32 = HappyWrap32 ([CmmParse ([Integer],Either BlockId (CmmParse ()))])
    happyIn32 :: ([CmmParse ([Integer],Either BlockId (CmmParse ()))]) -> (HappyAbsSyn )
    happyIn32 :: [CmmParse ([Integer], Either BlockId (CmmParse ()))] -> HappyAbsSyn
    happyIn32 [CmmParse ([Integer], Either BlockId (CmmParse ()))]
    x = HappyWrap32 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# ([CmmParse ([Integer], Either BlockId (CmmParse ()))] -> HappyWrap32
    HappyWrap32 [CmmParse ([Integer], Either BlockId (CmmParse ()))]
    x)
    {-# INLINE happyIn32 #-}
    happyOut32 :: (HappyAbsSyn ) -> HappyWrap32
    happyOut32 :: HappyAbsSyn -> HappyWrap32
    happyOut32 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap32
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut32 #-}
    newtype HappyWrap33 = HappyWrap33 (CmmParse ([Integer],Either BlockId (CmmParse ())))
    happyIn33 :: (CmmParse ([Integer],Either BlockId (CmmParse ()))) -> (HappyAbsSyn )
    happyIn33 :: CmmParse ([Integer], Either BlockId (CmmParse ())) -> HappyAbsSyn
    happyIn33 CmmParse ([Integer], Either BlockId (CmmParse ()))
    x = HappyWrap33 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# (CmmParse ([Integer], Either BlockId (CmmParse ())) -> HappyWrap33
    HappyWrap33 CmmParse ([Integer], Either BlockId (CmmParse ()))
    x)
    {-# INLINE happyIn33 #-}
    happyOut33 :: (HappyAbsSyn ) -> HappyWrap33
    happyOut33 :: HappyAbsSyn -> HappyWrap33
    happyOut33 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap33
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut33 #-}
    newtype HappyWrap34 = HappyWrap34 (CmmParse (Either BlockId (CmmParse ())))
    happyIn34 :: (CmmParse (Either BlockId (CmmParse ()))) -> (HappyAbsSyn )
    happyIn34 :: CmmParse (Either BlockId (CmmParse ())) -> HappyAbsSyn
    happyIn34 CmmParse (Either BlockId (CmmParse ()))
    x = HappyWrap34 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# (CmmParse (Either BlockId (CmmParse ())) -> HappyWrap34
    HappyWrap34 CmmParse (Either BlockId (CmmParse ()))
    x)
    {-# INLINE happyIn34 #-}
    happyOut34 :: (HappyAbsSyn ) -> HappyWrap34
    happyOut34 :: HappyAbsSyn -> HappyWrap34
    happyOut34 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap34
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut34 #-}
    newtype HappyWrap35 = HappyWrap35 ([Integer])
    happyIn35 :: ([Integer]) -> (HappyAbsSyn )
    happyIn35 :: [Integer] -> HappyAbsSyn
    happyIn35 [Integer]
    x = HappyWrap35 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# ([Integer] -> HappyWrap35
    HappyWrap35 [Integer]
    x)
    {-# INLINE happyIn35 #-}
    happyOut35 :: (HappyAbsSyn ) -> HappyWrap35
    happyOut35 :: HappyAbsSyn -> HappyWrap35
    happyOut35 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap35
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut35 #-}
    newtype HappyWrap36 = HappyWrap36 (Maybe (CmmParse ()))
    happyIn36 :: (Maybe (CmmParse ())) -> (HappyAbsSyn )
    happyIn36 :: Maybe (CmmParse ()) -> HappyAbsSyn
    happyIn36 Maybe (CmmParse ())
    x = HappyWrap36 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# (Maybe (CmmParse ()) -> HappyWrap36
    HappyWrap36 Maybe (CmmParse ())
    x)
    {-# INLINE happyIn36 #-}
    happyOut36 :: (HappyAbsSyn ) -> HappyWrap36
    happyOut36 :: HappyAbsSyn -> HappyWrap36
    happyOut36 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap36
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut36 #-}
    newtype HappyWrap37 = HappyWrap37 (CmmParse ())
    happyIn37 :: (CmmParse ()) -> (HappyAbsSyn )
    happyIn37 :: CmmParse () -> HappyAbsSyn
    happyIn37 CmmParse ()
    x = HappyWrap37 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# (CmmParse () -> HappyWrap37
    HappyWrap37 CmmParse ()
    x)
    {-# INLINE happyIn37 #-}
    happyOut37 :: (HappyAbsSyn ) -> HappyWrap37
    happyOut37 :: HappyAbsSyn -> HappyWrap37
    happyOut37 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap37
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut37 #-}
    newtype HappyWrap38 = HappyWrap38 (Maybe Bool)
    happyIn38 :: (Maybe Bool) -> (HappyAbsSyn )
    happyIn38 :: Maybe Bool -> HappyAbsSyn
    happyIn38 Maybe Bool
    x = HappyWrap38 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# (Maybe Bool -> HappyWrap38
    HappyWrap38 Maybe Bool
    x)
    {-# INLINE happyIn38 #-}
    happyOut38 :: (HappyAbsSyn ) -> HappyWrap38
    happyOut38 :: HappyAbsSyn -> HappyWrap38
    happyOut38 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap38
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut38 #-}
    newtype HappyWrap39 = HappyWrap39 (CmmParse CmmExpr)
    happyIn39 :: (CmmParse CmmExpr) -> (HappyAbsSyn )
    happyIn39 :: CmmParse CmmExpr -> HappyAbsSyn
    happyIn39 CmmParse CmmExpr
    x = HappyWrap39 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# (CmmParse CmmExpr -> HappyWrap39
    HappyWrap39 CmmParse CmmExpr
    x)
    {-# INLINE happyIn39 #-}
    happyOut39 :: (HappyAbsSyn ) -> HappyWrap39
    happyOut39 :: HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap39
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut39 #-}
    newtype HappyWrap40 = HappyWrap40 (CmmParse CmmExpr)
    happyIn40 :: (CmmParse CmmExpr) -> (HappyAbsSyn )
    happyIn40 :: CmmParse CmmExpr -> HappyAbsSyn
    happyIn40 CmmParse CmmExpr
    x = HappyWrap40 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# (CmmParse CmmExpr -> HappyWrap40
    HappyWrap40 CmmParse CmmExpr
    x)
    {-# INLINE happyIn40 #-}
    happyOut40 :: (HappyAbsSyn ) -> HappyWrap40
    happyOut40 :: HappyAbsSyn -> HappyWrap40
    happyOut40 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap40
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut40 #-}
    newtype HappyWrap41 = HappyWrap41 (CmmType)
    happyIn41 :: (CmmType) -> (HappyAbsSyn )
    happyIn41 :: CmmType -> HappyAbsSyn
    happyIn41 CmmType
    x = HappyWrap41 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# (CmmType -> HappyWrap41
    HappyWrap41 CmmType
    x)
    {-# INLINE happyIn41 #-}
    happyOut41 :: (HappyAbsSyn ) -> HappyWrap41
    happyOut41 :: HappyAbsSyn -> HappyWrap41
    happyOut41 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap41
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut41 #-}
    newtype HappyWrap42 = HappyWrap42 ([CmmParse (CmmExpr, ForeignHint)])
    happyIn42 :: ([CmmParse (CmmExpr, ForeignHint)]) -> (HappyAbsSyn )
    happyIn42 :: [CmmParse (CmmExpr, ForeignHint)] -> HappyAbsSyn
    happyIn42 [CmmParse (CmmExpr, ForeignHint)]
    x = HappyWrap42 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# ([CmmParse (CmmExpr, ForeignHint)] -> HappyWrap42
    HappyWrap42 [CmmParse (CmmExpr, ForeignHint)]
    x)
    {-# INLINE happyIn42 #-}
    happyOut42 :: (HappyAbsSyn ) -> HappyWrap42
    happyOut42 :: HappyAbsSyn -> HappyWrap42
    happyOut42 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap42
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut42 #-}
    newtype HappyWrap43 = HappyWrap43 ([CmmParse (CmmExpr, ForeignHint)])
    happyIn43 :: ([CmmParse (CmmExpr, ForeignHint)]) -> (HappyAbsSyn )
    happyIn43 :: [CmmParse (CmmExpr, ForeignHint)] -> HappyAbsSyn
    happyIn43 [CmmParse (CmmExpr, ForeignHint)]
    x = HappyWrap43 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# ([CmmParse (CmmExpr, ForeignHint)] -> HappyWrap43
    HappyWrap43 [CmmParse (CmmExpr, ForeignHint)]
    x)
    {-# INLINE happyIn43 #-}
    happyOut43 :: (HappyAbsSyn ) -> HappyWrap43
    happyOut43 :: HappyAbsSyn -> HappyWrap43
    happyOut43 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap43
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut43 #-}
    newtype HappyWrap44 = HappyWrap44 (CmmParse (CmmExpr, ForeignHint))
    happyIn44 :: (CmmParse (CmmExpr, ForeignHint)) -> (HappyAbsSyn )
    happyIn44 :: CmmParse (CmmExpr, ForeignHint) -> HappyAbsSyn
    happyIn44 CmmParse (CmmExpr, ForeignHint)
    x = HappyWrap44 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# (CmmParse (CmmExpr, ForeignHint) -> HappyWrap44
    HappyWrap44 CmmParse (CmmExpr, ForeignHint)
    x)
    {-# INLINE happyIn44 #-}
    happyOut44 :: (HappyAbsSyn ) -> HappyWrap44
    happyOut44 :: HappyAbsSyn -> HappyWrap44
    happyOut44 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap44
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut44 #-}
    newtype HappyWrap45 = HappyWrap45 ([CmmParse CmmExpr])
    happyIn45 :: ([CmmParse CmmExpr]) -> (HappyAbsSyn )
    happyIn45 :: [CmmParse CmmExpr] -> HappyAbsSyn
    happyIn45 [CmmParse CmmExpr]
    x = HappyWrap45 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# ([CmmParse CmmExpr] -> HappyWrap45
    HappyWrap45 [CmmParse CmmExpr]
    x)
    {-# INLINE happyIn45 #-}
    happyOut45 :: (HappyAbsSyn ) -> HappyWrap45
    happyOut45 :: HappyAbsSyn -> HappyWrap45
    happyOut45 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap45
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut45 #-}
    newtype HappyWrap46 = HappyWrap46 ([CmmParse CmmExpr])
    happyIn46 :: ([CmmParse CmmExpr]) -> (HappyAbsSyn )
    happyIn46 :: [CmmParse CmmExpr] -> HappyAbsSyn
    happyIn46 [CmmParse CmmExpr]
    x = HappyWrap46 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# ([CmmParse CmmExpr] -> HappyWrap46
    HappyWrap46 [CmmParse CmmExpr]
    x)
    {-# INLINE happyIn46 #-}
    happyOut46 :: (HappyAbsSyn ) -> HappyWrap46
    happyOut46 :: HappyAbsSyn -> HappyWrap46
    happyOut46 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap46
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut46 #-}
    newtype HappyWrap47 = HappyWrap47 (CmmParse CmmExpr)
    happyIn47 :: (CmmParse CmmExpr) -> (HappyAbsSyn )
    happyIn47 :: CmmParse CmmExpr -> HappyAbsSyn
    happyIn47 CmmParse CmmExpr
    x = HappyWrap47 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# (CmmParse CmmExpr -> HappyWrap47
    HappyWrap47 CmmParse CmmExpr
    x)
    {-# INLINE happyIn47 #-}
    happyOut47 :: (HappyAbsSyn ) -> HappyWrap47
    happyOut47 :: HappyAbsSyn -> HappyWrap47
    happyOut47 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap47
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut47 #-}
    newtype HappyWrap48 = HappyWrap48 ([CmmParse (LocalReg, ForeignHint)])
    happyIn48 :: ([CmmParse (LocalReg, ForeignHint)]) -> (HappyAbsSyn )
    happyIn48 :: [CmmParse (LocalReg, ForeignHint)] -> HappyAbsSyn
    happyIn48 [CmmParse (LocalReg, ForeignHint)]
    x = HappyWrap48 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# ([CmmParse (LocalReg, ForeignHint)] -> HappyWrap48
    HappyWrap48 [CmmParse (LocalReg, ForeignHint)]
    x)
    {-# INLINE happyIn48 #-}
    happyOut48 :: (HappyAbsSyn ) -> HappyWrap48
    happyOut48 :: HappyAbsSyn -> HappyWrap48
    happyOut48 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap48
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut48 #-}
    newtype HappyWrap49 = HappyWrap49 ([CmmParse (LocalReg, ForeignHint)])
    happyIn49 :: ([CmmParse (LocalReg, ForeignHint)]) -> (HappyAbsSyn )
    happyIn49 :: [CmmParse (LocalReg, ForeignHint)] -> HappyAbsSyn
    happyIn49 [CmmParse (LocalReg, ForeignHint)]
    x = HappyWrap49 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# ([CmmParse (LocalReg, ForeignHint)] -> HappyWrap49
    HappyWrap49 [CmmParse (LocalReg, ForeignHint)]
    x)
    {-# INLINE happyIn49 #-}
    happyOut49 :: (HappyAbsSyn ) -> HappyWrap49
    happyOut49 :: HappyAbsSyn -> HappyWrap49
    happyOut49 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap49
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut49 #-}
    newtype HappyWrap50 = HappyWrap50 (CmmParse (LocalReg, ForeignHint))
    happyIn50 :: (CmmParse (LocalReg, ForeignHint)) -> (HappyAbsSyn )
    happyIn50 :: CmmParse (LocalReg, ForeignHint) -> HappyAbsSyn
    happyIn50 CmmParse (LocalReg, ForeignHint)
    x = HappyWrap50 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# (CmmParse (LocalReg, ForeignHint) -> HappyWrap50
    HappyWrap50 CmmParse (LocalReg, ForeignHint)
    x)
    {-# INLINE happyIn50 #-}
    happyOut50 :: (HappyAbsSyn ) -> HappyWrap50
    happyOut50 :: HappyAbsSyn -> HappyWrap50
    happyOut50 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap50
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut50 #-}
    newtype HappyWrap51 = HappyWrap51 (CmmParse LocalReg)
    happyIn51 :: (CmmParse LocalReg) -> (HappyAbsSyn )
    happyIn51 :: CmmParse LocalReg -> HappyAbsSyn
    happyIn51 CmmParse LocalReg
    x = HappyWrap51 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# (CmmParse LocalReg -> HappyWrap51
    HappyWrap51 CmmParse LocalReg
    x)
    {-# INLINE happyIn51 #-}
    happyOut51 :: (HappyAbsSyn ) -> HappyWrap51
    happyOut51 :: HappyAbsSyn -> HappyWrap51
    happyOut51 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap51
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut51 #-}
    newtype HappyWrap52 = HappyWrap52 (CmmParse CmmReg)
    happyIn52 :: (CmmParse CmmReg) -> (HappyAbsSyn )
    happyIn52 :: CmmParse CmmReg -> HappyAbsSyn
    happyIn52 CmmParse CmmReg
    x = HappyWrap52 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# (CmmParse CmmReg -> HappyWrap52
    HappyWrap52 CmmParse CmmReg
    x)
    {-# INLINE happyIn52 #-}
    happyOut52 :: (HappyAbsSyn ) -> HappyWrap52
    happyOut52 :: HappyAbsSyn -> HappyWrap52
    happyOut52 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap52
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut52 #-}
    newtype HappyWrap53 = HappyWrap53 (Maybe [CmmParse LocalReg])
    happyIn53 :: (Maybe [CmmParse LocalReg]) -> (HappyAbsSyn )
    happyIn53 :: Maybe [CmmParse LocalReg] -> HappyAbsSyn
    happyIn53 Maybe [CmmParse LocalReg]
    x = HappyWrap53 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# (Maybe [CmmParse LocalReg] -> HappyWrap53
    HappyWrap53 Maybe [CmmParse LocalReg]
    x)
    {-# INLINE happyIn53 #-}
    happyOut53 :: (HappyAbsSyn ) -> HappyWrap53
    happyOut53 :: HappyAbsSyn -> HappyWrap53
    happyOut53 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap53
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut53 #-}
    newtype HappyWrap54 = HappyWrap54 ([CmmParse LocalReg])
    happyIn54 :: ([CmmParse LocalReg]) -> (HappyAbsSyn )
    happyIn54 :: [CmmParse LocalReg] -> HappyAbsSyn
    happyIn54 [CmmParse LocalReg]
    x = HappyWrap54 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# ([CmmParse LocalReg] -> HappyWrap54
    HappyWrap54 [CmmParse LocalReg]
    x)
    {-# INLINE happyIn54 #-}
    happyOut54 :: (HappyAbsSyn ) -> HappyWrap54
    happyOut54 :: HappyAbsSyn -> HappyWrap54
    happyOut54 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap54
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut54 #-}
    newtype HappyWrap55 = HappyWrap55 ([CmmParse LocalReg])
    happyIn55 :: ([CmmParse LocalReg]) -> (HappyAbsSyn )
    happyIn55 :: [CmmParse LocalReg] -> HappyAbsSyn
    happyIn55 [CmmParse LocalReg]
    x = HappyWrap55 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# ([CmmParse LocalReg] -> HappyWrap55
    HappyWrap55 [CmmParse LocalReg]
    x)
    {-# INLINE happyIn55 #-}
    happyOut55 :: (HappyAbsSyn ) -> HappyWrap55
    happyOut55 :: HappyAbsSyn -> HappyWrap55
    happyOut55 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap55
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut55 #-}
    newtype HappyWrap56 = HappyWrap56 (CmmParse LocalReg)
    happyIn56 :: (CmmParse LocalReg) -> (HappyAbsSyn )
    happyIn56 :: CmmParse LocalReg -> HappyAbsSyn
    happyIn56 CmmParse LocalReg
    x = HappyWrap56 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# (CmmParse LocalReg -> HappyWrap56
    HappyWrap56 CmmParse LocalReg
    x)
    {-# INLINE happyIn56 #-}
    happyOut56 :: (HappyAbsSyn ) -> HappyWrap56
    happyOut56 :: HappyAbsSyn -> HappyWrap56
    happyOut56 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap56
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut56 #-}
    newtype HappyWrap57 = HappyWrap57 (CmmType)
    happyIn57 :: (CmmType) -> (HappyAbsSyn )
    happyIn57 :: CmmType -> HappyAbsSyn
    happyIn57 CmmType
    x = HappyWrap57 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# (CmmType -> HappyWrap57
    HappyWrap57 CmmType
    x)
    {-# INLINE happyIn57 #-}
    happyOut57 :: (HappyAbsSyn ) -> HappyWrap57
    happyOut57 :: HappyAbsSyn -> HappyWrap57
    happyOut57 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap57
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut57 #-}
    newtype HappyWrap58 = HappyWrap58 (CmmType)
    happyIn58 :: (CmmType) -> (HappyAbsSyn )
    happyIn58 :: CmmType -> HappyAbsSyn
    happyIn58 CmmType
    x = HappyWrap58 -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# (CmmType -> HappyWrap58
    HappyWrap58 CmmType
    x)
    {-# INLINE happyIn58 #-}
    happyOut58 :: (HappyAbsSyn ) -> HappyWrap58
    happyOut58 :: HappyAbsSyn -> HappyWrap58
    happyOut58 HappyAbsSyn
    x = HappyAbsSyn -> HappyWrap58
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOut58 #-}
    happyInTok :: (Located CmmToken) -> (HappyAbsSyn )
    happyInTok :: Located CmmToken -> HappyAbsSyn
    happyInTok Located CmmToken
    x = Located CmmToken -> HappyAbsSyn
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# Located CmmToken
    x
    {-# INLINE happyInTok #-}
    happyOutTok :: (HappyAbsSyn ) -> (Located CmmToken)
    happyOutTok :: HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    x = HappyAbsSyn -> Located CmmToken
    forall a b. a -> b
    Happy_GHC_Exts.unsafeCoerce# HappyAbsSyn
    x
    {-# INLINE happyOutTok #-}

    happyExpList :: HappyAddr
    happyExpList :: HappyAddr
    happyExpList = Addr# -> HappyAddr
    HappyA# Addr#
    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\x06\x20\xf8\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x0d\x40\xf0\xbf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\xc0\xff\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x01\x00\x00\xc0\x03\x7a\x6c\xfe\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x00\x00\xf0\x80\x1e\x9b\xff\x1f\x00\x00\x00\x00\x00\x00\x00\x10\x02\x00\x00\x80\x07\xf4\xd8\xfc\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\xff\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\xff\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x20\x32\x20\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x91\x01\x00\x00\x00\x00\x00\xf8\xff\x03\x00\x00\x00\x00\x00\x00\x00\x88\x0c\x00\x00\x00\x00\x00\xc0\xff\x1f\x00\x00\x00\x00\x00\x00\x00\x40\x64\x00\x00\x00\x00\x00\x00\xfe\xff\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x80\xff\x01\x00\x00\x00\x00\x00\x00\x00\x84\xc8\x00\x00\x00\x00\x00\x00\xfc\xff\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x80\x00\xfe\x87\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88\x0c\x00\x00\x00\x00\x00\xc0\xff\x1f\x00\x00\x00\x00\x00\x00\x00\x40\x64\x00\x00\x00\x00\x00\x00\xfe\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x10\x19\x00\x00\x00\x00\x00\x80\xff\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x06\x00\x00\x00\x00\x00\xe0\xff\x0f\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88\x0c\x00\x00\x00\x00\x00\xc0\xff\x1f\x00\x00\x00\x00\x00\x00\x00\x40\x64\x00\x00\x00\x00\x00\x00\xfe\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x10\x19\x00\x00\x00\x00\x00\x80\xff\x3f\x00\x00\x00\x00\x00\x00\x00\x00\xf2\x3f\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\xff\xe1\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\xfc\x0f\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x1f\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x02\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x10\x19\x10\x00\x00\x00\x00\x80\xff\x3f\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x10\x19\x00\x00\x00\x00\x00\x80\xff\x3f\x00\x00\x00\x00\x00\x00\x00\x80\xc8\x00\x00\xe0\x01\x00\x00\xfc\xff\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x19\x00\x00\x00\x00\x00\x80\xff\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x03\x00\x00\x00\x00\x00\x00\x00\x08\xe0\x7f\xf8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\xff\xc3\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\xf8\x1f\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x10\x19\x00\x00\x00\x00\x00\x80\xff\x3f\x00\x00\x00\x00\x00\x00\x00\x80\xc8\x00\x00\x00\x00\x00\x00\xfc\xff\x01\x00\x00\x00\x00\x00\x00\x00\x44\x06\x00\x00\x00\x00\x00\xe0\xff\x0f\x00\x00\x00\x00\x00\x00\x00\x20\x32\x00\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x91\x01\x00\x00\x00\x00\x00\xf8\xff\x03\x00\x00\x00\x00\x00\x00\x00\x88\x0c\x00\x00\x00\x00\x00\xc0\xff\x1f\x00\x00\x00\x00\x00\x00\x00\x40\x64\x00\x00\x00\x00\x00\x00\xfe\xff\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x10\x19\x00\x00\x00\x00\x00\x80\xff\x3f\x00\x00\x00\x00\x00\x00\x00\x80\xc8\x00\x00\x00\x00\x00\x00\xfc\xff\x01\x00\x00\x00\x00\x00\x00\x00\x44\x06\x00\x00\x00\x00\x00\xe0\xff\x0f\x00\x00\x00\x00\x00\x00\x00\x20\x32\x00\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x91\x01\x00\x00\x00\x00\x00\xf8\xff\x03\x00\x00\x00\x00\x00\x00\x00\x88\x0c\x00\x00\x00\x00\x00\xc0\xff\x1f\x00\x00\x00\x00\x00\x00\x00\x40\x64\x00\x00\x00\x00\x00\x00\xfe\xff\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\xc8\x80\x00\x00\x00\x00\x00\xfc\xff\x01\x00\x00\x00\x00\x00\x00\x00\x44\x06\x04\x00\x00\x00\x00\xe0\xff\x0f\x00\x00\x00\x00\x00\x00\x00\x20\x32\x00\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x02\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x40\x64\x00\x00\x00\x00\x00\x00\xfe\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x8f\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\xe0\x7f\xf8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x64\x00\x00\x00\x00\x00\x02\xfe\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x7f\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\xf8\x1f\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88\x0c\x00\x00\x00\x00\x00\xc0\xff\x1f\x00\x00\x00\x00\x00\x00\x00\x40\x64\x00\x00\x00\x00\x00\x00\xfe\xff\x00\x00\x00\x00\x00\x00\x00\x00\xc1\xff\xf0\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\xc8\x00\x00\x00\x00\x00\x00\xfc\xff\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x7f\xf8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x06\x00\x00\x00\x00\x00\xe0\xff\x0f\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x02\x00\x00\x80\x07\xf4\xd8\xfc\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x0f\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x7f\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\x03\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x1f\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x3f\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x81\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x07\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x1f\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\xfc\x0f\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88\x0c\x00\x00\x00\x00\x00\xc0\xff\x1f\x00\x00\x00\x00\x00\x00\x00\x40\x64\x00\x00\x00\x00\x00\x00\xfe\xff\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x10\x19\x00\x00\x00\x00\x00\x80\xff\x3f\x00\x00\x00\x00\x00\x00\x00\x80\xc8\x00\x00\x00\x00\x00\x00\xfc\xff\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\xff\xe1\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\xfc\x0f\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x00\xf8\xff\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\xc8\x00\x00\x00\x00\x00\x00\xfc\xff\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc2\xff\xf0\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\xfe\x87\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\xf0\x3f\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\xff\xe1\x07\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x80\x00\xfe\x87\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x06\x00\x00\x00\x00\x00\xe0\xff\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x04\x00\x00\x00\x0f\xe8\xb1\xf9\xff\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x08\x00\x00\x00\x1e\xd0\x63\xf3\xff\x03\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x02\x00\x00\x80\x07\xf4\xd8\xfc\xff\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#

    {-# NOINLINE happyExpListPerState #-}
    happyExpListPerState :: ByteOff -> [String]
    happyExpListPerState ByteOff
    st =
        [String]
    token_strs_expected
      where token_strs :: [String]
    token_strs = [String
    "error",String
    "%dummy",String
    "%start_cmmParse",String
    "cmm",String
    "cmmtop",String
    "cmmdata",String
    "data_label",String
    "statics",String
    "static",String
    "lits",String
    "cmmproc",String
    "maybe_conv",String
    "maybe_body",String
    "info",String
    "body",String
    "decl",String
    "importNames",String
    "importName",String
    "names",String
    "stmt",String
    "unwind_regs",String
    "mem_ordering",String
    "expr_or_unknown",String
    "foreignLabel",String
    "opt_never_returns",String
    "bool_expr",String
    "bool_op",String
    "safety",String
    "vols",String
    "globals",String
    "maybe_range",String
    "arms",String
    "arm",String
    "arm_body",String
    "ints",String
    "default",String
    "else",String
    "cond_likely",String
    "expr",String
    "expr0",String
    "maybe_ty",String
    "cmm_hint_exprs0",String
    "cmm_hint_exprs",String
    "cmm_hint_expr",String
    "exprs0",String
    "exprs",String
    "reg",String
    "foreign_results",String
    "foreign_formals",String
    "foreign_formal",String
    "local_lreg",String
    "lreg",String
    "maybe_formals",String
    "formals0",String
    "formals",String
    "formal",String
    "type",String
    "typenot8",String
    "':'",String
    "';'",String
    "'{'",String
    "'}'",String
    "'['",String
    "']'",String
    "'('",String
    "')'",String
    "'='",String
    "'`'",String
    "'~'",String
    "'/'",String
    "'*'",String
    "'%'",String
    "'-'",String
    "'+'",String
    "'&'",String
    "'^'",String
    "'|'",String
    "'>'",String
    "'<'",String
    "','",String
    "'!'",String
    "'..'",String
    "'::'",String
    "'>>'",String
    "'<<'",String
    "'>='",String
    "'<='",String
    "'=='",String
    "'!='",String
    "'&&'",String
    "'||'",String
    "'True'",String
    "'False'",String
    "'likely'",String
    "'relaxed'",String
    "'acquire'",String
    "'release'",String
    "'seq_cst'",String
    "'CLOSURE'",String
    "'INFO_TABLE'",String
    "'INFO_TABLE_RET'",String
    "'INFO_TABLE_FUN'",String
    "'INFO_TABLE_CONSTR'",String
    "'INFO_TABLE_SELECTOR'",String
    "'else'",String
    "'export'",String
    "'section'",String
    "'goto'",String
    "'if'",String
    "'call'",String
    "'jump'",String
    "'foreign'",String
    "'never'",String
    "'prim'",String
    "'reserve'",String
    "'return'",String
    "'returns'",String
    "'import'",String
    "'switch'",String
    "'case'",String
    "'default'",String
    "'push'",String
    "'unwind'",String
    "'bits8'",String
    "'bits16'",String
    "'bits32'",String
    "'bits64'",String
    "'bits128'",String
    "'bits256'",String
    "'bits512'",String
    "'float32'",String
    "'float64'",String
    "'gcptr'",String
    "GLOBALREG",String
    "NAME",String
    "STRING",String
    "INT",String
    "FLOAT",String
    "%eof"]
            bit_start :: ByteOff
    bit_start = ByteOff
    st ByteOff -> ByteOff -> ByteOff
    forall a. Num a => a -> a -> a
    Prelude.* ByteOff
    139
            bit_end :: ByteOff
    bit_end = (ByteOff
    st ByteOff -> ByteOff -> ByteOff
    forall a. Num a => a -> a -> a
    Prelude.+ ByteOff
    1) ByteOff -> ByteOff -> ByteOff
    forall a. Num a => a -> a -> a
    Prelude.* ByteOff
    139
            read_bit :: ByteOff -> Bool
    read_bit = HappyAddr -> ByteOff -> Bool
    readArrayBit HappyAddr
    happyExpList
            bits :: [Bool]
    bits = (ByteOff -> Bool) -> [ByteOff] -> [Bool]
    forall a b. (a -> b) -> [a] -> [b]
    Prelude.map ByteOff -> Bool
    read_bit [ByteOff
    bit_start..ByteOff
    bit_end ByteOff -> ByteOff -> ByteOff
    forall a. Num a => a -> a -> a
    Prelude.- ByteOff
    1]
            bits_indexed :: [(Bool, ByteOff)]
    bits_indexed = [Bool] -> [ByteOff] -> [(Bool, ByteOff)]
    forall a b. [a] -> [b] -> [(a, b)]
    Prelude.zip [Bool]
    bits [ByteOff
    0..ByteOff
    138]
            token_strs_expected :: [String]
    token_strs_expected = ((Bool, ByteOff) -> [String]) -> [(Bool, ByteOff)] -> [String]
    forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b]
    Prelude.concatMap (Bool, ByteOff) -> [String]
    f [(Bool, ByteOff)]
    bits_indexed
            f :: (Bool, ByteOff) -> [String]
    f (Bool
    Prelude.False, ByteOff
    _) = []
            f (Bool
    Prelude.True, ByteOff
    nr) = [[String]
    token_strs [String] -> ByteOff -> String
    forall a. HasCallStack => [a] -> ByteOff -> a
    Prelude.!! ByteOff
    nr]

    happyActOffsets :: HappyAddr
    happyActOffsets :: HappyAddr
    happyActOffsets = Addr# -> HappyAddr
    HappyA# Addr#
    "\x4c\x01\x00\x00\xc3\xff\x4c\x01\x00\x00\x00\x00\xde\xff\x00\x00\xd6\xff\x00\x00\x30\x00\x33\x00\x39\x00\x55\x00\x78\x00\x8e\x00\x4c\x00\x4e\x00\xdb\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xad\x00\x9f\x00\x64\x00\x00\x00\x91\x00\x2a\x01\x0e\x01\x1a\x01\xe4\x00\xe9\x00\xef\x00\xf3\x00\xf6\x00\xf8\x00\x44\x01\x40\x01\x00\x00\x00\x00\x84\x00\x3c\x01\x00\x00\x35\x01\x37\x01\x39\x01\x3f\x01\x42\x01\x4d\x01\x07\x01\x00\x00\x09\x01\x00\x00\x00\x00\xdb\xff\x00\x00\x00\x00\x6f\x01\x65\x01\x00\x00\x1e\x01\x20\x01\x21\x01\x22\x01\x23\x01\x2e\x01\x61\x01\x00\x00\x74\x01\x51\x01\x00\x00\x00\x00\x2b\x00\x87\x01\x2b\x00\x2b\x00\x3c\x01\xf9\xff\x84\x01\x0a\x00\x00\x00\xdc\x04\x00\x00\x00\x00\x00\x00\x00\x00\x52\x01\x7d\x00\x8c\x00\x8c\x00\x8c\x00\x9a\x01\x9b\x01\x9c\x01\x5e\x01\x00\x00\x10\x00\x00\x00\x3c\x01\x00\x00\x95\x01\xbb\x01\xfd\xff\xc3\x01\xd0\x01\xd1\x01\x00\x00\xac\x01\x6f\x01\xff\xff\xce\x01\xe4\x01\xe8\x01\x05\x00\x88\x01\xb4\x01\xec\x01\xfa\x01\x00\x00\x04\x00\x00\x00\x8c\x00\x8c\x00\xb8\x01\x8c\x00\x00\x00\x00\x00\x00\x00\xfe\x01\xfe\x01\x00\x00\x00\x00\xc9\x01\xca\x01\xdc\x01\x00\x00\x3c\x01\xdd\x01\x25\x02\x8c\x00\x00\x00\x00\x00\x8c\x00\x3e\x02\x35\x02\x8c\x00\x8c\x00\xf2\x01\x8c\x00\x54\x03\x57\x02\x0c\x03\x15\x00\x00\x00\x90\x03\x7d\x00\x7d\x00\x50\x02\x4b\x02\x3f\x02\x00\x00\x4c\x02\x00\x00\x10\x02\x8c\x00\x5b\x00\x11\x02\x52\x02\x5c\x02\x00\x00\x00\x00\x00\x00\x8c\x00\x15\x02\x20\x02\x3c\x01\x00\x02\x71\x02\x00\x00\x65\x02\x3c\x00\x66\x02\x00\x00\x00\x00\x6d\x00\x68\x02\x3d\x03\x8c\x00\x8c\x00\x8c\x00\x8c\x00\x8c\x00\x8c\x00\x8c\x00\x8c\x00\x8c\x00\x8c\x00\x8c\x00\x8c\x00\x8c\x00\x8c\x00\x8c\x00\x8c\x00\x09\x00\x54\x02\x7d\x00\x7d\x00\x8c\x00\x77\x02\x0c\x00\x8c\x00\x61\x00\x68\x03\x72\x02\x00\x00\x63\x02\x3c\x02\x74\x02\xa5\x00\x00\x00\x7f\x02\x7c\x03\x86\x02\x73\x02\x82\x02\x7c\x02\x7d\x02\x7e\x02\x00\x00\x3c\x01\x00\x00\x11\x00\x8e\x02\x00\x00\x3d\x03\x8c\x00\x91\x02\x9c\x02\x55\x02\x00\x00\x9d\x02\x96\x02\x56\x02\xa7\x02\xac\x02\xad\x02\xa8\x02\xb9\x02\xb2\x02\x8c\x00\x8c\x00\x8b\x02\x00\x00\x8c\x00\x00\x00\x6f\x02\x78\x02\x79\x02\x00\x00\x7a\x02\x00\x00\x00\x00\xbc\x02\xb0\x02\x90\x03\x00\x00\xb5\x00\x8c\x02\x87\x02\xd3\x02\x8c\x00\xb5\x00\x00\x00\xcf\x02\xd2\x02\x00\x00\xda\x02\xcb\x02\x00\x00\xdb\x02\x99\x00\xc2\x02\xe3\x02\x2b\x00\xa2\x02\xa4\x03\xa4\x03\xa4\x03\xa4\x03\x99\x01\x99\x01\xa4\x03\xa4\x03\xfb\x04\xf8\x03\x02\x05\x11\x00\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbd\x02\xe7\x02\x00\x00\xed\x02\xf4\x02\x00\x00\xf5\x02\xa5\x02\xf1\x02\x8c\x00\x8c\x00\x8c\x00\x8c\x00\x8c\x00\x00\x00\xf9\x02\x9b\x00\xfc\x02\xbe\x02\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x03\x03\xcc\x02\xce\x02\xc5\x02\x00\x00\xc9\x02\x00\x00\x00\x03\x01\x03\x0d\x03\x0e\x03\x1a\x03\x00\x00\xbf\x02\xd9\x02\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd7\x02\xde\x02\xe0\x02\xe1\x02\x00\x00\x2f\x03\x26\x03\x00\x00\x37\x03\x3c\x03\x00\x00\x00\x00\x8c\x00\x00\x00\x00\x00\x36\x03\x3e\x03\x18\x03\x25\x03\x14\x02\xf3\x02\xea\x00\x40\x03\x00\x00\x3f\x03\x4b\x03\x8c\x00\x28\x02\x52\x03\x8c\x00\x08\x03\x00\x00\x5c\x03\x00\x00\x8c\x00\x00\x00\x67\x03\x00\x00\x00\x00\x57\x03\x69\x03\x00\x00\x1c\x03\x0d\x00\x6a\x03\x6b\x03\x7d\x03\x65\x03\x00\x00\x31\x03\x46\x03\x47\x03\x00\x00\x2b\x00\x59\x03\x00\x00\x2b\x00\xa5\x03\x2b\x00\xa0\x03\x00\x00\x72\x03\x00\x00\x00\x00\x00\x00\x00\x00\xb8\x03\x80\x03\xba\x03\xb9\x03\x00\x00\xc2\x03\xcd\x03\xd4\x03\xd1\x03\xc4\x03\xc5\x03\x95\x03\x8f\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x03\xe5\x03\x00\x00\x9f\x03\xe7\x03\x00\x00\x00\x00"#

    happyGotoOffsets :: HappyAddr
    happyGotoOffsets :: HappyAddr
    happyGotoOffsets = Addr# -> HappyAddr
    HappyA# Addr#
    "\x20\x00\x00\x00\x00\x00\x24\x00\x00\x00\x00\x00\xe8\x03\x00\x00\xe2\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe3\x03\x00\x00\xd3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc9\x03\x00\x00\x00\x00\xf4\x03\x91\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe6\x03\x00\x00\x0e\x04\x00\x00\x00\x00\xd5\x00\x00\x00\x00\x00\xfe\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\x00\x00\x00\xff\x00\x1c\x01\xb0\x00\x00\x00\x00\x00\xfd\x03\x00\x00\xdf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa5\x01\x5a\x00\x04\x04\x09\x04\x00\x00\xf9\x03\x00\x00\x0a\x04\x00\x00\x00\x00\x00\x00\x46\x00\x00\x00\x14\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x12\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x04\x1e\x04\x00\x00\x21\x04\x00\x00\x00\x00\x00\x00\xfe\x03\x0d\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbd\x01\x00\x00\x00\x00\x27\x04\x00\x00\x00\x00\xbf\x01\x00\x00\x00\x00\xa7\x03\x2d\x04\x00\x00\xaa\x03\x00\x00\x10\x04\x00\x00\x0c\x04\x00\x00\x00\x00\xa7\x01\xa9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x04\x36\x04\x77\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x04\x00\x00\x1f\x04\xcb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x04\x4a\x04\x50\x04\x53\x04\x59\x04\x5f\x04\x68\x04\x6d\x04\x76\x04\x7c\x04\x82\x04\x85\x04\x8b\x04\x91\x04\x9a\x04\x9f\x04\x00\x00\x00\x00\xab\x01\xc1\x01\xbe\x03\x00\x00\x26\x04\xc1\x03\x16\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x01\x00\x00\x00\x00\x32\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xae\x04\xb4\x04\x00\x00\x00\x00\xd5\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x04\xfa\x00\x00\x00\x00\x00\x36\x01\x52\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\x03\xa1\x03\xb7\x04\xbd\x04\xc3\x04\x00\x00\x00\x00\x00\x00\x00\x00\x46\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x04\x0d\x01\x4b\x04\x00\x00\x58\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xec\x03\x00\x00\x00\x00\x00\x00\x00\x00\x43\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcc\x04\x00\x00\x00\x00\xf5\x03\x5a\x04\x00\x00\x00\x00\x00\x00\xfb\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x04\x69\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2f\x01\x00\x00\x00\x00\x32\x01\x00\x00\x3e\x01\x00\x00\x00\x00\x63\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#

    happyAdjustOffset :: Happy_GHC_Exts.Int# -> Happy_GHC_Exts.Int#
    happyAdjustOffset :: Int# -> Int#
    happyAdjustOffset Int#
    off = Int#
    off

    happyDefActions :: HappyAddr
    happyDefActions :: HappyAddr
    happyDefActions = Addr# -> HappyAddr
    HappyA# Addr#
    "\xfe\xff\x00\x00\x00\x00\xfe\xff\xfb\xff\xfc\xff\xeb\xff\xfa\xff\x00\x00\x57\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\xff\x56\xff\x55\xff\x54\xff\x53\xff\x52\xff\x51\xff\x50\xff\x4f\xff\x4e\xff\xe7\xff\x00\x00\xda\xff\x00\x00\xd8\xff\x00\x00\x00\x00\x00\x00\xd5\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\xff\xea\xff\xfd\xff\x00\x00\x5e\xff\xdd\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\xff\x00\x00\xd6\xff\xd7\xff\x00\x00\xdc\xff\xd9\xff\xf6\xff\x00\x00\xd4\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\xff\x5b\xff\x00\x00\xec\xff\xe9\xff\xe0\xff\x00\x00\xe0\xff\xe0\xff\x00\x00\x00\x00\x00\x00\x00\x00\xd3\xff\x00\x00\xbb\xff\xb9\xff\xba\xff\xb8\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\xff\x00\x00\x00\x00\x61\xff\x62\xff\x59\xff\x5c\xff\x5f\xff\xee\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\xff\x00\x00\xf6\xff\x00\x00\x57\xff\x00\x00\x58\xff\x00\x00\x00\x00\x00\x00\x00\x00\x82\xff\x7e\xff\x00\x00\xf3\xff\x00\x00\x00\x00\x00\x00\x00\x00\x6b\xff\x6c\xff\x7f\xff\x78\xff\x78\xff\xf5\xff\xf8\xff\x00\x00\x00\x00\x00\x00\xe2\xff\x5e\xff\x00\x00\x00\x00\x00\x00\x5a\xff\xd2\xff\x70\xff\x00\x00\x00\x00\x70\xff\x00\x00\x00\x00\x70\xff\x00\x00\x00\x00\x00\x00\x96\xff\xb2\xff\xb1\xff\x00\x00\x00\x00\x00\x00\x00\x00\x68\xff\x65\xff\x00\x00\x63\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xde\xff\xdf\xff\xe8\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\xff\x00\x00\x67\xff\x00\x00\xc9\xff\xae\xff\x00\x00\xb2\xff\xb1\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\xff\x00\x00\x00\x00\x70\xff\x00\x00\x6e\xff\x00\x00\x6f\xff\x00\x00\x00\x00\x00\x00\x00\x00\xbe\xff\x00\x00\xee\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\xff\x00\x00\x81\xff\x84\xff\x00\x00\x85\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf4\xff\x00\x00\xee\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\xff\x70\xff\x77\xff\x00\x00\x00\x00\x00\x00\xe1\xff\x00\x00\xf9\xff\xed\xff\x00\x00\xbc\xff\xb6\xff\xb7\xff\x00\x00\xa3\xff\x00\x00\x00\x00\x00\x00\x00\x00\x62\xff\x00\x00\x00\x00\xaa\xff\x00\x00\xa7\xff\xc7\xff\x00\x00\xaf\xff\xb0\xff\x00\x00\xe0\xff\x00\x00\x87\xff\x86\xff\x89\xff\x8b\xff\x8f\xff\x90\xff\x88\xff\x8a\xff\x8c\xff\x8d\xff\x8e\xff\x91\xff\x92\xff\x93\xff\x94\xff\x95\xff\xad\xff\x69\xff\x66\xff\x00\x00\x00\x00\xd1\xff\x00\x00\x00\x00\xb5\xff\x00\x00\x00\x00\x00\x00\x70\xff\x76\xff\x00\x00\x00\x00\x00\x00\xc2\xff\x00\x00\x00\x00\x00\x00\x00\x00\xa9\xff\xa8\xff\x00\x00\xbf\xff\x6d\xff\xc8\xff\x00\x00\x9b\xff\xa3\xff\x00\x00\xc0\xff\x00\x00\xcb\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\xff\x00\x00\x00\x00\x00\x00\xf0\xff\xef\xff\xf2\xff\xf1\xff\x83\xff\x7d\xff\x7c\xff\x7a\xff\x00\x00\x00\x00\x00\x00\x00\x00\xbd\xff\x00\x00\x9e\xff\xa2\xff\x00\x00\x00\x00\xa5\xff\xc6\xff\x70\xff\xa6\xff\xc4\xff\x00\x00\x00\x00\x9a\xff\x00\x00\x00\x00\x00\x00\x72\xff\x00\x00\x75\xff\x74\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\xff\x71\xff\x00\x00\xce\xff\x70\xff\xc1\xff\x00\x00\x97\xff\x98\xff\x00\x00\x00\x00\xca\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe3\xff\x00\x00\x00\x00\x00\x00\xa1\xff\xe0\xff\x00\x00\x9d\xff\xe0\xff\x00\x00\xe0\xff\x00\x00\xd0\xff\xb4\xff\xab\xff\x73\xff\xcc\xff\xcf\xff\x00\x00\x00\x00\x00\x00\x00\x00\xc5\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe6\xff\xa0\xff\x9f\xff\x9c\xff\x99\xff\xc3\xff\xb3\xff\xcd\xff\x00\x00\x00\x00\xe4\xff\x00\x00\x00\x00\xe5\xff"#

    happyCheck :: HappyAddr
    happyCheck :: HappyAddr
    happyCheck = Addr# -> HappyAddr
    HappyA# Addr#
    "\xff\xff\x02\x00\x04\x00\x05\x00\x29\x00\x08\x00\x07\x00\x04\x00\x05\x00\x05\x00\x0b\x00\x06\x00\x03\x00\x0e\x00\x0f\x00\x05\x00\x03\x00\x01\x00\x06\x00\x16\x00\x51\x00\x02\x00\x12\x00\x07\x00\x3a\x00\x0d\x00\x07\x00\x17\x00\x07\x00\x0c\x00\x0d\x00\x0e\x00\x00\x00\x01\x00\x02\x00\x4d\x00\x00\x00\x01\x00\x02\x00\x07\x00\x4d\x00\x4e\x00\x0a\x00\x07\x00\x0c\x00\x02\x00\x0a\x00\x36\x00\x0c\x00\x38\x00\x07\x00\x35\x00\x36\x00\x20\x00\x21\x00\x07\x00\x35\x00\x36\x00\x07\x00\x32\x00\x2d\x00\x2e\x00\x2f\x00\x32\x00\x07\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x25\x00\x26\x00\x27\x00\x28\x00\x4f\x00\x35\x00\x36\x00\x4d\x00\x4c\x00\x35\x00\x36\x00\x30\x00\x07\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x07\x00\x38\x00\x39\x00\x3a\x00\x0b\x00\x3c\x00\x3d\x00\x0e\x00\x0f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x33\x00\x34\x00\x35\x00\x36\x00\x23\x00\x24\x00\x07\x00\x25\x00\x26\x00\x27\x00\x28\x00\x07\x00\x2b\x00\x02\x00\x03\x00\x0b\x00\x4d\x00\x4e\x00\x0e\x00\x0f\x00\x20\x00\x21\x00\x35\x00\x36\x00\x0b\x00\x0c\x00\x07\x00\x17\x00\x07\x00\x10\x00\x0b\x00\x12\x00\x4d\x00\x0e\x00\x0f\x00\x4e\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x07\x00\x4c\x00\x4d\x00\x02\x00\x0b\x00\x4d\x00\x2c\x00\x0e\x00\x0f\x00\x16\x00\x30\x00\x02\x00\x03\x00\x20\x00\x21\x00\x35\x00\x36\x00\x22\x00\x23\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x07\x00\x4d\x00\x3a\x00\x0d\x00\x0e\x00\x0d\x00\x0e\x00\x0e\x00\x35\x00\x36\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x35\x00\x36\x00\x35\x00\x36\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x0b\x00\x0c\x00\x2d\x00\x2e\x00\x2f\x00\x10\x00\x02\x00\x12\x00\x33\x00\x34\x00\x35\x00\x36\x00\x1c\x00\x1d\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x0b\x00\x0c\x00\x1c\x00\x1d\x00\x2c\x00\x10\x00\x03\x00\x12\x00\x30\x00\x16\x00\x4d\x00\x0b\x00\x0c\x00\x35\x00\x36\x00\x4d\x00\x10\x00\x4e\x00\x12\x00\x0b\x00\x0c\x00\x4d\x00\x0b\x00\x0c\x00\x10\x00\x4d\x00\x12\x00\x10\x00\x4d\x00\x12\x00\x4d\x00\x02\x00\x07\x00\x2c\x00\x0b\x00\x0c\x00\x16\x00\x30\x00\x16\x00\x10\x00\x16\x00\x12\x00\x35\x00\x36\x00\x2c\x00\x4d\x00\x16\x00\x4d\x00\x30\x00\x16\x00\x23\x00\x24\x00\x2c\x00\x35\x00\x36\x00\x2c\x00\x30\x00\x2a\x00\x2b\x00\x30\x00\x16\x00\x35\x00\x36\x00\x01\x00\x35\x00\x36\x00\x08\x00\x2c\x00\x35\x00\x36\x00\x4f\x00\x30\x00\x4f\x00\x4f\x00\x4f\x00\x4f\x00\x35\x00\x36\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x4d\x00\x30\x00\x31\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x3c\x00\x12\x00\x16\x00\x04\x00\x13\x00\x09\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x29\x00\x4d\x00\x23\x00\x24\x00\x23\x00\x24\x00\x4d\x00\x4d\x00\x05\x00\x07\x00\x2b\x00\x07\x00\x2b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x4c\x00\x16\x00\x35\x00\x36\x00\x35\x00\x36\x00\x04\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x16\x00\x17\x00\x16\x00\x17\x00\x16\x00\x17\x00\x16\x00\x17\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x23\x00\x24\x00\x23\x00\x24\x00\x23\x00\x24\x00\x23\x00\x24\x00\x2b\x00\x16\x00\x2b\x00\x05\x00\x2b\x00\x4d\x00\x2b\x00\x16\x00\x17\x00\x16\x00\x35\x00\x36\x00\x35\x00\x36\x00\x35\x00\x36\x00\x35\x00\x36\x00\x23\x00\x24\x00\x23\x00\x24\x00\x16\x00\x16\x00\x29\x00\x2a\x00\x2b\x00\x07\x00\x2b\x00\x05\x00\x02\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x35\x00\x36\x00\x35\x00\x36\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x02\x00\x4f\x00\x0a\x00\x4d\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x02\x00\x19\x00\x4f\x00\x4f\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x02\x00\x4f\x00\x4f\x00\x08\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x09\x00\x03\x00\x02\x00\x4f\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x02\x00\x08\x00\x08\x00\x16\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x05\x00\x4d\x00\x07\x00\x4e\x00\x0e\x00\x05\x00\x4d\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x4d\x00\x09\x00\x09\x00\x08\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x06\x00\x24\x00\x02\x00\x08\x00\x18\x00\x08\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x08\x00\x02\x00\x16\x00\x08\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x06\x00\x16\x00\x16\x00\x16\x00\x07\x00\x05\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x05\x00\x4d\x00\x06\x00\x4e\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x06\x00\x16\x00\x06\x00\x02\x00\x02\x00\x08\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x02\x00\x0a\x00\x4e\x00\x02\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x06\x00\x16\x00\x4f\x00\x4f\x00\x4f\x00\x3e\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x02\x00\x4f\x00\x08\x00\x06\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x06\x00\x06\x00\x16\x00\x20\x00\x08\x00\x01\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x4d\x00\x09\x00\x34\x00\x05\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x06\x00\x09\x00\x07\x00\x07\x00\x04\x00\x02\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x06\x00\x4c\x00\x3f\x00\x3e\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x07\x00\x4f\x00\x4c\x00\x16\x00\x16\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x08\x00\x16\x00\x16\x00\x4e\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x07\x00\x4f\x00\x4e\x00\x4e\x00\x01\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x04\x00\x16\x00\x01\x00\x08\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x08\x00\x08\x00\x2f\x00\x08\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x08\x00\x02\x00\x16\x00\x4e\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x09\x00\x02\x00\x08\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x03\x00\x4f\x00\x03\x00\x08\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x4e\x00\x16\x00\x16\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x16\x00\x4e\x00\x4e\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x4d\x00\x02\x00\x08\x00\x37\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x02\x00\x3b\x00\x02\x00\x04\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x23\x00\x24\x00\x04\x00\x26\x00\x27\x00\x28\x00\x23\x00\x24\x00\x2b\x00\x23\x00\x24\x00\x02\x00\x29\x00\x2a\x00\x2b\x00\x29\x00\x2a\x00\x2b\x00\x35\x00\x36\x00\x04\x00\x08\x00\x16\x00\x16\x00\x35\x00\x36\x00\x4f\x00\x35\x00\x36\x00\x23\x00\x24\x00\x4e\x00\x23\x00\x24\x00\x16\x00\x29\x00\x2a\x00\x2b\x00\x29\x00\x2a\x00\x2b\x00\x08\x00\x4f\x00\x08\x00\x08\x00\x0f\x00\x0f\x00\x35\x00\x36\x00\x0f\x00\x35\x00\x36\x00\x23\x00\x24\x00\x31\x00\x23\x00\x24\x00\x09\x00\x29\x00\x2a\x00\x2b\x00\x29\x00\x2a\x00\x2b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x35\x00\x36\x00\x0f\x00\x35\x00\x36\x00\x23\x00\x24\x00\x03\x00\x1a\x00\x1b\x00\x1b\x00\x29\x00\x2a\x00\x2b\x00\x23\x00\x24\x00\x06\x00\x11\x00\x27\x00\x28\x00\x23\x00\x24\x00\x2b\x00\x35\x00\x36\x00\x25\x00\x29\x00\x2a\x00\x2b\x00\x23\x00\x24\x00\x19\x00\x35\x00\x36\x00\x23\x00\x24\x00\x22\x00\x2b\x00\x35\x00\x36\x00\x25\x00\x14\x00\x2b\x00\x23\x00\x24\x00\x2f\x00\x06\x00\x35\x00\x36\x00\x23\x00\x24\x00\x2b\x00\x35\x00\x36\x00\x1a\x00\x23\x00\x24\x00\x2b\x00\x23\x00\x24\x00\x30\x00\x35\x00\x36\x00\x2b\x00\x23\x00\x24\x00\x2b\x00\x35\x00\x36\x00\x06\x00\x23\x00\x24\x00\x2b\x00\x35\x00\x36\x00\x09\x00\x35\x00\x36\x00\x2b\x00\x23\x00\x24\x00\x09\x00\x35\x00\x36\x00\x23\x00\x24\x00\x1a\x00\x2b\x00\x35\x00\x36\x00\x21\x00\x20\x00\x2b\x00\x23\x00\x24\x00\x11\x00\x1f\x00\x35\x00\x36\x00\x23\x00\x24\x00\x2b\x00\x35\x00\x36\x00\x18\x00\x23\x00\x24\x00\x2b\x00\x23\x00\x24\x00\x15\x00\x35\x00\x36\x00\x2b\x00\x23\x00\x24\x00\x2b\x00\x35\x00\x36\x00\x1f\x00\x23\x00\x24\x00\x2b\x00\x35\x00\x36\x00\x1e\x00\x35\x00\x36\x00\x2b\x00\x23\x00\x24\x00\xff\xff\x35\x00\x36\x00\x23\x00\x24\x00\xff\xff\x2b\x00\x35\x00\x36\x00\xff\xff\xff\xff\x2b\x00\x23\x00\x24\x00\xff\xff\xff\xff\x35\x00\x36\x00\x23\x00\x24\x00\x2b\x00\x35\x00\x36\x00\xff\xff\x23\x00\x24\x00\x2b\x00\x23\x00\x24\x00\xff\xff\x35\x00\x36\x00\x2b\x00\x23\x00\x24\x00\x2b\x00\x35\x00\x36\x00\xff\xff\x23\x00\x24\x00\x2b\x00\x35\x00\x36\x00\xff\xff\x35\x00\x36\x00\x2b\x00\x23\x00\x24\x00\xff\xff\x35\x00\x36\x00\x23\x00\x24\x00\xff\xff\x2b\x00\x35\x00\x36\x00\xff\xff\xff\xff\x2b\x00\x23\x00\x24\x00\xff\xff\xff\xff\x35\x00\x36\x00\x23\x00\x24\x00\x2b\x00\x35\x00\x36\x00\xff\xff\x23\x00\x24\x00\x2b\x00\x23\x00\x24\x00\xff\xff\x35\x00\x36\x00\x2b\x00\x23\x00\x24\x00\x2b\x00\x35\x00\x36\x00\xff\xff\x23\x00\x24\x00\x2b\x00\x35\x00\x36\x00\xff\xff\x35\x00\x36\x00\x2b\x00\x23\x00\x24\x00\xff\xff\x35\x00\x36\x00\x24\x00\xff\xff\xff\xff\x2b\x00\x35\x00\x36\x00\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x35\x00\x36\x00\xff\xff\xff\xff\x35\x00\x36\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\xff\xff\xff\xff\x1a\x00\x1b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#

    happyTable :: HappyAddr
    happyTable :: HappyAddr
    happyTable = Addr# -> HappyAddr
    HappyA# Addr#
    "\x00\x00\x81\x00\x73\x00\x74\x00\x21\x00\x90\x00\x82\x00\x8a\x00\x74\x00\xf4\x00\x83\x00\xfb\x00\x24\x01\x84\x00\x85\x00\xad\x00\x9f\x01\x96\x00\x1c\x01\x91\x00\xff\xff\x75\x01\xf5\x00\x97\x00\x2f\x00\x1d\x01\x76\x01\xf6\x00\xd5\x00\xc4\x00\xc5\x00\xc6\x00\x02\x00\x03\x00\x04\x00\x26\x00\x2f\x00\x03\x00\x04\x00\x05\x00\x22\x00\x23\x00\x06\x00\x05\x00\x07\x00\x59\x00\x06\x00\xaf\x00\x07\x00\xb0\x00\x5a\x00\x75\x00\x76\x00\xd6\x00\xd7\x00\x2c\x00\x75\x00\x76\x00\x2b\x00\x25\x01\x37\x01\xa7\x00\xa8\x00\xa0\x01\x2a\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xfc\x00\x08\x00\x09\x00\x26\x00\x1e\x01\x08\x00\x09\x00\x11\x00\x29\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x6a\xff\x82\x00\x6a\xff\x63\x00\x64\x00\x83\x00\x13\x00\x65\x00\x84\x00\x85\x00\x66\x00\x67\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x68\x00\x69\x00\x94\x00\x4c\x00\x4d\x00\x09\x00\x9f\x00\x7d\x00\x28\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xa4\x00\x7e\x00\x50\x00\x51\x00\x83\x00\xab\x00\xac\x00\x84\x00\x85\x00\xd6\x00\xd7\x00\x7f\x00\x09\x00\x51\x00\x52\x00\x82\x00\xa5\x00\x27\x00\x53\x00\x83\x00\x54\x00\x26\x00\x84\x00\x85\x00\x24\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x82\x00\x68\x00\x19\x01\x40\x00\x83\x00\x3e\x00\x55\x00\x84\x00\x85\x00\x3f\x00\x56\x00\x50\x00\x51\x00\xd6\x00\xd7\x00\x57\x00\x09\x00\x79\x01\x7a\x01\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x82\x00\x3d\x00\x12\x01\x1e\x00\x1f\x00\x40\x00\x1f\x00\x84\x00\xb0\x00\x09\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\x3b\x01\x09\x00\x06\x01\x09\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xb2\x00\x52\x00\xa6\x00\xa7\x00\xa8\x00\x53\x00\x3b\x00\x54\x00\xa9\x00\x4c\x00\x4d\x00\x09\x00\x52\x01\x53\x01\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\xb1\x00\x52\x00\x70\x01\x53\x01\x55\x00\x53\x00\x3c\x00\x54\x00\x56\x00\x3a\x00\x39\x00\x47\x01\x52\x00\x57\x00\x09\x00\x38\x00\x53\x00\x89\x01\x54\x00\xb2\x01\x52\x00\x37\x00\xb0\x01\x52\x00\x53\x00\x36\x00\x54\x00\x53\x00\x35\x00\x54\x00\x34\x00\x33\x00\x32\x00\x55\x00\xae\x01\x52\x00\x4a\x00\x56\x00\x49\x00\x53\x00\x48\x00\x54\x00\x57\x00\x09\x00\x55\x00\x26\x00\x47\x00\x43\x00\x56\x00\x46\x00\xdc\x00\x7d\x00\x55\x00\x57\x00\x09\x00\x55\x00\x56\x00\x4f\x01\x7e\x00\x56\x00\x45\x00\x57\x00\x09\x00\x73\x00\x57\x00\x09\x00\x6c\x00\x55\x00\x7f\x00\x09\x00\x72\x00\x56\x00\x71\x00\x70\x00\x6f\x00\x6e\x00\x57\x00\x09\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x6d\x00\x11\x00\x12\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x13\x00\xb7\x00\x6b\x00\xb4\x00\x0f\x01\xae\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x78\x00\x1e\x00\xb8\x00\x7d\x00\x10\x01\x7d\x00\x6a\x00\xa6\x00\x9c\x00\x9d\x00\x7e\x00\x9a\x00\x7e\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x99\x00\x94\x00\x7f\x00\x09\x00\x7f\x00\x09\x00\x8c\x00\x79\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xa0\x00\xa1\x00\xc0\x00\xc1\x00\xbf\x00\xa1\x00\x21\x01\xa1\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x09\x00\xa2\x00\x7d\x00\xc2\x00\x7d\x00\xa2\x00\x7d\x00\xa2\x00\x7d\x00\x7e\x00\x92\x00\x7e\x00\x7c\x00\x7e\x00\xfa\x00\x7e\x00\x20\x01\xa1\x00\x8f\x00\x7f\x00\x09\x00\x7f\x00\x09\x00\x7f\x00\x09\x00\x7f\x00\x09\x00\xdc\x00\x7d\x00\xa2\x00\x7d\x00\x8e\x00\x8d\x00\xe4\x00\xde\x00\x7e\x00\x7b\x00\x7e\x00\x7a\x00\xf8\x00\xe8\x00\x4b\x00\x4c\x00\x4d\x00\x09\x00\x7f\x00\x09\x00\x7f\x00\x09\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\x3b\x01\xf9\x00\xf7\x00\xf1\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\x8b\x01\xee\x00\xec\x00\xeb\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xab\x01\xea\x00\xe8\x00\xe7\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xe3\x00\x14\x01\xe4\x00\xe0\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xbf\x00\xbe\x00\xbc\x00\xbd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xda\x00\xab\x00\xdb\x00\xb7\x00\xb6\x00\xb5\x00\x3f\x01\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\x3e\x01\x39\x01\x37\x01\x36\x01\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\x3a\x01\x23\x01\x1f\x01\x16\x01\x15\x01\x13\x01\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\x0f\x01\x0d\x01\x0c\x01\x0b\x01\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\x5e\x01\x0a\x01\x09\x01\x08\x01\x06\x01\x03\x01\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\x02\x01\x01\x01\x00\x01\xfe\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\x41\x01\x94\x00\xfd\x00\x65\x01\x64\x01\x63\x01\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\x62\x01\x61\x01\x5c\x01\x58\x01\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\x68\x01\x57\x01\x5b\x01\x5a\x01\x59\x01\x55\x01\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\x51\x01\x52\x01\x4e\x01\x4d\x01\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\x67\x01\x4c\x01\x4b\x01\xd6\x00\x4a\x01\x49\x01\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\x47\x01\x45\x01\x46\x01\x44\x01\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\x8a\x01\x84\x01\x43\x01\x42\x01\x7b\x01\x78\x01\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\x74\x01\x1e\x01\x73\x01\x55\x01\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd8\x00\x70\x01\x99\x00\x6d\x01\x6c\x01\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\x69\x01\x6b\x01\x6a\x01\x99\x01\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\x8c\x01\x98\x01\x97\x01\x96\x01\x95\x01\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\x93\x01\x94\x01\x92\x01\x90\x01\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\x05\x01\x8f\x01\x8e\x01\x88\x01\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\x86\x01\xaa\x01\x87\x01\xa8\x01\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xdc\x00\xa6\x01\xa3\x01\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xa4\x01\x70\x01\xa2\x01\x9a\x01\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\x17\x01\xb6\x01\x9d\x01\x9c\x01\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\x94\x00\x9b\x01\xb5\x01\xb4\x01\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xb2\x01\xb0\x01\xae\x01\xad\x01\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\x00\x00\x00\x00\xc0\x01\xbf\x01\xbe\x01\xbd\x01\xce\x00\xcf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7e\x01\x7d\x00\xbc\x01\x7f\x01\x80\x01\x81\x01\xdc\x00\x7d\x00\x7e\x00\xdc\x00\x7d\x00\xbb\x01\xe1\x00\xde\x00\x7e\x00\xdd\x00\xde\x00\x7e\x00\x7f\x00\x09\x00\xba\x01\xb9\x01\xb8\x01\xb7\x01\x7f\x00\x09\x00\xc1\x01\x7f\x00\x09\x00\xdc\x00\x7d\x00\xc2\x01\xdc\x00\x7d\x00\xc4\x01\x1f\x01\xde\x00\x7e\x00\x19\x01\xde\x00\x7e\x00\xc3\x01\xc5\x01\xc6\x01\x2d\x00\x2c\x00\x24\x00\x7f\x00\x09\x00\x43\x00\x7f\x00\x09\x00\xdc\x00\x7d\x00\x30\x00\xdc\x00\x7d\x00\x4e\x00\x5c\x01\xde\x00\x7e\x00\x82\x01\xde\x00\x7e\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\x7f\x00\x09\x00\x2c\x00\x7f\x00\x09\x00\xdc\x00\x7d\x00\x41\x00\xce\x00\xcf\x00\x9a\x00\x90\x01\xde\x00\x7e\x00\x7e\x01\x7d\x00\x92\x00\x97\x00\xa8\x01\x81\x01\xdc\x00\x7d\x00\x7e\x00\x7f\x00\x09\x00\xee\x00\xa4\x01\xde\x00\x7e\x00\x9e\x00\x7d\x00\xd8\x00\x7f\x00\x09\x00\x9d\x00\x7d\x00\xd3\x00\x7e\x00\x7f\x00\x09\x00\xec\x00\x3c\x01\x7e\x00\x7c\x00\x7d\x00\xba\x00\x0d\x01\x7f\x00\x09\x00\xf2\x00\x7d\x00\x7e\x00\x7f\x00\x09\x00\x1a\x01\xf1\x00\x7d\x00\x7e\x00\xef\x00\x7d\x00\x17\x01\x7f\x00\x09\x00\x7e\x00\xe5\x00\x7d\x00\x7e\x00\x7f\x00\x09\x00\xfe\x00\xe0\x00\x7d\x00\x7e\x00\x7f\x00\x09\x00\x55\x01\x7f\x00\x09\x00\x7e\x00\xb9\x00\x7d\x00\x4e\x01\x7f\x00\x09\x00\x3f\x01\x7d\x00\x76\x01\x7e\x00\x7f\x00\x09\x00\x8c\x01\x71\x01\x7e\x00\x34\x01\x7d\x00\x6d\x01\x6e\x01\x7f\x00\x09\x00\x33\x01\x7d\x00\x7e\x00\x7f\x00\x09\x00\xa6\x01\x32\x01\x7d\x00\x7e\x00\x31\x01\x7d\x00\xab\x01\x7f\x00\x09\x00\x7e\x00\x30\x01\x7d\x00\x7e\x00\x7f\x00\x09\x00\xa0\x01\x2f\x01\x7d\x00\x7e\x00\x7f\x00\x09\x00\x9d\x01\x7f\x00\x09\x00\x7e\x00\x2e\x01\x7d\x00\x00\x00\x7f\x00\x09\x00\x2d\x01\x7d\x00\x00\x00\x7e\x00\x7f\x00\x09\x00\x00\x00\x00\x00\x7e\x00\x2c\x01\x7d\x00\x00\x00\x00\x00\x7f\x00\x09\x00\x2b\x01\x7d\x00\x7e\x00\x7f\x00\x09\x00\x00\x00\x2a\x01\x7d\x00\x7e\x00\x29\x01\x7d\x00\x00\x00\x7f\x00\x09\x00\x7e\x00\x28\x01\x7d\x00\x7e\x00\x7f\x00\x09\x00\x00\x00\x27\x01\x7d\x00\x7e\x00\x7f\x00\x09\x00\x00\x00\x7f\x00\x09\x00\x7e\x00\x26\x01\x7d\x00\x00\x00\x7f\x00\x09\x00\x25\x01\x7d\x00\x00\x00\x7e\x00\x7f\x00\x09\x00\x00\x00\x00\x00\x7e\x00\x03\x01\x7d\x00\x00\x00\x00\x00\x7f\x00\x09\x00\x5f\x01\x7d\x00\x7e\x00\x7f\x00\x09\x00\x00\x00\x5e\x01\x7d\x00\x7e\x00\x7d\x01\x7d\x00\x00\x00\x7f\x00\x09\x00\x7e\x00\x7c\x01\x7d\x00\x7e\x00\x7f\x00\x09\x00\x00\x00\x7b\x01\x7d\x00\x7e\x00\x7f\x00\x09\x00\x00\x00\x7f\x00\x09\x00\x7e\x00\x84\x01\x7d\x00\x00\x00\x7f\x00\x09\x00\x65\x01\x00\x00\x00\x00\x7e\x00\x7f\x00\x09\x00\x00\x00\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x00\x09\x00\x00\x00\x00\x00\x7f\x00\x09\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x00\x00\x00\x00\xce\x00\xcf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\x00\xcf\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\xab\x00\xac\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#

    happyReduceArr :: Array
      ByteOff
      (Int#
       -> Located CmmToken
       -> Int#
       -> Happy_IntList
       -> HappyStk HappyAbsSyn
       -> PD HappyAbsSyn)
    happyReduceArr = (ByteOff, ByteOff)
    -> [(ByteOff,
         Int#
         -> Located CmmToken
         -> Int#
         -> Happy_IntList
         -> HappyStk HappyAbsSyn
         -> PD HappyAbsSyn)]
    -> Array
         ByteOff
         (Int#
          -> Located CmmToken
          -> Int#
          -> Happy_IntList
          -> HappyStk HappyAbsSyn
          -> PD HappyAbsSyn)
    forall i e. Ix i => (i, i) -> [(i, e)] -> Array i e
    Happy_Data_Array.array (ByteOff
    1, ByteOff
    177) [
    	(ByteOff
    1 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_1),
    	(ByteOff
    2 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_2),
    	(ByteOff
    3 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_3),
    	(ByteOff
    4 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_4),
    	(ByteOff
    5 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_5),
    	(ByteOff
    6 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_6),
    	(ByteOff
    7 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_7),
    	(ByteOff
    8 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_8),
    	(ByteOff
    9 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_9),
    	(ByteOff
    10 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_10),
    	(ByteOff
    11 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_11),
    	(ByteOff
    12 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_12),
    	(ByteOff
    13 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_13),
    	(ByteOff
    14 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_14),
    	(ByteOff
    15 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_15),
    	(ByteOff
    16 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_16),
    	(ByteOff
    17 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_17),
    	(ByteOff
    18 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_18),
    	(ByteOff
    19 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_19),
    	(ByteOff
    20 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_20),
    	(ByteOff
    21 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_21),
    	(ByteOff
    22 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_22),
    	(ByteOff
    23 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_23),
    	(ByteOff
    24 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_24),
    	(ByteOff
    25 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_25),
    	(ByteOff
    26 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_26),
    	(ByteOff
    27 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_27),
    	(ByteOff
    28 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_28),
    	(ByteOff
    29 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_29),
    	(ByteOff
    30 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_30),
    	(ByteOff
    31 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_31),
    	(ByteOff
    32 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_32),
    	(ByteOff
    33 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_33),
    	(ByteOff
    34 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_34),
    	(ByteOff
    35 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_35),
    	(ByteOff
    36 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_36),
    	(ByteOff
    37 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_37),
    	(ByteOff
    38 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_38),
    	(ByteOff
    39 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_39),
    	(ByteOff
    40 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_40),
    	(ByteOff
    41 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_41),
    	(ByteOff
    42 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_42),
    	(ByteOff
    43 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_43),
    	(ByteOff
    44 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_44),
    	(ByteOff
    45 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_45),
    	(ByteOff
    46 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_46),
    	(ByteOff
    47 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_47),
    	(ByteOff
    48 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_48),
    	(ByteOff
    49 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_49),
    	(ByteOff
    50 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_50),
    	(ByteOff
    51 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_51),
    	(ByteOff
    52 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_52),
    	(ByteOff
    53 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_53),
    	(ByteOff
    54 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_54),
    	(ByteOff
    55 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_55),
    	(ByteOff
    56 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_56),
    	(ByteOff
    57 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_57),
    	(ByteOff
    58 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_58),
    	(ByteOff
    59 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_59),
    	(ByteOff
    60 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_60),
    	(ByteOff
    61 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_61),
    	(ByteOff
    62 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_62),
    	(ByteOff
    63 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_63),
    	(ByteOff
    64 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_64),
    	(ByteOff
    65 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_65),
    	(ByteOff
    66 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_66),
    	(ByteOff
    67 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_67),
    	(ByteOff
    68 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_68),
    	(ByteOff
    69 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_69),
    	(ByteOff
    70 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_70),
    	(ByteOff
    71 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_71),
    	(ByteOff
    72 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_72),
    	(ByteOff
    73 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_73),
    	(ByteOff
    74 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_74),
    	(ByteOff
    75 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_75),
    	(ByteOff
    76 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_76),
    	(ByteOff
    77 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_77),
    	(ByteOff
    78 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_78),
    	(ByteOff
    79 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_79),
    	(ByteOff
    80 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_80),
    	(ByteOff
    81 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_81),
    	(ByteOff
    82 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_82),
    	(ByteOff
    83 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_83),
    	(ByteOff
    84 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_84),
    	(ByteOff
    85 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_85),
    	(ByteOff
    86 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_86),
    	(ByteOff
    87 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_87),
    	(ByteOff
    88 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_88),
    	(ByteOff
    89 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_89),
    	(ByteOff
    90 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_90),
    	(ByteOff
    91 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_91),
    	(ByteOff
    92 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_92),
    	(ByteOff
    93 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_93),
    	(ByteOff
    94 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_94),
    	(ByteOff
    95 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_95),
    	(ByteOff
    96 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_96),
    	(ByteOff
    97 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_97),
    	(ByteOff
    98 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_98),
    	(ByteOff
    99 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_99),
    	(ByteOff
    100 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_100),
    	(ByteOff
    101 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_101),
    	(ByteOff
    102 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_102),
    	(ByteOff
    103 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_103),
    	(ByteOff
    104 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_104),
    	(ByteOff
    105 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_105),
    	(ByteOff
    106 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_106),
    	(ByteOff
    107 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_107),
    	(ByteOff
    108 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_108),
    	(ByteOff
    109 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_109),
    	(ByteOff
    110 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_110),
    	(ByteOff
    111 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_111),
    	(ByteOff
    112 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_112),
    	(ByteOff
    113 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_113),
    	(ByteOff
    114 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_114),
    	(ByteOff
    115 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_115),
    	(ByteOff
    116 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_116),
    	(ByteOff
    117 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_117),
    	(ByteOff
    118 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_118),
    	(ByteOff
    119 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_119),
    	(ByteOff
    120 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_120),
    	(ByteOff
    121 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_121),
    	(ByteOff
    122 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_122),
    	(ByteOff
    123 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_123),
    	(ByteOff
    124 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_124),
    	(ByteOff
    125 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_125),
    	(ByteOff
    126 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_126),
    	(ByteOff
    127 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_127),
    	(ByteOff
    128 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_128),
    	(ByteOff
    129 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_129),
    	(ByteOff
    130 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_130),
    	(ByteOff
    131 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_131),
    	(ByteOff
    132 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_132),
    	(ByteOff
    133 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_133),
    	(ByteOff
    134 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_134),
    	(ByteOff
    135 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_135),
    	(ByteOff
    136 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_136),
    	(ByteOff
    137 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_137),
    	(ByteOff
    138 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_138),
    	(ByteOff
    139 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_139),
    	(ByteOff
    140 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_140),
    	(ByteOff
    141 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_141),
    	(ByteOff
    142 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_142),
    	(ByteOff
    143 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_143),
    	(ByteOff
    144 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_144),
    	(ByteOff
    145 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_145),
    	(ByteOff
    146 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_146),
    	(ByteOff
    147 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_147),
    	(ByteOff
    148 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_148),
    	(ByteOff
    149 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_149),
    	(ByteOff
    150 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_150),
    	(ByteOff
    151 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_151),
    	(ByteOff
    152 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_152),
    	(ByteOff
    153 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_153),
    	(ByteOff
    154 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_154),
    	(ByteOff
    155 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_155),
    	(ByteOff
    156 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_156),
    	(ByteOff
    157 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_157),
    	(ByteOff
    158 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_158),
    	(ByteOff
    159 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_159),
    	(ByteOff
    160 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_160),
    	(ByteOff
    161 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_161),
    	(ByteOff
    162 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_162),
    	(ByteOff
    163 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_163),
    	(ByteOff
    164 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_164),
    	(ByteOff
    165 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_165),
    	(ByteOff
    166 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_166),
    	(ByteOff
    167 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_167),
    	(ByteOff
    168 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_168),
    	(ByteOff
    169 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_169),
    	(ByteOff
    170 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_170),
    	(ByteOff
    171 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_171),
    	(ByteOff
    172 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_172),
    	(ByteOff
    173 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_173),
    	(ByteOff
    174 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_174),
    	(ByteOff
    175 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_175),
    	(ByteOff
    176 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_176),
    	(ByteOff
    177 , Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_177)
    	]

    happy_n_terms :: ByteOff
    happy_n_terms = ByteOff
    82 :: Prelude.Int
    happy_n_nonterms :: ByteOff
    happy_n_nonterms = ByteOff
    55 :: Prelude.Int

    happyReduce_1 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_1 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_1 = Int#
    -> HappyAbsSyn
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_0  Int#
    0# HappyAbsSyn
    happyReduction_1
    happyReduction_1 :: HappyAbsSyn
    happyReduction_1  =  CmmParse () -> HappyAbsSyn
    happyIn4
    		 (() -> CmmParse ()
    forall a. a -> CmmParse a
    forall (m :: * -> *) a. Monad m => a -> m a
    return ()
    	)

    happyReduce_2 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_2 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_2 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_2  Int#
    0# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_2
    happyReduction_2 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_2 HappyAbsSyn
    happy_x_2
    	HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap5
    happyOut5 HappyAbsSyn
    happy_x_1 of { (HappyWrap5 CmmParse ()
    happy_var_1) ->
    	case HappyAbsSyn -> HappyWrap4
    happyOut4 HappyAbsSyn
    happy_x_2 of { (HappyWrap4 CmmParse ()
    happy_var_2) ->
    	CmmParse () -> HappyAbsSyn
    happyIn4
    		 (do CmmParse ()
    happy_var_1; CmmParse ()
    happy_var_2
    	)}}

    happyReduce_3 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_3 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_3 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    1# HappyAbsSyn -> HappyAbsSyn
    happyReduction_3
    happyReduction_3 :: HappyAbsSyn -> HappyAbsSyn
    happyReduction_3 HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap11
    happyOut11 HappyAbsSyn
    happy_x_1 of { (HappyWrap11 CmmParse ()
    happy_var_1) ->
    	CmmParse () -> HappyAbsSyn
    happyIn5
    		 (CmmParse ()
    happy_var_1
    	)}

    happyReduce_4 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_4 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_4 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    1# HappyAbsSyn -> HappyAbsSyn
    happyReduction_4
    happyReduction_4 :: HappyAbsSyn -> HappyAbsSyn
    happyReduction_4 HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap6
    happyOut6 HappyAbsSyn
    happy_x_1 of { (HappyWrap6 CmmParse ()
    happy_var_1) ->
    	CmmParse () -> HappyAbsSyn
    happyIn5
    		 (CmmParse ()
    happy_var_1
    	)}

    happyReduce_5 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_5 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_5 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    1# HappyAbsSyn -> HappyAbsSyn
    happyReduction_5
    happyReduction_5 :: HappyAbsSyn -> HappyAbsSyn
    happyReduction_5 HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap16
    happyOut16 HappyAbsSyn
    happy_x_1 of { (HappyWrap16 CmmParse ()
    happy_var_1) ->
    	CmmParse () -> HappyAbsSyn
    happyIn5
    		 (CmmParse ()
    happy_var_1
    	)}

    happyReduce_6 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_6 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_6 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyMonadReduce Int#
    8# Int#
    1# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
    forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
    happyReduction_6
    happyReduction_6 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
    happyReduction_6 (HappyAbsSyn
    happy_x_8 `HappyStk`
    	HappyAbsSyn
    happy_x_7 `HappyStk`
    	HappyAbsSyn
    happy_x_6 `HappyStk`
    	HappyAbsSyn
    happy_x_5 `HappyStk`
    	HappyAbsSyn
    happy_x_4 `HappyStk`
    	HappyAbsSyn
    happy_x_3 `HappyStk`
    	HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest) p
    tk
    	 = PD (CmmParse ())
    -> (CmmParse () -> PD HappyAbsSyn) -> PD HappyAbsSyn
    forall a b. PD a -> (a -> PD b) -> PD b
    happyThen ((case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_3 of { (L SrcSpan
    _ (CmmT_Name      FastString
    happy_var_3)) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_5 of { (L SrcSpan
    _ (CmmT_Name      FastString
    happy_var_5)) ->
    	case HappyAbsSyn -> HappyWrap10
    happyOut10 HappyAbsSyn
    happy_x_6 of { (HappyWrap10 [CmmParse CmmExpr]
    happy_var_6) ->
    	( do
                          home_unit_id <- PD UnitId
    getHomeUnitId
                          liftP $ pure $ do
                            lits <- sequence happy_var_6;
                            staticClosure home_unit_id happy_var_3 happy_var_5 (map getLit lits))}}})
    	) (\CmmParse ()
    r -> HappyAbsSyn -> PD HappyAbsSyn
    forall a. a -> PD a
    happyReturn (CmmParse () -> HappyAbsSyn
    happyIn5 CmmParse ()
    r))

    happyReduce_7 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_7 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_7 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce Int#
    6# Int#
    2# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_7
    happyReduction_7 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_7 (HappyAbsSyn
    happy_x_6 `HappyStk`
    	HappyAbsSyn
    happy_x_5 `HappyStk`
    	HappyAbsSyn
    happy_x_4 `HappyStk`
    	HappyAbsSyn
    happy_x_3 `HappyStk`
    	HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest)
    	 = case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_2 of { (L SrcSpan
    _ (CmmT_String    String
    happy_var_2)) ->
    	case HappyAbsSyn -> HappyWrap7
    happyOut7 HappyAbsSyn
    happy_x_4 of { (HappyWrap7 CmmParse CLabel
    happy_var_4) ->
    	case HappyAbsSyn -> HappyWrap8
    happyOut8 HappyAbsSyn
    happy_x_5 of { (HappyWrap8 [CmmParse [CmmStatic]]
    happy_var_5) ->
    	CmmParse () -> HappyAbsSyn
    happyIn6
    		 (do lbl <- CmmParse CLabel
    happy_var_4;
                         ss <- sequence happy_var_5;
                         code (emitDecl (CmmData (Section (section happy_var_2) lbl) (CmmStaticsRaw lbl (concat ss))))
    	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    forall a. a -> HappyStk a -> HappyStk a
    `HappyStk` HappyStk HappyAbsSyn
    happyRest}}}

    happyReduce_8 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_8 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_8 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyMonadReduce Int#
    2# Int#
    3# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
    forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
    happyReduction_8
    happyReduction_8 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
    happyReduction_8 (HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest) p
    tk
    	 = PD (CmmParse CLabel)
    -> (CmmParse CLabel -> PD HappyAbsSyn) -> PD HappyAbsSyn
    forall a b. PD a -> (a -> PD b) -> PD b
    happyThen ((case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_1 of { (L SrcSpan
    _ (CmmT_Name      FastString
    happy_var_1)) ->
    	( do
                       home_unit_id <- PD UnitId
    getHomeUnitId
                       liftP $ pure $ do
                         pure (mkCmmDataLabel home_unit_id (NeedExternDecl False) happy_var_1))})
    	) (\CmmParse CLabel
    r -> HappyAbsSyn -> PD HappyAbsSyn
    forall a. a -> PD a
    happyReturn (CmmParse CLabel -> HappyAbsSyn
    happyIn7 CmmParse CLabel
    r))

    happyReduce_9 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_9 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_9 = Int#
    -> HappyAbsSyn
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_0  Int#
    4# HappyAbsSyn
    happyReduction_9
    happyReduction_9 :: HappyAbsSyn
    happyReduction_9  =  [CmmParse [CmmStatic]] -> HappyAbsSyn
    happyIn8
    		 ([]
    	)

    happyReduce_10 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_10 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_10 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_2  Int#
    4# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_10
    happyReduction_10 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_10 HappyAbsSyn
    happy_x_2
    	HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap9
    happyOut9 HappyAbsSyn
    happy_x_1 of { (HappyWrap9 CmmParse [CmmStatic]
    happy_var_1) ->
    	case HappyAbsSyn -> HappyWrap8
    happyOut8 HappyAbsSyn
    happy_x_2 of { (HappyWrap8 [CmmParse [CmmStatic]]
    happy_var_2) ->
    	[CmmParse [CmmStatic]] -> HappyAbsSyn
    happyIn8
    		 (CmmParse [CmmStatic]
    happy_var_1 CmmParse [CmmStatic]
    -> [CmmParse [CmmStatic]] -> [CmmParse [CmmStatic]]
    forall a. a -> [a] -> [a]
    : [CmmParse [CmmStatic]]
    happy_var_2
    	)}}

    happyReduce_11 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_11 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_11 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_3  Int#
    5# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p} {p}. p -> HappyAbsSyn -> p -> HappyAbsSyn
    happyReduction_11
    happyReduction_11 :: p -> HappyAbsSyn -> p -> HappyAbsSyn
    happyReduction_11 p
    happy_x_3
    	HappyAbsSyn
    happy_x_2
    	p
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_2 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_2) ->
    	CmmParse [CmmStatic] -> HappyAbsSyn
    happyIn9
    		 (do e <- CmmParse CmmExpr
    happy_var_2;
                                 return [CmmStaticLit (getLit e)]
    	)}

    happyReduce_12 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_12 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_12 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_2  Int#
    5# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p}. p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_12
    happyReduction_12 :: p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_12 p
    happy_x_2
    	HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap57
    happyOut57 HappyAbsSyn
    happy_x_1 of { (HappyWrap57 CmmType
    happy_var_1) ->
    	CmmParse [CmmStatic] -> HappyAbsSyn
    happyIn9
    		 ([CmmStatic] -> CmmParse [CmmStatic]
    forall a. a -> CmmParse a
    forall (m :: * -> *) a. Monad m => a -> m a
    return [ByteOff -> CmmStatic
    CmmUninitialised
                                                            (Width -> ByteOff
    widthInBytes (CmmType -> Width
    typeWidth CmmType
    happy_var_1))]
    	)}

    happyReduce_13 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_13 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_13 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce Int#
    5# Int#
    5# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_13
    happyReduction_13 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_13 (HappyAbsSyn
    happy_x_5 `HappyStk`
    	HappyAbsSyn
    happy_x_4 `HappyStk`
    	HappyAbsSyn
    happy_x_3 `HappyStk`
    	HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest)
    	 = case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_4 of { (L SrcSpan
    _ (CmmT_String    String
    happy_var_4)) ->
    	CmmParse [CmmStatic] -> HappyAbsSyn
    happyIn9
    		 ([CmmStatic] -> CmmParse [CmmStatic]
    forall a. a -> CmmParse a
    forall (m :: * -> *) a. Monad m => a -> m a
    return [String -> CmmStatic
    mkString String
    happy_var_4]
    	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    forall a. a -> HappyStk a -> HappyStk a
    `HappyStk` HappyStk HappyAbsSyn
    happyRest}

    happyReduce_14 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_14 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_14 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce Int#
    5# Int#
    5# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_14
    happyReduction_14 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_14 (HappyAbsSyn
    happy_x_5 `HappyStk`
    	HappyAbsSyn
    happy_x_4 `HappyStk`
    	HappyAbsSyn
    happy_x_3 `HappyStk`
    	HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest)
    	 = case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_3 of { (L SrcSpan
    _ (CmmT_Int       Integer
    happy_var_3)) ->
    	CmmParse [CmmStatic] -> HappyAbsSyn
    happyIn9
    		 ([CmmStatic] -> CmmParse [CmmStatic]
    forall a. a -> CmmParse a
    forall (m :: * -> *) a. Monad m => a -> m a
    return [ByteOff -> CmmStatic
    CmmUninitialised
                                                            (Integer -> ByteOff
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Integer
    happy_var_3)]
    	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    forall a. a -> HappyStk a -> HappyStk a
    `HappyStk` HappyStk HappyAbsSyn
    happyRest}

    happyReduce_15 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_15 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_15 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce Int#
    5# Int#
    5# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_15
    happyReduction_15 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_15 (HappyAbsSyn
    happy_x_5 `HappyStk`
    	HappyAbsSyn
    happy_x_4 `HappyStk`
    	HappyAbsSyn
    happy_x_3 `HappyStk`
    	HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest)
    	 = case HappyAbsSyn -> HappyWrap58
    happyOut58 HappyAbsSyn
    happy_x_1 of { (HappyWrap58 CmmType
    happy_var_1) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_3 of { (L SrcSpan
    _ (CmmT_Int       Integer
    happy_var_3)) ->
    	CmmParse [CmmStatic] -> HappyAbsSyn
    happyIn9
    		 ([CmmStatic] -> CmmParse [CmmStatic]
    forall a. a -> CmmParse a
    forall (m :: * -> *) a. Monad m => a -> m a
    return [ByteOff -> CmmStatic
    CmmUninitialised
                                                    (Width -> ByteOff
    widthInBytes (CmmType -> Width
    typeWidth CmmType
    happy_var_1) ByteOff -> ByteOff -> ByteOff
    forall a. Num a => a -> a -> a
    *
                                                            Integer -> ByteOff
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Integer
    happy_var_3)]
    	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    forall a. a -> HappyStk a -> HappyStk a
    `HappyStk` HappyStk HappyAbsSyn
    happyRest}}

    happyReduce_16 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_16 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_16 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce Int#
    5# Int#
    5# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_16
    happyReduction_16 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_16 (HappyAbsSyn
    happy_x_5 `HappyStk`
    	HappyAbsSyn
    happy_x_4 `HappyStk`
    	HappyAbsSyn
    happy_x_3 `HappyStk`
    	HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest)
    	 = case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_3 of { (L SrcSpan
    _ (CmmT_Name      FastString
    happy_var_3)) ->
    	case HappyAbsSyn -> HappyWrap10
    happyOut10 HappyAbsSyn
    happy_x_4 of { (HappyWrap10 [CmmParse CmmExpr]
    happy_var_4) ->
    	CmmParse [CmmStatic] -> HappyAbsSyn
    happyIn9
    		 (do { lits <- [CmmParse CmmExpr] -> CmmParse [CmmExpr]
    forall (t :: * -> *) (m :: * -> *) a.
    (Traversable t, Monad m) =>
    t (m a) -> m (t a)
    forall (m :: * -> *) a. Monad m => [m a] -> m [a]
    sequence [CmmParse CmmExpr]
    happy_var_4
                    ; profile <- getProfile
                         ; return $ map CmmStaticLit $
                            mkStaticClosure profile (mkForeignLabel happy_var_3 Nothing ForeignLabelInExternalPackage IsData)
                             -- mkForeignLabel because these are only used
                             -- for CHARLIKE and INTLIKE closures in the RTS.
                            dontCareCCS (map getLit lits) [] [] [] [] }
    	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    forall a. a -> HappyStk a -> HappyStk a
    `HappyStk` HappyStk HappyAbsSyn
    happyRest}}

    happyReduce_17 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_17 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_17 = Int#
    -> HappyAbsSyn
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_0  Int#
    6# HappyAbsSyn
    happyReduction_17
    happyReduction_17 :: HappyAbsSyn
    happyReduction_17  =  [CmmParse CmmExpr] -> HappyAbsSyn
    happyIn10
    		 ([]
    	)

    happyReduce_18 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_18 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_18 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_3  Int#
    6# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p}. HappyAbsSyn -> HappyAbsSyn -> p -> HappyAbsSyn
    happyReduction_18
    happyReduction_18 :: HappyAbsSyn -> HappyAbsSyn -> p -> HappyAbsSyn
    happyReduction_18 HappyAbsSyn
    happy_x_3
    	HappyAbsSyn
    happy_x_2
    	p
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_2 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_2) ->
    	case HappyAbsSyn -> HappyWrap10
    happyOut10 HappyAbsSyn
    happy_x_3 of { (HappyWrap10 [CmmParse CmmExpr]
    happy_var_3) ->
    	[CmmParse CmmExpr] -> HappyAbsSyn
    happyIn10
    		 (CmmParse CmmExpr
    happy_var_2 CmmParse CmmExpr -> [CmmParse CmmExpr] -> [CmmParse CmmExpr]
    forall a. a -> [a] -> [a]
    : [CmmParse CmmExpr]
    happy_var_3
    	)}}

    happyReduce_19 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_19 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_19 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce Int#
    4# Int#
    7# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_19
    happyReduction_19 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_19 (HappyAbsSyn
    happy_x_4 `HappyStk`
    	HappyAbsSyn
    happy_x_3 `HappyStk`
    	HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest)
    	 = case HappyAbsSyn -> HappyWrap14
    happyOut14 HappyAbsSyn
    happy_x_1 of { (HappyWrap14 CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
    happy_var_1) ->
    	case HappyAbsSyn -> HappyWrap12
    happyOut12 HappyAbsSyn
    happy_x_2 of { (HappyWrap12 Convention
    happy_var_2) ->
    	case HappyAbsSyn -> HappyWrap53
    happyOut53 HappyAbsSyn
    happy_x_3 of { (HappyWrap53 Maybe [CmmParse LocalReg]
    happy_var_3) ->
    	case HappyAbsSyn -> HappyWrap13
    happyOut13 HappyAbsSyn
    happy_x_4 of { (HappyWrap13 CmmParse ()
    happy_var_4) ->
    	CmmParse () -> HappyAbsSyn
    happyIn11
    		 (do ((entry_ret_label, info, stk_formals, formals), agraph) <-
                           CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg], [LocalReg])
    -> CmmParse
         ((CLabel, Maybe CmmInfoTable, [LocalReg], [LocalReg]),
          CmmAGraphScoped)
    forall a. CmmParse a -> CmmParse (a, CmmAGraphScoped)
    getCodeScoped (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg], [LocalReg])
     -> CmmParse
          ((CLabel, Maybe CmmInfoTable, [LocalReg], [LocalReg]),
           CmmAGraphScoped))
    -> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg], [LocalReg])
    -> CmmParse
         ((CLabel, Maybe CmmInfoTable, [LocalReg], [LocalReg]),
          CmmAGraphScoped)
    forall a b. (a -> b) -> a -> b
    $ CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg], [LocalReg])
    -> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg], [LocalReg])
    forall a. CmmParse a -> CmmParse a
    loopDecls (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg], [LocalReg])
     -> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg], [LocalReg]))
    -> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg], [LocalReg])
    -> CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg], [LocalReg])
    forall a b. (a -> b) -> a -> b
    $ do {
                             (entry_ret_label, info, stk_formals) <- CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
    happy_var_1;
                             platform <- getPlatform;
                             ctx      <- getContext;
                             formals <- sequence (fromMaybe [] happy_var_3);
                             withName (showSDocOneLine ctx (pprCLabel platform entry_ret_label))
                               happy_var_4;
                             return (entry_ret_label, info, stk_formals, formals) }
                         let do_layout = Maybe [CmmParse LocalReg] -> Bool
    forall a. Maybe a -> Bool
    isJust Maybe [CmmParse LocalReg]
    happy_var_3
                         code (emitProcWithStackFrame happy_var_2 info
                                    entry_ret_label stk_formals formals agraph
                                    do_layout )
    	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    forall a. a -> HappyStk a -> HappyStk a
    `HappyStk` HappyStk HappyAbsSyn
    happyRest}}}}

    happyReduce_20 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_20 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_20 = Int#
    -> HappyAbsSyn
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_0  Int#
    8# HappyAbsSyn
    happyReduction_20
    happyReduction_20 :: HappyAbsSyn
    happyReduction_20  =  Convention -> HappyAbsSyn
    happyIn12
    		 (Convention
    NativeNodeCall
    	)

    happyReduce_21 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_21 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_21 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    8# HappyAbsSyn -> HappyAbsSyn
    forall {p}. p -> HappyAbsSyn
    happyReduction_21
    happyReduction_21 :: p -> HappyAbsSyn
    happyReduction_21 p
    happy_x_1
    	 =  Convention -> HappyAbsSyn
    happyIn12
    		 (Convention
    NativeReturn
    	)

    happyReduce_22 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_22 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_22 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    9# HappyAbsSyn -> HappyAbsSyn
    forall {p}. p -> HappyAbsSyn
    happyReduction_22
    happyReduction_22 :: p -> HappyAbsSyn
    happyReduction_22 p
    happy_x_1
    	 =  CmmParse () -> HappyAbsSyn
    happyIn13
    		 (() -> CmmParse ()
    forall a. a -> CmmParse a
    forall (m :: * -> *) a. Monad m => a -> m a
    return ()
    	)

    happyReduce_23 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_23 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_23 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_3  Int#
    9# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_23
    happyReduction_23 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_23 HappyAbsSyn
    happy_x_3
    	HappyAbsSyn
    happy_x_2
    	HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_1 of { Located CmmToken
    happy_var_1 ->
    	case HappyAbsSyn -> HappyWrap15
    happyOut15 HappyAbsSyn
    happy_x_2 of { (HappyWrap15 CmmParse ()
    happy_var_2) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_3 of { Located CmmToken
    happy_var_3 ->
    	CmmParse () -> HappyAbsSyn
    happyIn13
    		 (Located CmmToken -> Located CmmToken -> CmmParse () -> CmmParse ()
    forall a b c. Located a -> Located b -> CmmParse c -> CmmParse c
    withSourceNote Located CmmToken
    happy_var_1 Located CmmToken
    happy_var_3 CmmParse ()
    happy_var_2
    	)}}}

    happyReduce_24 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_24 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_24 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyMonadReduce Int#
    1# Int#
    10# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
    forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
    happyReduction_24
    happyReduction_24 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
    happyReduction_24 (HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest) p
    tk
    	 = PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
    -> (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
        -> PD HappyAbsSyn)
    -> PD HappyAbsSyn
    forall a b. PD a -> (a -> PD b) -> PD b
    happyThen ((case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_1 of { (L SrcSpan
    _ (CmmT_Name      FastString
    happy_var_1)) ->
    	( do
                         home_unit_id <- PD UnitId
    getHomeUnitId
                         liftP $ pure $ do
                           newFunctionName happy_var_1 home_unit_id
                           return (mkCmmCodeLabel home_unit_id happy_var_1, Nothing, []))})
    	) (\CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
    r -> HappyAbsSyn -> PD HappyAbsSyn
    forall a. a -> PD a
    happyReturn (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]) -> HappyAbsSyn
    happyIn14 CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
    r))

    happyReduce_25 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_25 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_25 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyMonadReduce Int#
    14# Int#
    10# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
    forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
    happyReduction_25
    happyReduction_25 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
    happyReduction_25 (HappyAbsSyn
    happy_x_14 `HappyStk`
    	HappyAbsSyn
    happy_x_13 `HappyStk`
    	HappyAbsSyn
    happy_x_12 `HappyStk`
    	HappyAbsSyn
    happy_x_11 `HappyStk`
    	HappyAbsSyn
    happy_x_10 `HappyStk`
    	HappyAbsSyn
    happy_x_9 `HappyStk`
    	HappyAbsSyn
    happy_x_8 `HappyStk`
    	HappyAbsSyn
    happy_x_7 `HappyStk`
    	HappyAbsSyn
    happy_x_6 `HappyStk`
    	HappyAbsSyn
    happy_x_5 `HappyStk`
    	HappyAbsSyn
    happy_x_4 `HappyStk`
    	HappyAbsSyn
    happy_x_3 `HappyStk`
    	HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest) p
    tk
    	 = PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
    -> (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
        -> PD HappyAbsSyn)
    -> PD HappyAbsSyn
    forall a b. PD a -> (a -> PD b) -> PD b
    happyThen ((case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_3 of { (L SrcSpan
    _ (CmmT_Name      FastString
    happy_var_3)) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_5 of { (L SrcSpan
    _ (CmmT_Int       Integer
    happy_var_5)) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_7 of { (L SrcSpan
    _ (CmmT_Int       Integer
    happy_var_7)) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_9 of { (L SrcSpan
    _ (CmmT_Int       Integer
    happy_var_9)) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_11 of { (L SrcSpan
    _ (CmmT_String    String
    happy_var_11)) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_13 of { (L SrcSpan
    _ (CmmT_String    String
    happy_var_13)) ->
    	( do
                          home_unit_id <- PD UnitId
    getHomeUnitId
                          liftP $ pure $ do
                            profile <- getProfile
                            let prof = Profile -> String -> String -> ProfilingInfo
    profilingInfo Profile
    profile String
    happy_var_11 String
    happy_var_13
                                rep  = ByteOff -> SMRep -> SMRep
    mkRTSRep (Integer -> ByteOff
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Integer
    happy_var_9) (SMRep -> SMRep) -> SMRep -> SMRep
    forall a b. (a -> b) -> a -> b
    $
                                         Profile -> Bool -> ByteOff -> ByteOff -> ClosureTypeInfo -> SMRep
    mkHeapRep Profile
    profile Bool
    False (Integer -> ByteOff
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Integer
    happy_var_5)
                                                         (Integer -> ByteOff
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Integer
    happy_var_7) ClosureTypeInfo
    Thunk
                                    -- not really Thunk, but that makes the info table
                                    -- we want.
                            return (mkCmmEntryLabel home_unit_id happy_var_3,
                                    Just $ CmmInfoTable { cit_lbl = mkCmmInfoLabel home_unit_id happy_var_3
                                                 , cit_rep = rep
                                                 , cit_prof = prof, cit_srt = Nothing, cit_clo = Nothing },
                                    []))}}}}}})
    	) (\CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
    r -> HappyAbsSyn -> PD HappyAbsSyn
    forall a. a -> PD a
    happyReturn (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]) -> HappyAbsSyn
    happyIn14 CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
    r))

    happyReduce_26 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_26 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_26 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyMonadReduce Int#
    18# Int#
    10# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
    forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
    happyReduction_26
    happyReduction_26 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
    happyReduction_26 (HappyAbsSyn
    happy_x_18 `HappyStk`
    	HappyAbsSyn
    happy_x_17 `HappyStk`
    	HappyAbsSyn
    happy_x_16 `HappyStk`
    	HappyAbsSyn
    happy_x_15 `HappyStk`
    	HappyAbsSyn
    happy_x_14 `HappyStk`
    	HappyAbsSyn
    happy_x_13 `HappyStk`
    	HappyAbsSyn
    happy_x_12 `HappyStk`
    	HappyAbsSyn
    happy_x_11 `HappyStk`
    	HappyAbsSyn
    happy_x_10 `HappyStk`
    	HappyAbsSyn
    happy_x_9 `HappyStk`
    	HappyAbsSyn
    happy_x_8 `HappyStk`
    	HappyAbsSyn
    happy_x_7 `HappyStk`
    	HappyAbsSyn
    happy_x_6 `HappyStk`
    	HappyAbsSyn
    happy_x_5 `HappyStk`
    	HappyAbsSyn
    happy_x_4 `HappyStk`
    	HappyAbsSyn
    happy_x_3 `HappyStk`
    	HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest) p
    tk
    	 = PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
    -> (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
        -> PD HappyAbsSyn)
    -> PD HappyAbsSyn
    forall a b. PD a -> (a -> PD b) -> PD b
    happyThen ((case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_3 of { (L SrcSpan
    _ (CmmT_Name      FastString
    happy_var_3)) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_5 of { (L SrcSpan
    _ (CmmT_Int       Integer
    happy_var_5)) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_7 of { (L SrcSpan
    _ (CmmT_Int       Integer
    happy_var_7)) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_9 of { (L SrcSpan
    _ (CmmT_Int       Integer
    happy_var_9)) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_11 of { (L SrcSpan
    _ (CmmT_String    String
    happy_var_11)) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_13 of { (L SrcSpan
    _ (CmmT_String    String
    happy_var_13)) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_15 of { (L SrcSpan
    _ (CmmT_Int       Integer
    happy_var_15)) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_17 of { (L SrcSpan
    _ (CmmT_Int       Integer
    happy_var_17)) ->
    	( do
                          home_unit_id <- PD UnitId
    getHomeUnitId
                          liftP $ pure $ do
                            profile <- getProfile
                            let prof = Profile -> String -> String -> ProfilingInfo
    profilingInfo Profile
    profile String
    happy_var_11 String
    happy_var_13
                                ty   = ByteOff -> ArgDescr -> ClosureTypeInfo
    Fun (Integer -> ByteOff
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Integer
    happy_var_15) (ByteOff -> ArgDescr
    ArgSpec (Integer -> ByteOff
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Integer
    happy_var_17))
                                rep = ByteOff -> SMRep -> SMRep
    mkRTSRep (Integer -> ByteOff
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Integer
    happy_var_9) (SMRep -> SMRep) -> SMRep -> SMRep
    forall a b. (a -> b) -> a -> b
    $
                                          Profile -> Bool -> ByteOff -> ByteOff -> ClosureTypeInfo -> SMRep
    mkHeapRep Profile
    profile Bool
    False (Integer -> ByteOff
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Integer
    happy_var_5)
                                                          (Integer -> ByteOff
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Integer
    happy_var_7) ClosureTypeInfo
    ty
                            return (mkCmmEntryLabel home_unit_id happy_var_3,
                                    Just $ CmmInfoTable { cit_lbl = mkCmmInfoLabel home_unit_id happy_var_3
                                                 , cit_rep = rep
                                                 , cit_prof = prof, cit_srt = Nothing, cit_clo = Nothing },
                                    []))}}}}}}}})
    	) (\CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
    r -> HappyAbsSyn -> PD HappyAbsSyn
    forall a. a -> PD a
    happyReturn (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]) -> HappyAbsSyn
    happyIn14 CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
    r))

    happyReduce_27 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_27 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_27 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyMonadReduce Int#
    16# Int#
    10# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
    forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
    happyReduction_27
    happyReduction_27 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
    happyReduction_27 (HappyAbsSyn
    happy_x_16 `HappyStk`
    	HappyAbsSyn
    happy_x_15 `HappyStk`
    	HappyAbsSyn
    happy_x_14 `HappyStk`
    	HappyAbsSyn
    happy_x_13 `HappyStk`
    	HappyAbsSyn
    happy_x_12 `HappyStk`
    	HappyAbsSyn
    happy_x_11 `HappyStk`
    	HappyAbsSyn
    happy_x_10 `HappyStk`
    	HappyAbsSyn
    happy_x_9 `HappyStk`
    	HappyAbsSyn
    happy_x_8 `HappyStk`
    	HappyAbsSyn
    happy_x_7 `HappyStk`
    	HappyAbsSyn
    happy_x_6 `HappyStk`
    	HappyAbsSyn
    happy_x_5 `HappyStk`
    	HappyAbsSyn
    happy_x_4 `HappyStk`
    	HappyAbsSyn
    happy_x_3 `HappyStk`
    	HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest) p
    tk
    	 = PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
    -> (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
        -> PD HappyAbsSyn)
    -> PD HappyAbsSyn
    forall a b. PD a -> (a -> PD b) -> PD b
    happyThen ((case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_3 of { (L SrcSpan
    _ (CmmT_Name      FastString
    happy_var_3)) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_5 of { (L SrcSpan
    _ (CmmT_Int       Integer
    happy_var_5)) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_7 of { (L SrcSpan
    _ (CmmT_Int       Integer
    happy_var_7)) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_9 of { (L SrcSpan
    _ (CmmT_Int       Integer
    happy_var_9)) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_11 of { (L SrcSpan
    _ (CmmT_Int       Integer
    happy_var_11)) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_13 of { (L SrcSpan
    _ (CmmT_String    String
    happy_var_13)) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_15 of { (L SrcSpan
    _ (CmmT_String    String
    happy_var_15)) ->
    	( do
                          home_unit_id <- PD UnitId
    getHomeUnitId
                          liftP $ pure $ do
                            profile <- getProfile
                            let prof = Profile -> String -> String -> ProfilingInfo
    profilingInfo Profile
    profile String
    happy_var_13 String
    happy_var_15
                                ty  = ByteOff -> ConstrDescription -> ClosureTypeInfo
    Constr (Integer -> ByteOff
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Integer
    happy_var_9)  -- Tag
                                             (String -> ConstrDescription
    BS8.pack String
    happy_var_13)
                                rep = ByteOff -> SMRep -> SMRep
    mkRTSRep (Integer -> ByteOff
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Integer
    happy_var_11) (SMRep -> SMRep) -> SMRep -> SMRep
    forall a b. (a -> b) -> a -> b
    $
                                        Profile -> Bool -> ByteOff -> ByteOff -> ClosureTypeInfo -> SMRep
    mkHeapRep Profile
    profile Bool
    False (Integer -> ByteOff
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Integer
    happy_var_5)
                                                        (Integer -> ByteOff
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Integer
    happy_var_7) ClosureTypeInfo
    ty
                            return (mkCmmEntryLabel home_unit_id happy_var_3,
                                    Just $ CmmInfoTable { cit_lbl = mkCmmInfoLabel home_unit_id happy_var_3
                                                 , cit_rep = rep
                                                 , cit_prof = prof, cit_srt = Nothing,cit_clo = Nothing },
                                    []))}}}}}}})
    	) (\CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
    r -> HappyAbsSyn -> PD HappyAbsSyn
    forall a. a -> PD a
    happyReturn (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]) -> HappyAbsSyn
    happyIn14 CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
    r))

    happyReduce_28 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_28 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_28 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyMonadReduce Int#
    12# Int#
    10# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
    forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
    happyReduction_28
    happyReduction_28 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
    happyReduction_28 (HappyAbsSyn
    happy_x_12 `HappyStk`
    	HappyAbsSyn
    happy_x_11 `HappyStk`
    	HappyAbsSyn
    happy_x_10 `HappyStk`
    	HappyAbsSyn
    happy_x_9 `HappyStk`
    	HappyAbsSyn
    happy_x_8 `HappyStk`
    	HappyAbsSyn
    happy_x_7 `HappyStk`
    	HappyAbsSyn
    happy_x_6 `HappyStk`
    	HappyAbsSyn
    happy_x_5 `HappyStk`
    	HappyAbsSyn
    happy_x_4 `HappyStk`
    	HappyAbsSyn
    happy_x_3 `HappyStk`
    	HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest) p
    tk
    	 = PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
    -> (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
        -> PD HappyAbsSyn)
    -> PD HappyAbsSyn
    forall a b. PD a -> (a -> PD b) -> PD b
    happyThen ((case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_3 of { (L SrcSpan
    _ (CmmT_Name      FastString
    happy_var_3)) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_5 of { (L SrcSpan
    _ (CmmT_Int       Integer
    happy_var_5)) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_7 of { (L SrcSpan
    _ (CmmT_Int       Integer
    happy_var_7)) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_9 of { (L SrcSpan
    _ (CmmT_String    String
    happy_var_9)) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_11 of { (L SrcSpan
    _ (CmmT_String    String
    happy_var_11)) ->
    	( do
                          home_unit_id <- PD UnitId
    getHomeUnitId
                          liftP $ pure $ do
                            profile <- getProfile
                            let prof = Profile -> String -> String -> ProfilingInfo
    profilingInfo Profile
    profile String
    happy_var_9 String
    happy_var_11
                                ty  = ByteOff -> ClosureTypeInfo
    ThunkSelector (Integer -> ByteOff
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Integer
    happy_var_5)
                                rep = ByteOff -> SMRep -> SMRep
    mkRTSRep (Integer -> ByteOff
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Integer
    happy_var_7) (SMRep -> SMRep) -> SMRep -> SMRep
    forall a b. (a -> b) -> a -> b
    $
                                         Profile -> Bool -> ByteOff -> ByteOff -> ClosureTypeInfo -> SMRep
    mkHeapRep Profile
    profile Bool
    False ByteOff
    0 ByteOff
    0 ClosureTypeInfo
    ty
                            return (mkCmmEntryLabel home_unit_id happy_var_3,
                                    Just $ CmmInfoTable { cit_lbl = mkCmmInfoLabel home_unit_id happy_var_3
                                                 , cit_rep = rep
                                                 , cit_prof = prof, cit_srt = Nothing, cit_clo = Nothing },
                                    []))}}}}})
    	) (\CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
    r -> HappyAbsSyn -> PD HappyAbsSyn
    forall a. a -> PD a
    happyReturn (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]) -> HappyAbsSyn
    happyIn14 CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
    r))

    happyReduce_29 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_29 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_29 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyMonadReduce Int#
    6# Int#
    10# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
    forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
    happyReduction_29
    happyReduction_29 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
    happyReduction_29 (HappyAbsSyn
    happy_x_6 `HappyStk`
    	HappyAbsSyn
    happy_x_5 `HappyStk`
    	HappyAbsSyn
    happy_x_4 `HappyStk`
    	HappyAbsSyn
    happy_x_3 `HappyStk`
    	HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest) p
    tk
    	 = PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
    -> (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
        -> PD HappyAbsSyn)
    -> PD HappyAbsSyn
    forall a b. PD a -> (a -> PD b) -> PD b
    happyThen ((case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_3 of { (L SrcSpan
    _ (CmmT_Name      FastString
    happy_var_3)) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_5 of { (L SrcSpan
    _ (CmmT_Int       Integer
    happy_var_5)) ->
    	( do
                          home_unit_id <- PD UnitId
    getHomeUnitId
                          liftP $ pure $ do
                            let prof = ProfilingInfo
    NoProfilingInfo
                                rep  = ByteOff -> SMRep -> SMRep
    mkRTSRep (Integer -> ByteOff
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Integer
    happy_var_5) (SMRep -> SMRep) -> SMRep -> SMRep
    forall a b. (a -> b) -> a -> b
    $ [Bool] -> SMRep
    mkStackRep []
                            return (mkCmmRetLabel home_unit_id happy_var_3,
                                    Just $ CmmInfoTable { cit_lbl = mkCmmRetInfoLabel home_unit_id happy_var_3
                                                 , cit_rep = rep
                                                 , cit_prof = prof, cit_srt = Nothing, cit_clo = Nothing },
                                    []))}})
    	) (\CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
    r -> HappyAbsSyn -> PD HappyAbsSyn
    forall a. a -> PD a
    happyReturn (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]) -> HappyAbsSyn
    happyIn14 CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
    r))

    happyReduce_30 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_30 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_30 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyMonadReduce Int#
    8# Int#
    10# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
    forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
    happyReduction_30
    happyReduction_30 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
    happyReduction_30 (HappyAbsSyn
    happy_x_8 `HappyStk`
    	HappyAbsSyn
    happy_x_7 `HappyStk`
    	HappyAbsSyn
    happy_x_6 `HappyStk`
    	HappyAbsSyn
    happy_x_5 `HappyStk`
    	HappyAbsSyn
    happy_x_4 `HappyStk`
    	HappyAbsSyn
    happy_x_3 `HappyStk`
    	HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest) p
    tk
    	 = PD (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
    -> (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
        -> PD HappyAbsSyn)
    -> PD HappyAbsSyn
    forall a b. PD a -> (a -> PD b) -> PD b
    happyThen ((case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_3 of { (L SrcSpan
    _ (CmmT_Name      FastString
    happy_var_3)) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_5 of { (L SrcSpan
    _ (CmmT_Int       Integer
    happy_var_5)) ->
    	case HappyAbsSyn -> HappyWrap54
    happyOut54 HappyAbsSyn
    happy_x_7 of { (HappyWrap54 [CmmParse LocalReg]
    happy_var_7) ->
    	( do
                          home_unit_id <- PD UnitId
    getHomeUnitId
                          liftP $ pure $ do
                            platform <- getPlatform
                            live <- sequence happy_var_7
                            let prof = ProfilingInfo
    NoProfilingInfo
                                -- drop one for the info pointer
                                bitmap = Platform -> [LocalReg] -> [Bool]
    mkLiveness Platform
    platform (ByteOff -> [LocalReg] -> [LocalReg]
    forall a. ByteOff -> [a] -> [a]
    drop ByteOff
    1 [LocalReg]
    live)
                                rep  = ByteOff -> SMRep -> SMRep
    mkRTSRep (Integer -> ByteOff
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Integer
    happy_var_5) (SMRep -> SMRep) -> SMRep -> SMRep
    forall a b. (a -> b) -> a -> b
    $ [Bool] -> SMRep
    mkStackRep [Bool]
    bitmap
                            return (mkCmmRetLabel home_unit_id happy_var_3,
                                    Just $ CmmInfoTable { cit_lbl = mkCmmRetInfoLabel home_unit_id happy_var_3
                                                 , cit_rep = rep
                                                 , cit_prof = prof, cit_srt = Nothing, cit_clo = Nothing },
                                    live))}}})
    	) (\CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
    r -> HappyAbsSyn -> PD HappyAbsSyn
    forall a. a -> PD a
    happyReturn (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]) -> HappyAbsSyn
    happyIn14 CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])
    r))

    happyReduce_31 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_31 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_31 = Int#
    -> HappyAbsSyn
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_0  Int#
    11# HappyAbsSyn
    happyReduction_31
    happyReduction_31 :: HappyAbsSyn
    happyReduction_31  =  CmmParse () -> HappyAbsSyn
    happyIn15
    		 (() -> CmmParse ()
    forall a. a -> CmmParse a
    forall (m :: * -> *) a. Monad m => a -> m a
    return ()
    	)

    happyReduce_32 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_32 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_32 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_2  Int#
    11# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_32
    happyReduction_32 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_32 HappyAbsSyn
    happy_x_2
    	HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap16
    happyOut16 HappyAbsSyn
    happy_x_1 of { (HappyWrap16 CmmParse ()
    happy_var_1) ->
    	case HappyAbsSyn -> HappyWrap15
    happyOut15 HappyAbsSyn
    happy_x_2 of { (HappyWrap15 CmmParse ()
    happy_var_2) ->
    	CmmParse () -> HappyAbsSyn
    happyIn15
    		 (do CmmParse ()
    happy_var_1; CmmParse ()
    happy_var_2
    	)}}

    happyReduce_33 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_33 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_33 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_2  Int#
    11# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_33
    happyReduction_33 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_33 HappyAbsSyn
    happy_x_2
    	HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap20
    happyOut20 HappyAbsSyn
    happy_x_1 of { (HappyWrap20 CmmParse ()
    happy_var_1) ->
    	case HappyAbsSyn -> HappyWrap15
    happyOut15 HappyAbsSyn
    happy_x_2 of { (HappyWrap15 CmmParse ()
    happy_var_2) ->
    	CmmParse () -> HappyAbsSyn
    happyIn15
    		 (do CmmParse ()
    happy_var_1; CmmParse ()
    happy_var_2
    	)}}

    happyReduce_34 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_34 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_34 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_3  Int#
    12# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p}. p -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_34
    happyReduction_34 :: p -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_34 p
    happy_x_3
    	HappyAbsSyn
    happy_x_2
    	HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap57
    happyOut57 HappyAbsSyn
    happy_x_1 of { (HappyWrap57 CmmType
    happy_var_1) ->
    	case HappyAbsSyn -> HappyWrap19
    happyOut19 HappyAbsSyn
    happy_x_2 of { (HappyWrap19 [FastString]
    happy_var_2) ->
    	CmmParse () -> HappyAbsSyn
    happyIn16
    		 ((FastString -> CmmParse LocalReg) -> [FastString] -> CmmParse ()
    forall (t :: * -> *) (m :: * -> *) a b.
    (Foldable t, Monad m) =>
    (a -> m b) -> t a -> m ()
    mapM_ (CmmType -> FastString -> CmmParse LocalReg
    newLocal CmmType
    happy_var_1) [FastString]
    happy_var_2
    	)}}

    happyReduce_35 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_35 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_35 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_3  Int#
    12# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p} {p}. p -> HappyAbsSyn -> p -> HappyAbsSyn
    happyReduction_35
    happyReduction_35 :: p -> HappyAbsSyn -> p -> HappyAbsSyn
    happyReduction_35 p
    happy_x_3
    	HappyAbsSyn
    happy_x_2
    	p
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap17
    happyOut17 HappyAbsSyn
    happy_x_2 of { (HappyWrap17 [(FastString, CLabel)]
    happy_var_2) ->
    	CmmParse () -> HappyAbsSyn
    happyIn16
    		 (((FastString, CLabel) -> CmmParse ())
    -> [(FastString, CLabel)] -> CmmParse ()
    forall (t :: * -> *) (m :: * -> *) a b.
    (Foldable t, Monad m) =>
    (a -> m b) -> t a -> m ()
    mapM_ (FastString, CLabel) -> CmmParse ()
    newImport [(FastString, CLabel)]
    happy_var_2
    	)}

    happyReduce_36 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_36 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_36 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_3  Int#
    12# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p} {p} {p}. p -> p -> p -> HappyAbsSyn
    happyReduction_36
    happyReduction_36 :: p -> p -> p -> HappyAbsSyn
    happyReduction_36 p
    happy_x_3
    	p
    happy_x_2
    	p
    happy_x_1
    	 =  CmmParse () -> HappyAbsSyn
    happyIn16
    		 (() -> CmmParse ()
    forall a. a -> CmmParse a
    forall (m :: * -> *) a. Monad m => a -> m a
    return ()
    	)

    happyReduce_37 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_37 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_37 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    13# HappyAbsSyn -> HappyAbsSyn
    happyReduction_37
    happyReduction_37 :: HappyAbsSyn -> HappyAbsSyn
    happyReduction_37 HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap18
    happyOut18 HappyAbsSyn
    happy_x_1 of { (HappyWrap18 (FastString, CLabel)
    happy_var_1) ->
    	[(FastString, CLabel)] -> HappyAbsSyn
    happyIn17
    		 ([(FastString, CLabel)
    happy_var_1]
    	)}

    happyReduce_38 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_38 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_38 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_3  Int#
    13# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_38
    happyReduction_38 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_38 HappyAbsSyn
    happy_x_3
    	p
    happy_x_2
    	HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap18
    happyOut18 HappyAbsSyn
    happy_x_1 of { (HappyWrap18 (FastString, CLabel)
    happy_var_1) ->
    	case HappyAbsSyn -> HappyWrap17
    happyOut17 HappyAbsSyn
    happy_x_3 of { (HappyWrap17 [(FastString, CLabel)]
    happy_var_3) ->
    	[(FastString, CLabel)] -> HappyAbsSyn
    happyIn17
    		 ((FastString, CLabel)
    happy_var_1 (FastString, CLabel)
    -> [(FastString, CLabel)] -> [(FastString, CLabel)]
    forall a. a -> [a] -> [a]
    : [(FastString, CLabel)]
    happy_var_3
    	)}}

    happyReduce_39 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_39 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_39 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    14# HappyAbsSyn -> HappyAbsSyn
    happyReduction_39
    happyReduction_39 :: HappyAbsSyn -> HappyAbsSyn
    happyReduction_39 HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_1 of { (L SrcSpan
    _ (CmmT_Name      FastString
    happy_var_1)) ->
    	(FastString, CLabel) -> HappyAbsSyn
    happyIn18
    		 ((FastString
    happy_var_1, FastString
    -> Maybe ByteOff -> ForeignLabelSource -> FunctionOrData -> CLabel
    mkForeignLabel FastString
    happy_var_1 Maybe ByteOff
    forall a. Maybe a
    Nothing ForeignLabelSource
    ForeignLabelInExternalPackage FunctionOrData
    IsFunction)
    	)}

    happyReduce_40 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_40 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_40 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_2  Int#
    14# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p}. HappyAbsSyn -> p -> HappyAbsSyn
    happyReduction_40
    happyReduction_40 :: HappyAbsSyn -> p -> HappyAbsSyn
    happyReduction_40 HappyAbsSyn
    happy_x_2
    	p
    happy_x_1
    	 =  case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_2 of { (L SrcSpan
    _ (CmmT_Name      FastString
    happy_var_2)) ->
    	(FastString, CLabel) -> HappyAbsSyn
    happyIn18
    		 ((FastString
    happy_var_2, FastString
    -> Maybe ByteOff -> ForeignLabelSource -> FunctionOrData -> CLabel
    mkForeignLabel FastString
    happy_var_2 Maybe ByteOff
    forall a. Maybe a
    Nothing ForeignLabelSource
    ForeignLabelInExternalPackage FunctionOrData
    IsData)
    	)}

    happyReduce_41 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_41 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_41 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_2  Int#
    14# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_41
    happyReduction_41 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_41 HappyAbsSyn
    happy_x_2
    	HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_1 of { (L SrcSpan
    _ (CmmT_String    String
    happy_var_1)) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_2 of { (L SrcSpan
    _ (CmmT_Name      FastString
    happy_var_2)) ->
    	(FastString, CLabel) -> HappyAbsSyn
    happyIn18
    		 ((FastString
    happy_var_2, UnitId -> FastString -> CLabel
    mkCmmCodeLabel (FastString -> UnitId
    UnitId (String -> FastString
    mkFastString String
    happy_var_1)) FastString
    happy_var_2)
    	)}}

    happyReduce_42 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_42 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_42 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    15# HappyAbsSyn -> HappyAbsSyn
    happyReduction_42
    happyReduction_42 :: HappyAbsSyn -> HappyAbsSyn
    happyReduction_42 HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_1 of { (L SrcSpan
    _ (CmmT_Name      FastString
    happy_var_1)) ->
    	[FastString] -> HappyAbsSyn
    happyIn19
    		 ([FastString
    happy_var_1]
    	)}

    happyReduce_43 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_43 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_43 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_3  Int#
    15# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_43
    happyReduction_43 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_43 HappyAbsSyn
    happy_x_3
    	p
    happy_x_2
    	HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_1 of { (L SrcSpan
    _ (CmmT_Name      FastString
    happy_var_1)) ->
    	case HappyAbsSyn -> HappyWrap19
    happyOut19 HappyAbsSyn
    happy_x_3 of { (HappyWrap19 [FastString]
    happy_var_3) ->
    	[FastString] -> HappyAbsSyn
    happyIn19
    		 (FastString
    happy_var_1 FastString -> [FastString] -> [FastString]
    forall a. a -> [a] -> [a]
    : [FastString]
    happy_var_3
    	)}}

    happyReduce_44 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_44 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_44 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    16# HappyAbsSyn -> HappyAbsSyn
    forall {p}. p -> HappyAbsSyn
    happyReduction_44
    happyReduction_44 :: p -> HappyAbsSyn
    happyReduction_44 p
    happy_x_1
    	 =  CmmParse () -> HappyAbsSyn
    happyIn20
    		 (() -> CmmParse ()
    forall a. a -> CmmParse a
    forall (m :: * -> *) a. Monad m => a -> m a
    return ()
    	)

    happyReduce_45 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_45 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_45 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_2  Int#
    16# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p}. p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_45
    happyReduction_45 :: p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_45 p
    happy_x_2
    	HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_1 of { (L SrcSpan
    _ (CmmT_Name      FastString
    happy_var_1)) ->
    	CmmParse () -> HappyAbsSyn
    happyIn20
    		 (do l <- FastString -> CmmParse BlockId
    newLabel FastString
    happy_var_1; emitLabel l
    	)}

    happyReduce_46 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_46 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_46 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce Int#
    4# Int#
    16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_46
    happyReduction_46 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_46 (HappyAbsSyn
    happy_x_4 `HappyStk`
    	HappyAbsSyn
    happy_x_3 `HappyStk`
    	HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest)
    	 = case HappyAbsSyn -> HappyWrap52
    happyOut52 HappyAbsSyn
    happy_x_1 of { (HappyWrap52 CmmParse CmmReg
    happy_var_1) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_2 of { Located CmmToken
    happy_var_2 ->
    	case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_3 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_3) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_4 of { Located CmmToken
    happy_var_4 ->
    	CmmParse () -> HappyAbsSyn
    happyIn20
    		 (do reg <- CmmParse CmmReg
    happy_var_1; e <- happy_var_3; withSourceNote happy_var_2 happy_var_4 (emitAssign reg e)
    	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    forall a. a -> HappyStk a -> HappyStk a
    `HappyStk` HappyStk HappyAbsSyn
    happyRest}}}}

    happyReduce_47 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_47 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_47 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce Int#
    8# Int#
    16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_47
    happyReduction_47 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_47 (HappyAbsSyn
    happy_x_8 `HappyStk`
    	HappyAbsSyn
    happy_x_7 `HappyStk`
    	HappyAbsSyn
    happy_x_6 `HappyStk`
    	HappyAbsSyn
    happy_x_5 `HappyStk`
    	HappyAbsSyn
    happy_x_4 `HappyStk`
    	HappyAbsSyn
    happy_x_3 `HappyStk`
    	HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest)
    	 = case HappyAbsSyn -> HappyWrap52
    happyOut52 HappyAbsSyn
    happy_x_1 of { (HappyWrap52 CmmParse CmmReg
    happy_var_1) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_2 of { Located CmmToken
    happy_var_2 ->
    	case HappyAbsSyn -> HappyWrap22
    happyOut22 HappyAbsSyn
    happy_x_3 of { (HappyWrap22 CmmParse MemoryOrdering
    happy_var_3) ->
    	case HappyAbsSyn -> HappyWrap57
    happyOut57 HappyAbsSyn
    happy_x_4 of { (HappyWrap57 CmmType
    happy_var_4) ->
    	case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_6 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_6) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_7 of { Located CmmToken
    happy_var_7 ->
    	CmmParse () -> HappyAbsSyn
    happyIn20
    		 (do reg <- CmmParse CmmReg
    happy_var_1;
                         let lreg = case CmmReg
    reg of
                                      { CmmLocal LocalReg
    r -> LocalReg
    r
                                      ; CmmReg
    other -> String -> SDoc -> LocalReg
    forall a. HasCallStack => String -> SDoc -> a
    pprPanic String
    "CmmParse:" (CmmReg -> SDoc
    forall a. Outputable a => a -> SDoc
    ppr CmmReg
    reg SDoc -> SDoc -> SDoc
    forall doc. IsLine doc => doc -> doc -> doc
    <> String -> SDoc
    forall doc. IsLine doc => String -> doc
    text String
    "not a local register")
                                      } ;
                         mord <- happy_var_3;
                         let { ty = CmmType
    happy_var_4; w = CmmType -> Width
    typeWidth CmmType
    ty };
                         e <- happy_var_6;
                         let op = Width -> MemoryOrdering -> CallishMachOp
    MO_AtomicRead Width
    w MemoryOrdering
    mord;
                         withSourceNote happy_var_2 happy_var_7 $ code (emitPrimCall [lreg] op [e])
    	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    forall a. a -> HappyStk a -> HappyStk a
    `HappyStk` HappyStk HappyAbsSyn
    happyRest}}}}}}

    happyReduce_48 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_48 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_48 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce Int#
    8# Int#
    16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_48
    happyReduction_48 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_48 (HappyAbsSyn
    happy_x_8 `HappyStk`
    	HappyAbsSyn
    happy_x_7 `HappyStk`
    	HappyAbsSyn
    happy_x_6 `HappyStk`
    	HappyAbsSyn
    happy_x_5 `HappyStk`
    	HappyAbsSyn
    happy_x_4 `HappyStk`
    	HappyAbsSyn
    happy_x_3 `HappyStk`
    	HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest)
    	 = case HappyAbsSyn -> HappyWrap22
    happyOut22 HappyAbsSyn
    happy_x_1 of { (HappyWrap22 CmmParse MemoryOrdering
    happy_var_1) ->
    	case HappyAbsSyn -> HappyWrap57
    happyOut57 HappyAbsSyn
    happy_x_2 of { (HappyWrap57 CmmType
    happy_var_2) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_3 of { Located CmmToken
    happy_var_3 ->
    	case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_4 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_4) ->
    	case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_7 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_7) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_8 of { Located CmmToken
    happy_var_8 ->
    	CmmParse () -> HappyAbsSyn
    happyIn20
    		 (do mord <- CmmParse MemoryOrdering
    happy_var_1; withSourceNote happy_var_3 happy_var_8 (doStore (Just mord) happy_var_2 happy_var_4 happy_var_7)
    	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    forall a. a -> HappyStk a -> HappyStk a
    `HappyStk` HappyStk HappyAbsSyn
    happyRest}}}}}}

    happyReduce_49 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_49 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_49 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce Int#
    7# Int#
    16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_49
    happyReduction_49 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_49 (HappyAbsSyn
    happy_x_7 `HappyStk`
    	HappyAbsSyn
    happy_x_6 `HappyStk`
    	HappyAbsSyn
    happy_x_5 `HappyStk`
    	HappyAbsSyn
    happy_x_4 `HappyStk`
    	HappyAbsSyn
    happy_x_3 `HappyStk`
    	HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest)
    	 = case HappyAbsSyn -> HappyWrap57
    happyOut57 HappyAbsSyn
    happy_x_1 of { (HappyWrap57 CmmType
    happy_var_1) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_2 of { Located CmmToken
    happy_var_2 ->
    	case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_3 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_3) ->
    	case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_6 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_6) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_7 of { Located CmmToken
    happy_var_7 ->
    	CmmParse () -> HappyAbsSyn
    happyIn20
    		 (Located CmmToken -> Located CmmToken -> CmmParse () -> CmmParse ()
    forall a b c. Located a -> Located b -> CmmParse c -> CmmParse c
    withSourceNote Located CmmToken
    happy_var_2 Located CmmToken
    happy_var_7 (Maybe MemoryOrdering
    -> CmmType -> CmmParse CmmExpr -> CmmParse CmmExpr -> CmmParse ()
    doStore Maybe MemoryOrdering
    forall a. Maybe a
    Nothing CmmType
    happy_var_1 CmmParse CmmExpr
    happy_var_3 CmmParse CmmExpr
    happy_var_6)
    	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    forall a. a -> HappyStk a -> HappyStk a
    `HappyStk` HappyStk HappyAbsSyn
    happyRest}}}}}

    happyReduce_50 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_50 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_50 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyMonadReduce Int#
    10# Int#
    16# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
    forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
    happyReduction_50
    happyReduction_50 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
    happyReduction_50 (HappyAbsSyn
    happy_x_10 `HappyStk`
    	HappyAbsSyn
    happy_x_9 `HappyStk`
    	HappyAbsSyn
    happy_x_8 `HappyStk`
    	HappyAbsSyn
    happy_x_7 `HappyStk`
    	HappyAbsSyn
    happy_x_6 `HappyStk`
    	HappyAbsSyn
    happy_x_5 `HappyStk`
    	HappyAbsSyn
    happy_x_4 `HappyStk`
    	HappyAbsSyn
    happy_x_3 `HappyStk`
    	HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest) p
    tk
    	 = PD (CmmParse ())
    -> (CmmParse () -> PD HappyAbsSyn) -> PD HappyAbsSyn
    forall a b. PD a -> (a -> PD b) -> PD b
    happyThen ((case HappyAbsSyn -> HappyWrap48
    happyOut48 HappyAbsSyn
    happy_x_1 of { (HappyWrap48 [CmmParse (LocalReg, ForeignHint)]
    happy_var_1) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_3 of { (L SrcSpan
    _ (CmmT_String    String
    happy_var_3)) ->
    	case HappyAbsSyn -> HappyWrap24
    happyOut24 HappyAbsSyn
    happy_x_4 of { (HappyWrap24 CmmParse CmmExpr
    happy_var_4) ->
    	case HappyAbsSyn -> HappyWrap42
    happyOut42 HappyAbsSyn
    happy_x_6 of { (HappyWrap42 [CmmParse (CmmExpr, ForeignHint)]
    happy_var_6) ->
    	case HappyAbsSyn -> HappyWrap28
    happyOut28 HappyAbsSyn
    happy_x_8 of { (HappyWrap28 Safety
    happy_var_8) ->
    	case HappyAbsSyn -> HappyWrap25
    happyOut25 HappyAbsSyn
    happy_x_9 of { (HappyWrap25 CmmReturnInfo
    happy_var_9) ->
    	( String
    -> [CmmParse (LocalReg, ForeignHint)]
    -> CmmParse CmmExpr
    -> [CmmParse (CmmExpr, ForeignHint)]
    -> Safety
    -> CmmReturnInfo
    -> PD (CmmParse ())
    foreignCall String
    happy_var_3 [CmmParse (LocalReg, ForeignHint)]
    happy_var_1 CmmParse CmmExpr
    happy_var_4 [CmmParse (CmmExpr, ForeignHint)]
    happy_var_6 Safety
    happy_var_8 CmmReturnInfo
    happy_var_9)}}}}}})
    	) (\CmmParse ()
    r -> HappyAbsSyn -> PD HappyAbsSyn
    forall a. a -> PD a
    happyReturn (CmmParse () -> HappyAbsSyn
    happyIn20 CmmParse ()
    r))

    happyReduce_51 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_51 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_51 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyMonadReduce Int#
    8# Int#
    16# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
    forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
    happyReduction_51
    happyReduction_51 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
    happyReduction_51 (HappyAbsSyn
    happy_x_8 `HappyStk`
    	HappyAbsSyn
    happy_x_7 `HappyStk`
    	HappyAbsSyn
    happy_x_6 `HappyStk`
    	HappyAbsSyn
    happy_x_5 `HappyStk`
    	HappyAbsSyn
    happy_x_4 `HappyStk`
    	HappyAbsSyn
    happy_x_3 `HappyStk`
    	HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest) p
    tk
    	 = PD (CmmParse ())
    -> (CmmParse () -> PD HappyAbsSyn) -> PD HappyAbsSyn
    forall a b. PD a -> (a -> PD b) -> PD b
    happyThen ((case HappyAbsSyn -> HappyWrap48
    happyOut48 HappyAbsSyn
    happy_x_1 of { (HappyWrap48 [CmmParse (LocalReg, ForeignHint)]
    happy_var_1) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_4 of { (L SrcSpan
    _ (CmmT_Name      FastString
    happy_var_4)) ->
    	case HappyAbsSyn -> HappyWrap45
    happyOut45 HappyAbsSyn
    happy_x_6 of { (HappyWrap45 [CmmParse CmmExpr]
    happy_var_6) ->
    	( [CmmParse (LocalReg, ForeignHint)]
    -> FastString -> [CmmParse CmmExpr] -> PD (CmmParse ())
    primCall [CmmParse (LocalReg, ForeignHint)]
    happy_var_1 FastString
    happy_var_4 [CmmParse CmmExpr]
    happy_var_6)}}})
    	) (\CmmParse ()
    r -> HappyAbsSyn -> PD HappyAbsSyn
    forall a. a -> PD a
    happyReturn (CmmParse () -> HappyAbsSyn
    happyIn20 CmmParse ()
    r))

    happyReduce_52 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_52 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_52 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyMonadReduce Int#
    5# Int#
    16# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
    forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
    happyReduction_52
    happyReduction_52 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
    happyReduction_52 (HappyAbsSyn
    happy_x_5 `HappyStk`
    	HappyAbsSyn
    happy_x_4 `HappyStk`
    	HappyAbsSyn
    happy_x_3 `HappyStk`
    	HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest) p
    tk
    	 = PD (CmmParse ())
    -> (CmmParse () -> PD HappyAbsSyn) -> PD HappyAbsSyn
    forall a b. PD a -> (a -> PD b) -> PD b
    happyThen ((case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_1 of { (L SrcSpan
    _ (CmmT_Name      FastString
    happy_var_1)) ->
    	case HappyAbsSyn -> HappyWrap45
    happyOut45 HappyAbsSyn
    happy_x_3 of { (HappyWrap45 [CmmParse CmmExpr]
    happy_var_3) ->
    	( FastString -> [CmmParse CmmExpr] -> PD (CmmParse ())
    stmtMacro FastString
    happy_var_1 [CmmParse CmmExpr]
    happy_var_3)}})
    	) (\CmmParse ()
    r -> HappyAbsSyn -> PD HappyAbsSyn
    forall a. a -> PD a
    happyReturn (CmmParse () -> HappyAbsSyn
    happyIn20 CmmParse ()
    r))

    happyReduce_53 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_53 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_53 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce Int#
    7# Int#
    16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_53
    happyReduction_53 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_53 (HappyAbsSyn
    happy_x_7 `HappyStk`
    	HappyAbsSyn
    happy_x_6 `HappyStk`
    	HappyAbsSyn
    happy_x_5 `HappyStk`
    	HappyAbsSyn
    happy_x_4 `HappyStk`
    	HappyAbsSyn
    happy_x_3 `HappyStk`
    	HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest)
    	 = case HappyAbsSyn -> HappyWrap31
    happyOut31 HappyAbsSyn
    happy_x_2 of { (HappyWrap31 Maybe (Integer, Integer)
    happy_var_2) ->
    	case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_3 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_3) ->
    	case HappyAbsSyn -> HappyWrap32
    happyOut32 HappyAbsSyn
    happy_x_5 of { (HappyWrap32 [CmmParse ([Integer], Either BlockId (CmmParse ()))]
    happy_var_5) ->
    	case HappyAbsSyn -> HappyWrap36
    happyOut36 HappyAbsSyn
    happy_x_6 of { (HappyWrap36 Maybe (CmmParse ())
    happy_var_6) ->
    	CmmParse () -> HappyAbsSyn
    happyIn20
    		 (do as <- [CmmParse ([Integer], Either BlockId (CmmParse ()))]
    -> CmmParse [([Integer], Either BlockId (CmmParse ()))]
    forall (t :: * -> *) (m :: * -> *) a.
    (Traversable t, Monad m) =>
    t (m a) -> m (t a)
    forall (m :: * -> *) a. Monad m => [m a] -> m [a]
    sequence [CmmParse ([Integer], Either BlockId (CmmParse ()))]
    happy_var_5; doSwitch happy_var_2 happy_var_3 as happy_var_6
    	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    forall a. a -> HappyStk a -> HappyStk a
    `HappyStk` HappyStk HappyAbsSyn
    happyRest}}}}

    happyReduce_54 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_54 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_54 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_3  Int#
    16# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p} {p}. p -> HappyAbsSyn -> p -> HappyAbsSyn
    happyReduction_54
    happyReduction_54 :: p -> HappyAbsSyn -> p -> HappyAbsSyn
    happyReduction_54 p
    happy_x_3
    	HappyAbsSyn
    happy_x_2
    	p
    happy_x_1
    	 =  case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_2 of { (L SrcSpan
    _ (CmmT_Name      FastString
    happy_var_2)) ->
    	CmmParse () -> HappyAbsSyn
    happyIn20
    		 (do l <- FastString -> CmmParse BlockId
    lookupLabel FastString
    happy_var_2; emit (mkBranch l)
    	)}

    happyReduce_55 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_55 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_55 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce Int#
    5# Int#
    16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_55
    happyReduction_55 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_55 (HappyAbsSyn
    happy_x_5 `HappyStk`
    	HappyAbsSyn
    happy_x_4 `HappyStk`
    	HappyAbsSyn
    happy_x_3 `HappyStk`
    	HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest)
    	 = case HappyAbsSyn -> HappyWrap45
    happyOut45 HappyAbsSyn
    happy_x_3 of { (HappyWrap45 [CmmParse CmmExpr]
    happy_var_3) ->
    	CmmParse () -> HappyAbsSyn
    happyIn20
    		 ([CmmParse CmmExpr] -> CmmParse ()
    doReturn [CmmParse CmmExpr]
    happy_var_3
    	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    forall a. a -> HappyStk a -> HappyStk a
    `HappyStk` HappyStk HappyAbsSyn
    happyRest}

    happyReduce_56 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_56 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_56 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce Int#
    4# Int#
    16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_56
    happyReduction_56 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_56 (HappyAbsSyn
    happy_x_4 `HappyStk`
    	HappyAbsSyn
    happy_x_3 `HappyStk`
    	HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest)
    	 = case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_2 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_2) ->
    	case HappyAbsSyn -> HappyWrap29
    happyOut29 HappyAbsSyn
    happy_x_3 of { (HappyWrap29 [GlobalReg]
    happy_var_3) ->
    	CmmParse () -> HappyAbsSyn
    happyIn20
    		 (CmmParse CmmExpr -> [GlobalReg] -> CmmParse ()
    doRawJump CmmParse CmmExpr
    happy_var_2 [GlobalReg]
    happy_var_3
    	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    forall a. a -> HappyStk a -> HappyStk a
    `HappyStk` HappyStk HappyAbsSyn
    happyRest}}

    happyReduce_57 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_57 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_57 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce Int#
    6# Int#
    16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_57
    happyReduction_57 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_57 (HappyAbsSyn
    happy_x_6 `HappyStk`
    	HappyAbsSyn
    happy_x_5 `HappyStk`
    	HappyAbsSyn
    happy_x_4 `HappyStk`
    	HappyAbsSyn
    happy_x_3 `HappyStk`
    	HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest)
    	 = case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_2 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_2) ->
    	case HappyAbsSyn -> HappyWrap45
    happyOut45 HappyAbsSyn
    happy_x_4 of { (HappyWrap45 [CmmParse CmmExpr]
    happy_var_4) ->
    	CmmParse () -> HappyAbsSyn
    happyIn20
    		 (CmmParse CmmExpr
    -> [CmmParse CmmExpr] -> [CmmParse CmmExpr] -> CmmParse ()
    doJumpWithStack CmmParse CmmExpr
    happy_var_2 [] [CmmParse CmmExpr]
    happy_var_4
    	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    forall a. a -> HappyStk a -> HappyStk a
    `HappyStk` HappyStk HappyAbsSyn
    happyRest}}

    happyReduce_58 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_58 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_58 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce Int#
    9# Int#
    16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_58
    happyReduction_58 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_58 (HappyAbsSyn
    happy_x_9 `HappyStk`
    	HappyAbsSyn
    happy_x_8 `HappyStk`
    	HappyAbsSyn
    happy_x_7 `HappyStk`
    	HappyAbsSyn
    happy_x_6 `HappyStk`
    	HappyAbsSyn
    happy_x_5 `HappyStk`
    	HappyAbsSyn
    happy_x_4 `HappyStk`
    	HappyAbsSyn
    happy_x_3 `HappyStk`
    	HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest)
    	 = case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_2 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_2) ->
    	case HappyAbsSyn -> HappyWrap45
    happyOut45 HappyAbsSyn
    happy_x_4 of { (HappyWrap45 [CmmParse CmmExpr]
    happy_var_4) ->
    	case HappyAbsSyn -> HappyWrap45
    happyOut45 HappyAbsSyn
    happy_x_7 of { (HappyWrap45 [CmmParse CmmExpr]
    happy_var_7) ->
    	CmmParse () -> HappyAbsSyn
    happyIn20
    		 (CmmParse CmmExpr
    -> [CmmParse CmmExpr] -> [CmmParse CmmExpr] -> CmmParse ()
    doJumpWithStack CmmParse CmmExpr
    happy_var_2 [CmmParse CmmExpr]
    happy_var_4 [CmmParse CmmExpr]
    happy_var_7
    	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    forall a. a -> HappyStk a -> HappyStk a
    `HappyStk` HappyStk HappyAbsSyn
    happyRest}}}

    happyReduce_59 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_59 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_59 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce Int#
    6# Int#
    16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_59
    happyReduction_59 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_59 (HappyAbsSyn
    happy_x_6 `HappyStk`
    	HappyAbsSyn
    happy_x_5 `HappyStk`
    	HappyAbsSyn
    happy_x_4 `HappyStk`
    	HappyAbsSyn
    happy_x_3 `HappyStk`
    	HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest)
    	 = case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_2 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_2) ->
    	case HappyAbsSyn -> HappyWrap45
    happyOut45 HappyAbsSyn
    happy_x_4 of { (HappyWrap45 [CmmParse CmmExpr]
    happy_var_4) ->
    	CmmParse () -> HappyAbsSyn
    happyIn20
    		 (CmmParse CmmExpr
    -> [CmmParse LocalReg] -> [CmmParse CmmExpr] -> CmmParse ()
    doCall CmmParse CmmExpr
    happy_var_2 [] [CmmParse CmmExpr]
    happy_var_4
    	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    forall a. a -> HappyStk a -> HappyStk a
    `HappyStk` HappyStk HappyAbsSyn
    happyRest}}

    happyReduce_60 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_60 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_60 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce Int#
    10# Int#
    16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_60
    happyReduction_60 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_60 (HappyAbsSyn
    happy_x_10 `HappyStk`
    	HappyAbsSyn
    happy_x_9 `HappyStk`
    	HappyAbsSyn
    happy_x_8 `HappyStk`
    	HappyAbsSyn
    happy_x_7 `HappyStk`
    	HappyAbsSyn
    happy_x_6 `HappyStk`
    	HappyAbsSyn
    happy_x_5 `HappyStk`
    	HappyAbsSyn
    happy_x_4 `HappyStk`
    	HappyAbsSyn
    happy_x_3 `HappyStk`
    	HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest)
    	 = case HappyAbsSyn -> HappyWrap55
    happyOut55 HappyAbsSyn
    happy_x_2 of { (HappyWrap55 [CmmParse LocalReg]
    happy_var_2) ->
    	case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_6 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_6) ->
    	case HappyAbsSyn -> HappyWrap45
    happyOut45 HappyAbsSyn
    happy_x_8 of { (HappyWrap45 [CmmParse CmmExpr]
    happy_var_8) ->
    	CmmParse () -> HappyAbsSyn
    happyIn20
    		 (CmmParse CmmExpr
    -> [CmmParse LocalReg] -> [CmmParse CmmExpr] -> CmmParse ()
    doCall CmmParse CmmExpr
    happy_var_6 [CmmParse LocalReg]
    happy_var_2 [CmmParse CmmExpr]
    happy_var_8
    	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    forall a. a -> HappyStk a -> HappyStk a
    `HappyStk` HappyStk HappyAbsSyn
    happyRest}}}

    happyReduce_61 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_61 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_61 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce Int#
    5# Int#
    16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_61
    happyReduction_61 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_61 (HappyAbsSyn
    happy_x_5 `HappyStk`
    	HappyAbsSyn
    happy_x_4 `HappyStk`
    	HappyAbsSyn
    happy_x_3 `HappyStk`
    	HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest)
    	 = case HappyAbsSyn -> HappyWrap26
    happyOut26 HappyAbsSyn
    happy_x_2 of { (HappyWrap26 CmmParse BoolExpr
    happy_var_2) ->
    	case HappyAbsSyn -> HappyWrap38
    happyOut38 HappyAbsSyn
    happy_x_3 of { (HappyWrap38 Maybe Bool
    happy_var_3) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_5 of { (L SrcSpan
    _ (CmmT_Name      FastString
    happy_var_5)) ->
    	CmmParse () -> HappyAbsSyn
    happyIn20
    		 (do l <- FastString -> CmmParse BlockId
    lookupLabel FastString
    happy_var_5; cmmRawIf happy_var_2 l happy_var_3
    	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    forall a. a -> HappyStk a -> HappyStk a
    `HappyStk` HappyStk HappyAbsSyn
    happyRest}}}

    happyReduce_62 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_62 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_62 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce Int#
    7# Int#
    16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_62
    happyReduction_62 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_62 (HappyAbsSyn
    happy_x_7 `HappyStk`
    	HappyAbsSyn
    happy_x_6 `HappyStk`
    	HappyAbsSyn
    happy_x_5 `HappyStk`
    	HappyAbsSyn
    happy_x_4 `HappyStk`
    	HappyAbsSyn
    happy_x_3 `HappyStk`
    	HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest)
    	 = case HappyAbsSyn -> HappyWrap26
    happyOut26 HappyAbsSyn
    happy_x_2 of { (HappyWrap26 CmmParse BoolExpr
    happy_var_2) ->
    	case HappyAbsSyn -> HappyWrap38
    happyOut38 HappyAbsSyn
    happy_x_3 of { (HappyWrap38 Maybe Bool
    happy_var_3) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_4 of { Located CmmToken
    happy_var_4 ->
    	case HappyAbsSyn -> HappyWrap15
    happyOut15 HappyAbsSyn
    happy_x_5 of { (HappyWrap15 CmmParse ()
    happy_var_5) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_6 of { Located CmmToken
    happy_var_6 ->
    	case HappyAbsSyn -> HappyWrap37
    happyOut37 HappyAbsSyn
    happy_x_7 of { (HappyWrap37 CmmParse ()
    happy_var_7) ->
    	CmmParse () -> HappyAbsSyn
    happyIn20
    		 (CmmParse BoolExpr
    -> CmmParse () -> CmmParse () -> Maybe Bool -> CmmParse ()
    forall {a} {a}.
    CmmParse BoolExpr
    -> CmmParse a -> CmmParse a -> Maybe Bool -> CmmParse ()
    cmmIfThenElse CmmParse BoolExpr
    happy_var_2 (Located CmmToken -> Located CmmToken -> CmmParse () -> CmmParse ()
    forall a b c. Located a -> Located b -> CmmParse c -> CmmParse c
    withSourceNote Located CmmToken
    happy_var_4 Located CmmToken
    happy_var_6 CmmParse ()
    happy_var_5) CmmParse ()
    happy_var_7 Maybe Bool
    happy_var_3
    	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    forall a. a -> HappyStk a -> HappyStk a
    `HappyStk` HappyStk HappyAbsSyn
    happyRest}}}}}}

    happyReduce_63 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_63 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_63 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce Int#
    5# Int#
    16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_63
    happyReduction_63 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_63 (HappyAbsSyn
    happy_x_5 `HappyStk`
    	HappyAbsSyn
    happy_x_4 `HappyStk`
    	HappyAbsSyn
    happy_x_3 `HappyStk`
    	HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest)
    	 = case HappyAbsSyn -> HappyWrap45
    happyOut45 HappyAbsSyn
    happy_x_3 of { (HappyWrap45 [CmmParse CmmExpr]
    happy_var_3) ->
    	case HappyAbsSyn -> HappyWrap13
    happyOut13 HappyAbsSyn
    happy_x_5 of { (HappyWrap13 CmmParse ()
    happy_var_5) ->
    	CmmParse () -> HappyAbsSyn
    happyIn20
    		 ([CmmParse CmmExpr] -> CmmParse () -> CmmParse ()
    pushStackFrame [CmmParse CmmExpr]
    happy_var_3 CmmParse ()
    happy_var_5
    	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    forall a. a -> HappyStk a -> HappyStk a
    `HappyStk` HappyStk HappyAbsSyn
    happyRest}}

    happyReduce_64 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_64 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_64 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce Int#
    5# Int#
    16# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_64
    happyReduction_64 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_64 (HappyAbsSyn
    happy_x_5 `HappyStk`
    	HappyAbsSyn
    happy_x_4 `HappyStk`
    	HappyAbsSyn
    happy_x_3 `HappyStk`
    	HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest)
    	 = case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_2 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_2) ->
    	case HappyAbsSyn -> HappyWrap52
    happyOut52 HappyAbsSyn
    happy_x_4 of { (HappyWrap52 CmmParse CmmReg
    happy_var_4) ->
    	case HappyAbsSyn -> HappyWrap13
    happyOut13 HappyAbsSyn
    happy_x_5 of { (HappyWrap13 CmmParse ()
    happy_var_5) ->
    	CmmParse () -> HappyAbsSyn
    happyIn20
    		 (CmmParse CmmExpr -> CmmParse CmmReg -> CmmParse () -> CmmParse ()
    reserveStackFrame CmmParse CmmExpr
    happy_var_2 CmmParse CmmReg
    happy_var_4 CmmParse ()
    happy_var_5
    	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    forall a. a -> HappyStk a -> HappyStk a
    `HappyStk` HappyStk HappyAbsSyn
    happyRest}}}

    happyReduce_65 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_65 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_65 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_3  Int#
    16# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p} {p}. p -> HappyAbsSyn -> p -> HappyAbsSyn
    happyReduction_65
    happyReduction_65 :: p -> HappyAbsSyn -> p -> HappyAbsSyn
    happyReduction_65 p
    happy_x_3
    	HappyAbsSyn
    happy_x_2
    	p
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap21
    happyOut21 HappyAbsSyn
    happy_x_2 of { (HappyWrap21 CmmParse [(GlobalReg, Maybe CmmExpr)]
    happy_var_2) ->
    	CmmParse () -> HappyAbsSyn
    happyIn20
    		 (CmmParse [(GlobalReg, Maybe CmmExpr)]
    happy_var_2 CmmParse [(GlobalReg, Maybe CmmExpr)]
    -> ([(GlobalReg, Maybe CmmExpr)] -> CmmParse ()) -> CmmParse ()
    forall a b. CmmParse a -> (a -> CmmParse b) -> CmmParse b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FCode () -> CmmParse ()
    forall a. FCode a -> CmmParse a
    code (FCode () -> CmmParse ())
    -> ([(GlobalReg, Maybe CmmExpr)] -> FCode ())
    -> [(GlobalReg, Maybe CmmExpr)]
    -> CmmParse ()
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . [(GlobalReg, Maybe CmmExpr)] -> FCode ()
    emitUnwind
    	)}

    happyReduce_66 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_66 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_66 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce Int#
    5# Int#
    17# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_66
    happyReduction_66 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_66 (HappyAbsSyn
    happy_x_5 `HappyStk`
    	HappyAbsSyn
    happy_x_4 `HappyStk`
    	HappyAbsSyn
    happy_x_3 `HappyStk`
    	HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest)
    	 = case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_1 of { (L SrcSpan
    _ (CmmT_GlobalReg GlobalRegUse
    happy_var_1)) ->
    	case HappyAbsSyn -> HappyWrap23
    happyOut23 HappyAbsSyn
    happy_x_3 of { (HappyWrap23 CmmParse (Maybe CmmExpr)
    happy_var_3) ->
    	case HappyAbsSyn -> HappyWrap21
    happyOut21 HappyAbsSyn
    happy_x_5 of { (HappyWrap21 CmmParse [(GlobalReg, Maybe CmmExpr)]
    happy_var_5) ->
    	CmmParse [(GlobalReg, Maybe CmmExpr)] -> HappyAbsSyn
    happyIn21
    		 (do e <- CmmParse (Maybe CmmExpr)
    happy_var_3; rest <- happy_var_5; return ((globalRegUseGlobalReg happy_var_1, e) : rest)
    	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    forall a. a -> HappyStk a -> HappyStk a
    `HappyStk` HappyStk HappyAbsSyn
    happyRest}}}

    happyReduce_67 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_67 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_67 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_3  Int#
    17# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_67
    happyReduction_67 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_67 HappyAbsSyn
    happy_x_3
    	p
    happy_x_2
    	HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_1 of { (L SrcSpan
    _ (CmmT_GlobalReg GlobalRegUse
    happy_var_1)) ->
    	case HappyAbsSyn -> HappyWrap23
    happyOut23 HappyAbsSyn
    happy_x_3 of { (HappyWrap23 CmmParse (Maybe CmmExpr)
    happy_var_3) ->
    	CmmParse [(GlobalReg, Maybe CmmExpr)] -> HappyAbsSyn
    happyIn21
    		 (do e <- CmmParse (Maybe CmmExpr)
    happy_var_3; return [(globalRegUseGlobalReg happy_var_1, e)]
    	)}}

    happyReduce_68 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_68 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_68 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    18# HappyAbsSyn -> HappyAbsSyn
    forall {p}. p -> HappyAbsSyn
    happyReduction_68
    happyReduction_68 :: p -> HappyAbsSyn
    happyReduction_68 p
    happy_x_1
    	 =  CmmParse MemoryOrdering -> HappyAbsSyn
    happyIn22
    		 (do MemoryOrdering -> CmmParse MemoryOrdering
    forall a. a -> CmmParse a
    forall (m :: * -> *) a. Monad m => a -> m a
    return MemoryOrdering
    MemOrderRelaxed
    	)

    happyReduce_69 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_69 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_69 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    18# HappyAbsSyn -> HappyAbsSyn
    forall {p}. p -> HappyAbsSyn
    happyReduction_69
    happyReduction_69 :: p -> HappyAbsSyn
    happyReduction_69 p
    happy_x_1
    	 =  CmmParse MemoryOrdering -> HappyAbsSyn
    happyIn22
    		 (do MemoryOrdering -> CmmParse MemoryOrdering
    forall a. a -> CmmParse a
    forall (m :: * -> *) a. Monad m => a -> m a
    return MemoryOrdering
    MemOrderRelease
    	)

    happyReduce_70 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_70 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_70 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    18# HappyAbsSyn -> HappyAbsSyn
    forall {p}. p -> HappyAbsSyn
    happyReduction_70
    happyReduction_70 :: p -> HappyAbsSyn
    happyReduction_70 p
    happy_x_1
    	 =  CmmParse MemoryOrdering -> HappyAbsSyn
    happyIn22
    		 (do MemoryOrdering -> CmmParse MemoryOrdering
    forall a. a -> CmmParse a
    forall (m :: * -> *) a. Monad m => a -> m a
    return MemoryOrdering
    MemOrderAcquire
    	)

    happyReduce_71 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_71 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_71 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    18# HappyAbsSyn -> HappyAbsSyn
    forall {p}. p -> HappyAbsSyn
    happyReduction_71
    happyReduction_71 :: p -> HappyAbsSyn
    happyReduction_71 p
    happy_x_1
    	 =  CmmParse MemoryOrdering -> HappyAbsSyn
    happyIn22
    		 (do MemoryOrdering -> CmmParse MemoryOrdering
    forall a. a -> CmmParse a
    forall (m :: * -> *) a. Monad m => a -> m a
    return MemoryOrdering
    MemOrderSeqCst
    	)

    happyReduce_72 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_72 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_72 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    19# HappyAbsSyn -> HappyAbsSyn
    forall {p}. p -> HappyAbsSyn
    happyReduction_72
    happyReduction_72 :: p -> HappyAbsSyn
    happyReduction_72 p
    happy_x_1
    	 =  CmmParse (Maybe CmmExpr) -> HappyAbsSyn
    happyIn23
    		 (do Maybe CmmExpr -> CmmParse (Maybe CmmExpr)
    forall a. a -> CmmParse a
    forall (m :: * -> *) a. Monad m => a -> m a
    return Maybe CmmExpr
    forall a. Maybe a
    Nothing
    	)

    happyReduce_73 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_73 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_73 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    19# HappyAbsSyn -> HappyAbsSyn
    happyReduction_73
    happyReduction_73 :: HappyAbsSyn -> HappyAbsSyn
    happyReduction_73 HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_1) ->
    	CmmParse (Maybe CmmExpr) -> HappyAbsSyn
    happyIn23
    		 (do e <- CmmParse CmmExpr
    happy_var_1; return (Just e)
    	)}

    happyReduce_74 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_74 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_74 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    20# HappyAbsSyn -> HappyAbsSyn
    happyReduction_74
    happyReduction_74 :: HappyAbsSyn -> HappyAbsSyn
    happyReduction_74 HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_1 of { (L SrcSpan
    _ (CmmT_Name      FastString
    happy_var_1)) ->
    	CmmParse CmmExpr -> HappyAbsSyn
    happyIn24
    		 (CmmExpr -> CmmParse CmmExpr
    forall a. a -> CmmParse a
    forall (m :: * -> *) a. Monad m => a -> m a
    return (CmmLit -> CmmExpr
    CmmLit (CLabel -> CmmLit
    CmmLabel (FastString
    -> Maybe ByteOff -> ForeignLabelSource -> FunctionOrData -> CLabel
    mkForeignLabel FastString
    happy_var_1 Maybe ByteOff
    forall a. Maybe a
    Nothing ForeignLabelSource
    ForeignLabelInThisPackage FunctionOrData
    IsFunction)))
    	)}

    happyReduce_75 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_75 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_75 = Int#
    -> HappyAbsSyn
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_0  Int#
    21# HappyAbsSyn
    happyReduction_75
    happyReduction_75 :: HappyAbsSyn
    happyReduction_75  =  CmmReturnInfo -> HappyAbsSyn
    happyIn25
    		 (CmmReturnInfo
    CmmMayReturn
    	)

    happyReduce_76 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_76 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_76 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_2  Int#
    21# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p} {p}. p -> p -> HappyAbsSyn
    happyReduction_76
    happyReduction_76 :: p -> p -> HappyAbsSyn
    happyReduction_76 p
    happy_x_2
    	p
    happy_x_1
    	 =  CmmReturnInfo -> HappyAbsSyn
    happyIn25
    		 (CmmReturnInfo
    CmmNeverReturns
    	)

    happyReduce_77 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_77 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_77 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    22# HappyAbsSyn -> HappyAbsSyn
    happyReduction_77
    happyReduction_77 :: HappyAbsSyn -> HappyAbsSyn
    happyReduction_77 HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap27
    happyOut27 HappyAbsSyn
    happy_x_1 of { (HappyWrap27 CmmParse BoolExpr
    happy_var_1) ->
    	CmmParse BoolExpr -> HappyAbsSyn
    happyIn26
    		 (CmmParse BoolExpr
    happy_var_1
    	)}

    happyReduce_78 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_78 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_78 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    22# HappyAbsSyn -> HappyAbsSyn
    happyReduction_78
    happyReduction_78 :: HappyAbsSyn -> HappyAbsSyn
    happyReduction_78 HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_1) ->
    	CmmParse BoolExpr -> HappyAbsSyn
    happyIn26
    		 (do e <- CmmParse CmmExpr
    happy_var_1; return (BoolTest e)
    	)}

    happyReduce_79 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_79 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_79 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_3  Int#
    23# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_79
    happyReduction_79 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_79 HappyAbsSyn
    happy_x_3
    	p
    happy_x_2
    	HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap26
    happyOut26 HappyAbsSyn
    happy_x_1 of { (HappyWrap26 CmmParse BoolExpr
    happy_var_1) ->
    	case HappyAbsSyn -> HappyWrap26
    happyOut26 HappyAbsSyn
    happy_x_3 of { (HappyWrap26 CmmParse BoolExpr
    happy_var_3) ->
    	CmmParse BoolExpr -> HappyAbsSyn
    happyIn27
    		 (do e1 <- CmmParse BoolExpr
    happy_var_1; e2 <- happy_var_3;
                                              return (BoolAnd e1 e2)
    	)}}

    happyReduce_80 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_80 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_80 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_3  Int#
    23# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_80
    happyReduction_80 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_80 HappyAbsSyn
    happy_x_3
    	p
    happy_x_2
    	HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap26
    happyOut26 HappyAbsSyn
    happy_x_1 of { (HappyWrap26 CmmParse BoolExpr
    happy_var_1) ->
    	case HappyAbsSyn -> HappyWrap26
    happyOut26 HappyAbsSyn
    happy_x_3 of { (HappyWrap26 CmmParse BoolExpr
    happy_var_3) ->
    	CmmParse BoolExpr -> HappyAbsSyn
    happyIn27
    		 (do e1 <- CmmParse BoolExpr
    happy_var_1; e2 <- happy_var_3;
                                              return (BoolOr e1 e2)
    	)}}

    happyReduce_81 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_81 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_81 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_2  Int#
    23# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p}. HappyAbsSyn -> p -> HappyAbsSyn
    happyReduction_81
    happyReduction_81 :: HappyAbsSyn -> p -> HappyAbsSyn
    happyReduction_81 HappyAbsSyn
    happy_x_2
    	p
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap26
    happyOut26 HappyAbsSyn
    happy_x_2 of { (HappyWrap26 CmmParse BoolExpr
    happy_var_2) ->
    	CmmParse BoolExpr -> HappyAbsSyn
    happyIn27
    		 (do e <- CmmParse BoolExpr
    happy_var_2; return (BoolNot e)
    	)}

    happyReduce_82 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_82 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_82 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_3  Int#
    23# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p} {p}. p -> HappyAbsSyn -> p -> HappyAbsSyn
    happyReduction_82
    happyReduction_82 :: p -> HappyAbsSyn -> p -> HappyAbsSyn
    happyReduction_82 p
    happy_x_3
    	HappyAbsSyn
    happy_x_2
    	p
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap27
    happyOut27 HappyAbsSyn
    happy_x_2 of { (HappyWrap27 CmmParse BoolExpr
    happy_var_2) ->
    	CmmParse BoolExpr -> HappyAbsSyn
    happyIn27
    		 (CmmParse BoolExpr
    happy_var_2
    	)}

    happyReduce_83 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_83 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_83 = Int#
    -> HappyAbsSyn
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_0  Int#
    24# HappyAbsSyn
    happyReduction_83
    happyReduction_83 :: HappyAbsSyn
    happyReduction_83  =  Safety -> HappyAbsSyn
    happyIn28
    		 (Safety
    PlayRisky
    	)

    happyReduce_84 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_84 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_84 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyMonadReduce Int#
    1# Int#
    24# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
    forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
    happyReduction_84
    happyReduction_84 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
    happyReduction_84 (HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest) p
    tk
    	 = PD Safety -> (Safety -> PD HappyAbsSyn) -> PD HappyAbsSyn
    forall a b. PD a -> (a -> PD b) -> PD b
    happyThen ((case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_1 of { (L SrcSpan
    _ (CmmT_String    String
    happy_var_1)) ->
    	( String -> PD Safety
    parseSafety String
    happy_var_1)})
    	) (\Safety
    r -> HappyAbsSyn -> PD HappyAbsSyn
    forall a. a -> PD a
    happyReturn (Safety -> HappyAbsSyn
    happyIn28 Safety
    r))

    happyReduce_85 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_85 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_85 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_2  Int#
    25# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p} {p}. p -> p -> HappyAbsSyn
    happyReduction_85
    happyReduction_85 :: p -> p -> HappyAbsSyn
    happyReduction_85 p
    happy_x_2
    	p
    happy_x_1
    	 =  [GlobalReg] -> HappyAbsSyn
    happyIn29
    		 ([]
    	)

    happyReduce_86 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_86 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_86 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyMonadReduce Int#
    3# Int#
    25# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
    forall {a} {p}. HappyStk a -> p -> PD HappyAbsSyn
    happyReduction_86
    happyReduction_86 :: HappyStk a -> p -> PD HappyAbsSyn
    happyReduction_86 (a
    happy_x_3 `HappyStk`
    	a
    happy_x_2 `HappyStk`
    	a
    happy_x_1 `HappyStk`
    	HappyStk a
    happyRest) p
    tk
    	 = PD [GlobalReg] -> ([GlobalReg] -> PD HappyAbsSyn) -> PD HappyAbsSyn
    forall a b. PD a -> (a -> PD b) -> PD b
    happyThen ((( do platform <- PD Platform
    PD.getPlatform
                                             ; return (realArgRegsCover platform)))
    	) (\[GlobalReg]
    r -> HappyAbsSyn -> PD HappyAbsSyn
    forall a. a -> PD a
    happyReturn ([GlobalReg] -> HappyAbsSyn
    happyIn29 [GlobalReg]
    r))

    happyReduce_87 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_87 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_87 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_3  Int#
    25# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p} {p}. p -> HappyAbsSyn -> p -> HappyAbsSyn
    happyReduction_87
    happyReduction_87 :: p -> HappyAbsSyn -> p -> HappyAbsSyn
    happyReduction_87 p
    happy_x_3
    	HappyAbsSyn
    happy_x_2
    	p
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap30
    happyOut30 HappyAbsSyn
    happy_x_2 of { (HappyWrap30 [GlobalRegUse]
    happy_var_2) ->
    	[GlobalReg] -> HappyAbsSyn
    happyIn29
    		 ((GlobalRegUse -> GlobalReg) -> [GlobalRegUse] -> [GlobalReg]
    forall a b. (a -> b) -> [a] -> [b]
    map GlobalRegUse -> GlobalReg
    globalRegUseGlobalReg [GlobalRegUse]
    happy_var_2
    	)}

    happyReduce_88 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_88 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_88 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    26# HappyAbsSyn -> HappyAbsSyn
    happyReduction_88
    happyReduction_88 :: HappyAbsSyn -> HappyAbsSyn
    happyReduction_88 HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_1 of { (L SrcSpan
    _ (CmmT_GlobalReg GlobalRegUse
    happy_var_1)) ->
    	[GlobalRegUse] -> HappyAbsSyn
    happyIn30
    		 ([GlobalRegUse
    happy_var_1]
    	)}

    happyReduce_89 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_89 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_89 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_3  Int#
    26# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_89
    happyReduction_89 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_89 HappyAbsSyn
    happy_x_3
    	p
    happy_x_2
    	HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_1 of { (L SrcSpan
    _ (CmmT_GlobalReg GlobalRegUse
    happy_var_1)) ->
    	case HappyAbsSyn -> HappyWrap30
    happyOut30 HappyAbsSyn
    happy_x_3 of { (HappyWrap30 [GlobalRegUse]
    happy_var_3) ->
    	[GlobalRegUse] -> HappyAbsSyn
    happyIn30
    		 (GlobalRegUse
    happy_var_1 GlobalRegUse -> [GlobalRegUse] -> [GlobalRegUse]
    forall a. a -> [a] -> [a]
    : [GlobalRegUse]
    happy_var_3
    	)}}

    happyReduce_90 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_90 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_90 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce Int#
    5# Int#
    27# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_90
    happyReduction_90 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_90 (HappyAbsSyn
    happy_x_5 `HappyStk`
    	HappyAbsSyn
    happy_x_4 `HappyStk`
    	HappyAbsSyn
    happy_x_3 `HappyStk`
    	HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest)
    	 = case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_2 of { (L SrcSpan
    _ (CmmT_Int       Integer
    happy_var_2)) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_4 of { (L SrcSpan
    _ (CmmT_Int       Integer
    happy_var_4)) ->
    	Maybe (Integer, Integer) -> HappyAbsSyn
    happyIn31
    		 ((Integer, Integer) -> Maybe (Integer, Integer)
    forall a. a -> Maybe a
    Just (Integer
    happy_var_2, Integer
    happy_var_4)
    	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    forall a. a -> HappyStk a -> HappyStk a
    `HappyStk` HappyStk HappyAbsSyn
    happyRest}}

    happyReduce_91 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_91 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_91 = Int#
    -> HappyAbsSyn
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_0  Int#
    27# HappyAbsSyn
    happyReduction_91
    happyReduction_91 :: HappyAbsSyn
    happyReduction_91  =  Maybe (Integer, Integer) -> HappyAbsSyn
    happyIn31
    		 (Maybe (Integer, Integer)
    forall a. Maybe a
    Nothing
    	)

    happyReduce_92 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_92 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_92 = Int#
    -> HappyAbsSyn
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_0  Int#
    28# HappyAbsSyn
    happyReduction_92
    happyReduction_92 :: HappyAbsSyn
    happyReduction_92  =  [CmmParse ([Integer], Either BlockId (CmmParse ()))] -> HappyAbsSyn
    happyIn32
    		 ([]
    	)

    happyReduce_93 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_93 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_93 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_2  Int#
    28# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_93
    happyReduction_93 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_93 HappyAbsSyn
    happy_x_2
    	HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap33
    happyOut33 HappyAbsSyn
    happy_x_1 of { (HappyWrap33 CmmParse ([Integer], Either BlockId (CmmParse ()))
    happy_var_1) ->
    	case HappyAbsSyn -> HappyWrap32
    happyOut32 HappyAbsSyn
    happy_x_2 of { (HappyWrap32 [CmmParse ([Integer], Either BlockId (CmmParse ()))]
    happy_var_2) ->
    	[CmmParse ([Integer], Either BlockId (CmmParse ()))] -> HappyAbsSyn
    happyIn32
    		 (CmmParse ([Integer], Either BlockId (CmmParse ()))
    happy_var_1 CmmParse ([Integer], Either BlockId (CmmParse ()))
    -> [CmmParse ([Integer], Either BlockId (CmmParse ()))]
    -> [CmmParse ([Integer], Either BlockId (CmmParse ()))]
    forall a. a -> [a] -> [a]
    : [CmmParse ([Integer], Either BlockId (CmmParse ()))]
    happy_var_2
    	)}}

    happyReduce_94 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_94 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_94 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce Int#
    4# Int#
    29# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_94
    happyReduction_94 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_94 (HappyAbsSyn
    happy_x_4 `HappyStk`
    	HappyAbsSyn
    happy_x_3 `HappyStk`
    	HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest)
    	 = case HappyAbsSyn -> HappyWrap35
    happyOut35 HappyAbsSyn
    happy_x_2 of { (HappyWrap35 [Integer]
    happy_var_2) ->
    	case HappyAbsSyn -> HappyWrap34
    happyOut34 HappyAbsSyn
    happy_x_4 of { (HappyWrap34 CmmParse (Either BlockId (CmmParse ()))
    happy_var_4) ->
    	CmmParse ([Integer], Either BlockId (CmmParse ())) -> HappyAbsSyn
    happyIn33
    		 (do b <- CmmParse (Either BlockId (CmmParse ()))
    happy_var_4; return (happy_var_2, b)
    	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    forall a. a -> HappyStk a -> HappyStk a
    `HappyStk` HappyStk HappyAbsSyn
    happyRest}}

    happyReduce_95 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_95 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_95 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_3  Int#
    30# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_95
    happyReduction_95 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_95 HappyAbsSyn
    happy_x_3
    	HappyAbsSyn
    happy_x_2
    	HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_1 of { Located CmmToken
    happy_var_1 ->
    	case HappyAbsSyn -> HappyWrap15
    happyOut15 HappyAbsSyn
    happy_x_2 of { (HappyWrap15 CmmParse ()
    happy_var_2) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_3 of { Located CmmToken
    happy_var_3 ->
    	CmmParse (Either BlockId (CmmParse ())) -> HappyAbsSyn
    happyIn34
    		 (Either BlockId (CmmParse ())
    -> CmmParse (Either BlockId (CmmParse ()))
    forall a. a -> CmmParse a
    forall (m :: * -> *) a. Monad m => a -> m a
    return (CmmParse () -> Either BlockId (CmmParse ())
    forall a b. b -> Either a b
    Right (Located CmmToken -> Located CmmToken -> CmmParse () -> CmmParse ()
    forall a b c. Located a -> Located b -> CmmParse c -> CmmParse c
    withSourceNote Located CmmToken
    happy_var_1 Located CmmToken
    happy_var_3 CmmParse ()
    happy_var_2))
    	)}}}

    happyReduce_96 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_96 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_96 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_3  Int#
    30# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p} {p}. p -> HappyAbsSyn -> p -> HappyAbsSyn
    happyReduction_96
    happyReduction_96 :: p -> HappyAbsSyn -> p -> HappyAbsSyn
    happyReduction_96 p
    happy_x_3
    	HappyAbsSyn
    happy_x_2
    	p
    happy_x_1
    	 =  case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_2 of { (L SrcSpan
    _ (CmmT_Name      FastString
    happy_var_2)) ->
    	CmmParse (Either BlockId (CmmParse ())) -> HappyAbsSyn
    happyIn34
    		 (do l <- FastString -> CmmParse BlockId
    lookupLabel FastString
    happy_var_2; return (Left l)
    	)}

    happyReduce_97 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_97 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_97 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    31# HappyAbsSyn -> HappyAbsSyn
    happyReduction_97
    happyReduction_97 :: HappyAbsSyn -> HappyAbsSyn
    happyReduction_97 HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_1 of { (L SrcSpan
    _ (CmmT_Int       Integer
    happy_var_1)) ->
    	[Integer] -> HappyAbsSyn
    happyIn35
    		 ([ Integer
    happy_var_1 ]
    	)}

    happyReduce_98 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_98 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_98 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_3  Int#
    31# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_98
    happyReduction_98 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_98 HappyAbsSyn
    happy_x_3
    	p
    happy_x_2
    	HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_1 of { (L SrcSpan
    _ (CmmT_Int       Integer
    happy_var_1)) ->
    	case HappyAbsSyn -> HappyWrap35
    happyOut35 HappyAbsSyn
    happy_x_3 of { (HappyWrap35 [Integer]
    happy_var_3) ->
    	[Integer] -> HappyAbsSyn
    happyIn35
    		 (Integer
    happy_var_1 Integer -> [Integer] -> [Integer]
    forall a. a -> [a] -> [a]
    : [Integer]
    happy_var_3
    	)}}

    happyReduce_99 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_99 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_99 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce Int#
    5# Int#
    32# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_99
    happyReduction_99 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_99 (HappyAbsSyn
    happy_x_5 `HappyStk`
    	HappyAbsSyn
    happy_x_4 `HappyStk`
    	HappyAbsSyn
    happy_x_3 `HappyStk`
    	HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest)
    	 = case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_3 of { Located CmmToken
    happy_var_3 ->
    	case HappyAbsSyn -> HappyWrap15
    happyOut15 HappyAbsSyn
    happy_x_4 of { (HappyWrap15 CmmParse ()
    happy_var_4) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_5 of { Located CmmToken
    happy_var_5 ->
    	Maybe (CmmParse ()) -> HappyAbsSyn
    happyIn36
    		 (CmmParse () -> Maybe (CmmParse ())
    forall a. a -> Maybe a
    Just (Located CmmToken -> Located CmmToken -> CmmParse () -> CmmParse ()
    forall a b c. Located a -> Located b -> CmmParse c -> CmmParse c
    withSourceNote Located CmmToken
    happy_var_3 Located CmmToken
    happy_var_5 CmmParse ()
    happy_var_4)
    	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    forall a. a -> HappyStk a -> HappyStk a
    `HappyStk` HappyStk HappyAbsSyn
    happyRest}}}

    happyReduce_100 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_100 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_100 = Int#
    -> HappyAbsSyn
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_0  Int#
    32# HappyAbsSyn
    happyReduction_100
    happyReduction_100 :: HappyAbsSyn
    happyReduction_100  =  Maybe (CmmParse ()) -> HappyAbsSyn
    happyIn36
    		 (Maybe (CmmParse ())
    forall a. Maybe a
    Nothing
    	)

    happyReduce_101 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_101 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_101 = Int#
    -> HappyAbsSyn
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_0  Int#
    33# HappyAbsSyn
    happyReduction_101
    happyReduction_101 :: HappyAbsSyn
    happyReduction_101  =  CmmParse () -> HappyAbsSyn
    happyIn37
    		 (() -> CmmParse ()
    forall a. a -> CmmParse a
    forall (m :: * -> *) a. Monad m => a -> m a
    return ()
    	)

    happyReduce_102 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_102 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_102 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce Int#
    4# Int#
    33# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_102
    happyReduction_102 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_102 (HappyAbsSyn
    happy_x_4 `HappyStk`
    	HappyAbsSyn
    happy_x_3 `HappyStk`
    	HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest)
    	 = case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_2 of { Located CmmToken
    happy_var_2 ->
    	case HappyAbsSyn -> HappyWrap15
    happyOut15 HappyAbsSyn
    happy_x_3 of { (HappyWrap15 CmmParse ()
    happy_var_3) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_4 of { Located CmmToken
    happy_var_4 ->
    	CmmParse () -> HappyAbsSyn
    happyIn37
    		 (Located CmmToken -> Located CmmToken -> CmmParse () -> CmmParse ()
    forall a b c. Located a -> Located b -> CmmParse c -> CmmParse c
    withSourceNote Located CmmToken
    happy_var_2 Located CmmToken
    happy_var_4 CmmParse ()
    happy_var_3
    	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    forall a. a -> HappyStk a -> HappyStk a
    `HappyStk` HappyStk HappyAbsSyn
    happyRest}}}

    happyReduce_103 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_103 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_103 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce Int#
    5# Int#
    34# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_103
    happyReduction_103 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_103 (HappyAbsSyn
    happy_x_5 `HappyStk`
    	HappyAbsSyn
    happy_x_4 `HappyStk`
    	HappyAbsSyn
    happy_x_3 `HappyStk`
    	HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest)
    	 = Maybe Bool -> HappyAbsSyn
    happyIn38
    		 (Bool -> Maybe Bool
    forall a. a -> Maybe a
    Just Bool
    True
    	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    forall a. a -> HappyStk a -> HappyStk a
    `HappyStk` HappyStk HappyAbsSyn
    happyRest

    happyReduce_104 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_104 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_104 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce Int#
    5# Int#
    34# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_104
    happyReduction_104 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_104 (HappyAbsSyn
    happy_x_5 `HappyStk`
    	HappyAbsSyn
    happy_x_4 `HappyStk`
    	HappyAbsSyn
    happy_x_3 `HappyStk`
    	HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest)
    	 = Maybe Bool -> HappyAbsSyn
    happyIn38
    		 (Bool -> Maybe Bool
    forall a. a -> Maybe a
    Just Bool
    False
    	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    forall a. a -> HappyStk a -> HappyStk a
    `HappyStk` HappyStk HappyAbsSyn
    happyRest

    happyReduce_105 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_105 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_105 = Int#
    -> HappyAbsSyn
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_0  Int#
    34# HappyAbsSyn
    happyReduction_105
    happyReduction_105 :: HappyAbsSyn
    happyReduction_105  =  Maybe Bool -> HappyAbsSyn
    happyIn38
    		 (Maybe Bool
    forall a. Maybe a
    Nothing
    	)

    happyReduce_106 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_106 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_106 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_3  Int#
    35# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_106
    happyReduction_106 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_106 HappyAbsSyn
    happy_x_3
    	p
    happy_x_2
    	HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_1) ->
    	case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_3 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_3) ->
    	CmmParse CmmExpr -> HappyAbsSyn
    happyIn39
    		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
    mkMachOp Width -> MachOp
    MO_U_Quot [CmmParse CmmExpr
    happy_var_1,CmmParse CmmExpr
    happy_var_3]
    	)}}

    happyReduce_107 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_107 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_107 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_3  Int#
    35# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_107
    happyReduction_107 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_107 HappyAbsSyn
    happy_x_3
    	p
    happy_x_2
    	HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_1) ->
    	case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_3 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_3) ->
    	CmmParse CmmExpr -> HappyAbsSyn
    happyIn39
    		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
    mkMachOp Width -> MachOp
    MO_Mul [CmmParse CmmExpr
    happy_var_1,CmmParse CmmExpr
    happy_var_3]
    	)}}

    happyReduce_108 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_108 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_108 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_3  Int#
    35# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_108
    happyReduction_108 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_108 HappyAbsSyn
    happy_x_3
    	p
    happy_x_2
    	HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_1) ->
    	case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_3 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_3) ->
    	CmmParse CmmExpr -> HappyAbsSyn
    happyIn39
    		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
    mkMachOp Width -> MachOp
    MO_U_Rem [CmmParse CmmExpr
    happy_var_1,CmmParse CmmExpr
    happy_var_3]
    	)}}

    happyReduce_109 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_109 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_109 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_3  Int#
    35# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_109
    happyReduction_109 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_109 HappyAbsSyn
    happy_x_3
    	p
    happy_x_2
    	HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_1) ->
    	case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_3 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_3) ->
    	CmmParse CmmExpr -> HappyAbsSyn
    happyIn39
    		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
    mkMachOp Width -> MachOp
    MO_Sub [CmmParse CmmExpr
    happy_var_1,CmmParse CmmExpr
    happy_var_3]
    	)}}

    happyReduce_110 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_110 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_110 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_3  Int#
    35# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_110
    happyReduction_110 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_110 HappyAbsSyn
    happy_x_3
    	p
    happy_x_2
    	HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_1) ->
    	case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_3 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_3) ->
    	CmmParse CmmExpr -> HappyAbsSyn
    happyIn39
    		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
    mkMachOp Width -> MachOp
    MO_Add [CmmParse CmmExpr
    happy_var_1,CmmParse CmmExpr
    happy_var_3]
    	)}}

    happyReduce_111 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_111 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_111 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_3  Int#
    35# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_111
    happyReduction_111 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_111 HappyAbsSyn
    happy_x_3
    	p
    happy_x_2
    	HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_1) ->
    	case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_3 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_3) ->
    	CmmParse CmmExpr -> HappyAbsSyn
    happyIn39
    		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
    mkMachOp Width -> MachOp
    MO_U_Shr [CmmParse CmmExpr
    happy_var_1,CmmParse CmmExpr
    happy_var_3]
    	)}}

    happyReduce_112 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_112 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_112 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_3  Int#
    35# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_112
    happyReduction_112 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_112 HappyAbsSyn
    happy_x_3
    	p
    happy_x_2
    	HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_1) ->
    	case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_3 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_3) ->
    	CmmParse CmmExpr -> HappyAbsSyn
    happyIn39
    		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
    mkMachOp Width -> MachOp
    MO_Shl [CmmParse CmmExpr
    happy_var_1,CmmParse CmmExpr
    happy_var_3]
    	)}}

    happyReduce_113 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_113 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_113 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_3  Int#
    35# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_113
    happyReduction_113 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_113 HappyAbsSyn
    happy_x_3
    	p
    happy_x_2
    	HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_1) ->
    	case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_3 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_3) ->
    	CmmParse CmmExpr -> HappyAbsSyn
    happyIn39
    		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
    mkMachOp Width -> MachOp
    MO_And [CmmParse CmmExpr
    happy_var_1,CmmParse CmmExpr
    happy_var_3]
    	)}}

    happyReduce_114 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_114 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_114 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_3  Int#
    35# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_114
    happyReduction_114 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_114 HappyAbsSyn
    happy_x_3
    	p
    happy_x_2
    	HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_1) ->
    	case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_3 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_3) ->
    	CmmParse CmmExpr -> HappyAbsSyn
    happyIn39
    		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
    mkMachOp Width -> MachOp
    MO_Xor [CmmParse CmmExpr
    happy_var_1,CmmParse CmmExpr
    happy_var_3]
    	)}}

    happyReduce_115 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_115 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_115 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_3  Int#
    35# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_115
    happyReduction_115 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_115 HappyAbsSyn
    happy_x_3
    	p
    happy_x_2
    	HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_1) ->
    	case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_3 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_3) ->
    	CmmParse CmmExpr -> HappyAbsSyn
    happyIn39
    		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
    mkMachOp Width -> MachOp
    MO_Or [CmmParse CmmExpr
    happy_var_1,CmmParse CmmExpr
    happy_var_3]
    	)}}

    happyReduce_116 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_116 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_116 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_3  Int#
    35# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_116
    happyReduction_116 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_116 HappyAbsSyn
    happy_x_3
    	p
    happy_x_2
    	HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_1) ->
    	case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_3 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_3) ->
    	CmmParse CmmExpr -> HappyAbsSyn
    happyIn39
    		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
    mkMachOp Width -> MachOp
    MO_U_Ge [CmmParse CmmExpr
    happy_var_1,CmmParse CmmExpr
    happy_var_3]
    	)}}

    happyReduce_117 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_117 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_117 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_3  Int#
    35# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_117
    happyReduction_117 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_117 HappyAbsSyn
    happy_x_3
    	p
    happy_x_2
    	HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_1) ->
    	case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_3 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_3) ->
    	CmmParse CmmExpr -> HappyAbsSyn
    happyIn39
    		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
    mkMachOp Width -> MachOp
    MO_U_Gt [CmmParse CmmExpr
    happy_var_1,CmmParse CmmExpr
    happy_var_3]
    	)}}

    happyReduce_118 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_118 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_118 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_3  Int#
    35# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_118
    happyReduction_118 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_118 HappyAbsSyn
    happy_x_3
    	p
    happy_x_2
    	HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_1) ->
    	case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_3 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_3) ->
    	CmmParse CmmExpr -> HappyAbsSyn
    happyIn39
    		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
    mkMachOp Width -> MachOp
    MO_U_Le [CmmParse CmmExpr
    happy_var_1,CmmParse CmmExpr
    happy_var_3]
    	)}}

    happyReduce_119 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_119 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_119 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_3  Int#
    35# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_119
    happyReduction_119 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_119 HappyAbsSyn
    happy_x_3
    	p
    happy_x_2
    	HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_1) ->
    	case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_3 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_3) ->
    	CmmParse CmmExpr -> HappyAbsSyn
    happyIn39
    		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
    mkMachOp Width -> MachOp
    MO_U_Lt [CmmParse CmmExpr
    happy_var_1,CmmParse CmmExpr
    happy_var_3]
    	)}}

    happyReduce_120 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_120 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_120 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_3  Int#
    35# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_120
    happyReduction_120 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_120 HappyAbsSyn
    happy_x_3
    	p
    happy_x_2
    	HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_1) ->
    	case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_3 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_3) ->
    	CmmParse CmmExpr -> HappyAbsSyn
    happyIn39
    		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
    mkMachOp Width -> MachOp
    MO_Ne [CmmParse CmmExpr
    happy_var_1,CmmParse CmmExpr
    happy_var_3]
    	)}}

    happyReduce_121 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_121 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_121 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_3  Int#
    35# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_121
    happyReduction_121 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_121 HappyAbsSyn
    happy_x_3
    	p
    happy_x_2
    	HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_1) ->
    	case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_3 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_3) ->
    	CmmParse CmmExpr -> HappyAbsSyn
    happyIn39
    		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
    mkMachOp Width -> MachOp
    MO_Eq [CmmParse CmmExpr
    happy_var_1,CmmParse CmmExpr
    happy_var_3]
    	)}}

    happyReduce_122 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_122 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_122 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_2  Int#
    35# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p}. HappyAbsSyn -> p -> HappyAbsSyn
    happyReduction_122
    happyReduction_122 :: HappyAbsSyn -> p -> HappyAbsSyn
    happyReduction_122 HappyAbsSyn
    happy_x_2
    	p
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_2 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_2) ->
    	CmmParse CmmExpr -> HappyAbsSyn
    happyIn39
    		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
    mkMachOp Width -> MachOp
    MO_Not [CmmParse CmmExpr
    happy_var_2]
    	)}

    happyReduce_123 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_123 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_123 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_2  Int#
    35# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p}. HappyAbsSyn -> p -> HappyAbsSyn
    happyReduction_123
    happyReduction_123 :: HappyAbsSyn -> p -> HappyAbsSyn
    happyReduction_123 HappyAbsSyn
    happy_x_2
    	p
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_2 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_2) ->
    	CmmParse CmmExpr -> HappyAbsSyn
    happyIn39
    		 ((Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
    mkMachOp Width -> MachOp
    MO_S_Neg [CmmParse CmmExpr
    happy_var_2]
    	)}

    happyReduce_124 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_124 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_124 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyMonadReduce Int#
    5# Int#
    35# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
    forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
    happyReduction_124
    happyReduction_124 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
    happyReduction_124 (HappyAbsSyn
    happy_x_5 `HappyStk`
    	HappyAbsSyn
    happy_x_4 `HappyStk`
    	HappyAbsSyn
    happy_x_3 `HappyStk`
    	HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest) p
    tk
    	 = PD (CmmParse CmmExpr)
    -> (CmmParse CmmExpr -> PD HappyAbsSyn) -> PD HappyAbsSyn
    forall a b. PD a -> (a -> PD b) -> PD b
    happyThen ((case HappyAbsSyn -> HappyWrap40
    happyOut40 HappyAbsSyn
    happy_x_1 of { (HappyWrap40 CmmParse CmmExpr
    happy_var_1) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_3 of { (L SrcSpan
    _ (CmmT_Name      FastString
    happy_var_3)) ->
    	case HappyAbsSyn -> HappyWrap40
    happyOut40 HappyAbsSyn
    happy_x_5 of { (HappyWrap40 CmmParse CmmExpr
    happy_var_5) ->
    	( do { mo <- FastString -> PD (Width -> MachOp)
    nameToMachOp FastString
    happy_var_3 ;
                                                    return (mkMachOp mo [happy_var_1,happy_var_5]) })}}})
    	) (\CmmParse CmmExpr
    r -> HappyAbsSyn -> PD HappyAbsSyn
    forall a. a -> PD a
    happyReturn (CmmParse CmmExpr -> HappyAbsSyn
    happyIn39 CmmParse CmmExpr
    r))

    happyReduce_125 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_125 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_125 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    35# HappyAbsSyn -> HappyAbsSyn
    happyReduction_125
    happyReduction_125 :: HappyAbsSyn -> HappyAbsSyn
    happyReduction_125 HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap40
    happyOut40 HappyAbsSyn
    happy_x_1 of { (HappyWrap40 CmmParse CmmExpr
    happy_var_1) ->
    	CmmParse CmmExpr -> HappyAbsSyn
    happyIn39
    		 (CmmParse CmmExpr
    happy_var_1
    	)}

    happyReduce_126 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_126 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_126 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_2  Int#
    36# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_126
    happyReduction_126 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_126 HappyAbsSyn
    happy_x_2
    	HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_1 of { (L SrcSpan
    _ (CmmT_Int       Integer
    happy_var_1)) ->
    	case HappyAbsSyn -> HappyWrap41
    happyOut41 HappyAbsSyn
    happy_x_2 of { (HappyWrap41 CmmType
    happy_var_2) ->
    	CmmParse CmmExpr -> HappyAbsSyn
    happyIn40
    		 (CmmExpr -> CmmParse CmmExpr
    forall a. a -> CmmParse a
    forall (m :: * -> *) a. Monad m => a -> m a
    return (CmmLit -> CmmExpr
    CmmLit (Integer -> Width -> CmmLit
    CmmInt Integer
    happy_var_1 (CmmType -> Width
    typeWidth CmmType
    happy_var_2)))
    	)}}

    happyReduce_127 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_127 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_127 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_2  Int#
    36# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_127
    happyReduction_127 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_127 HappyAbsSyn
    happy_x_2
    	HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_1 of { (L SrcSpan
    _ (CmmT_Float     Rational
    happy_var_1)) ->
    	case HappyAbsSyn -> HappyWrap41
    happyOut41 HappyAbsSyn
    happy_x_2 of { (HappyWrap41 CmmType
    happy_var_2) ->
    	CmmParse CmmExpr -> HappyAbsSyn
    happyIn40
    		 (CmmExpr -> CmmParse CmmExpr
    forall a. a -> CmmParse a
    forall (m :: * -> *) a. Monad m => a -> m a
    return (CmmLit -> CmmExpr
    CmmLit (Rational -> Width -> CmmLit
    CmmFloat Rational
    happy_var_1 (CmmType -> Width
    typeWidth CmmType
    happy_var_2)))
    	)}}

    happyReduce_128 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_128 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_128 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    36# HappyAbsSyn -> HappyAbsSyn
    happyReduction_128
    happyReduction_128 :: HappyAbsSyn -> HappyAbsSyn
    happyReduction_128 HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_1 of { (L SrcSpan
    _ (CmmT_String    String
    happy_var_1)) ->
    	CmmParse CmmExpr -> HappyAbsSyn
    happyIn40
    		 (do s <- FCode CmmLit -> CmmParse CmmLit
    forall a. FCode a -> CmmParse a
    code (String -> FCode CmmLit
    newStringCLit String
    happy_var_1);
                                          return (CmmLit s)
    	)}

    happyReduce_129 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_129 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_129 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    36# HappyAbsSyn -> HappyAbsSyn
    happyReduction_129
    happyReduction_129 :: HappyAbsSyn -> HappyAbsSyn
    happyReduction_129 HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap47
    happyOut47 HappyAbsSyn
    happy_x_1 of { (HappyWrap47 CmmParse CmmExpr
    happy_var_1) ->
    	CmmParse CmmExpr -> HappyAbsSyn
    happyIn40
    		 (CmmParse CmmExpr
    happy_var_1
    	)}

    happyReduce_130 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_130 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_130 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce Int#
    5# Int#
    36# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_130
    happyReduction_130 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_130 (HappyAbsSyn
    happy_x_5 `HappyStk`
    	HappyAbsSyn
    happy_x_4 `HappyStk`
    	HappyAbsSyn
    happy_x_3 `HappyStk`
    	HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest)
    	 = case HappyAbsSyn -> HappyWrap57
    happyOut57 HappyAbsSyn
    happy_x_1 of { (HappyWrap57 CmmType
    happy_var_1) ->
    	case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_4 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_4) ->
    	CmmParse CmmExpr -> HappyAbsSyn
    happyIn40
    		 (do ptr <- CmmParse CmmExpr
    happy_var_4; return (CmmMachOp (MO_RelaxedRead (typeWidth happy_var_1)) [ptr])
    	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    forall a. a -> HappyStk a -> HappyStk a
    `HappyStk` HappyStk HappyAbsSyn
    happyRest}}

    happyReduce_131 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_131 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_131 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce Int#
    5# Int#
    36# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_131
    happyReduction_131 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_131 (HappyAbsSyn
    happy_x_5 `HappyStk`
    	HappyAbsSyn
    happy_x_4 `HappyStk`
    	HappyAbsSyn
    happy_x_3 `HappyStk`
    	HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest)
    	 = case HappyAbsSyn -> HappyWrap57
    happyOut57 HappyAbsSyn
    happy_x_1 of { (HappyWrap57 CmmType
    happy_var_1) ->
    	case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_4 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_4) ->
    	CmmParse CmmExpr -> HappyAbsSyn
    happyIn40
    		 (do ptr <- CmmParse CmmExpr
    happy_var_4; return (CmmLoad ptr happy_var_1 Unaligned)
    	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    forall a. a -> HappyStk a -> HappyStk a
    `HappyStk` HappyStk HappyAbsSyn
    happyRest}}

    happyReduce_132 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_132 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_132 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce Int#
    4# Int#
    36# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_132
    happyReduction_132 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_132 (HappyAbsSyn
    happy_x_4 `HappyStk`
    	HappyAbsSyn
    happy_x_3 `HappyStk`
    	HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest)
    	 = case HappyAbsSyn -> HappyWrap57
    happyOut57 HappyAbsSyn
    happy_x_1 of { (HappyWrap57 CmmType
    happy_var_1) ->
    	case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_3 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_3) ->
    	CmmParse CmmExpr -> HappyAbsSyn
    happyIn40
    		 (do ptr <- CmmParse CmmExpr
    happy_var_3; return (CmmLoad ptr happy_var_1 NaturallyAligned)
    	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    forall a. a -> HappyStk a -> HappyStk a
    `HappyStk` HappyStk HappyAbsSyn
    happyRest}}

    happyReduce_133 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_133 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_133 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyMonadReduce Int#
    5# Int#
    36# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
    forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
    happyReduction_133
    happyReduction_133 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
    happyReduction_133 (HappyAbsSyn
    happy_x_5 `HappyStk`
    	HappyAbsSyn
    happy_x_4 `HappyStk`
    	HappyAbsSyn
    happy_x_3 `HappyStk`
    	HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest) p
    tk
    	 = PD (CmmParse CmmExpr)
    -> (CmmParse CmmExpr -> PD HappyAbsSyn) -> PD HappyAbsSyn
    forall a b. PD a -> (a -> PD b) -> PD b
    happyThen ((case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_2 of { (L SrcSpan
    _ (CmmT_Name      FastString
    happy_var_2)) ->
    	case HappyAbsSyn -> HappyWrap45
    happyOut45 HappyAbsSyn
    happy_x_4 of { (HappyWrap45 [CmmParse CmmExpr]
    happy_var_4) ->
    	( FastString -> [CmmParse CmmExpr] -> PD (CmmParse CmmExpr)
    exprOp FastString
    happy_var_2 [CmmParse CmmExpr]
    happy_var_4)}})
    	) (\CmmParse CmmExpr
    r -> HappyAbsSyn -> PD HappyAbsSyn
    forall a. a -> PD a
    happyReturn (CmmParse CmmExpr -> HappyAbsSyn
    happyIn40 CmmParse CmmExpr
    r))

    happyReduce_134 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_134 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_134 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_3  Int#
    36# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p} {p}. p -> HappyAbsSyn -> p -> HappyAbsSyn
    happyReduction_134
    happyReduction_134 :: p -> HappyAbsSyn -> p -> HappyAbsSyn
    happyReduction_134 p
    happy_x_3
    	HappyAbsSyn
    happy_x_2
    	p
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_2 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_2) ->
    	CmmParse CmmExpr -> HappyAbsSyn
    happyIn40
    		 (CmmParse CmmExpr
    happy_var_2
    	)}

    happyReduce_135 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_135 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_135 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyMonadReduce Int#
    0# Int#
    37# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
    forall {p} {p}. p -> p -> PD HappyAbsSyn
    happyReduction_135
    happyReduction_135 :: p -> p -> PD HappyAbsSyn
    happyReduction_135 (p
    happyRest) p
    tk
    	 = PD CmmType -> (CmmType -> PD HappyAbsSyn) -> PD HappyAbsSyn
    forall a b. PD a -> (a -> PD b) -> PD b
    happyThen ((( do platform <- PD Platform
    PD.getPlatform; return $ bWord platform))
    	) (\CmmType
    r -> HappyAbsSyn -> PD HappyAbsSyn
    forall a. a -> PD a
    happyReturn (CmmType -> HappyAbsSyn
    happyIn41 CmmType
    r))

    happyReduce_136 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_136 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_136 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_2  Int#
    37# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p}. HappyAbsSyn -> p -> HappyAbsSyn
    happyReduction_136
    happyReduction_136 :: HappyAbsSyn -> p -> HappyAbsSyn
    happyReduction_136 HappyAbsSyn
    happy_x_2
    	p
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap57
    happyOut57 HappyAbsSyn
    happy_x_2 of { (HappyWrap57 CmmType
    happy_var_2) ->
    	CmmType -> HappyAbsSyn
    happyIn41
    		 (CmmType
    happy_var_2
    	)}

    happyReduce_137 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_137 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_137 = Int#
    -> HappyAbsSyn
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_0  Int#
    38# HappyAbsSyn
    happyReduction_137
    happyReduction_137 :: HappyAbsSyn
    happyReduction_137  =  [CmmParse (CmmExpr, ForeignHint)] -> HappyAbsSyn
    happyIn42
    		 ([]
    	)

    happyReduce_138 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_138 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_138 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    38# HappyAbsSyn -> HappyAbsSyn
    happyReduction_138
    happyReduction_138 :: HappyAbsSyn -> HappyAbsSyn
    happyReduction_138 HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap43
    happyOut43 HappyAbsSyn
    happy_x_1 of { (HappyWrap43 [CmmParse (CmmExpr, ForeignHint)]
    happy_var_1) ->
    	[CmmParse (CmmExpr, ForeignHint)] -> HappyAbsSyn
    happyIn42
    		 ([CmmParse (CmmExpr, ForeignHint)]
    happy_var_1
    	)}

    happyReduce_139 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_139 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_139 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    39# HappyAbsSyn -> HappyAbsSyn
    happyReduction_139
    happyReduction_139 :: HappyAbsSyn -> HappyAbsSyn
    happyReduction_139 HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap44
    happyOut44 HappyAbsSyn
    happy_x_1 of { (HappyWrap44 CmmParse (CmmExpr, ForeignHint)
    happy_var_1) ->
    	[CmmParse (CmmExpr, ForeignHint)] -> HappyAbsSyn
    happyIn43
    		 ([CmmParse (CmmExpr, ForeignHint)
    happy_var_1]
    	)}

    happyReduce_140 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_140 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_140 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_3  Int#
    39# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_140
    happyReduction_140 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_140 HappyAbsSyn
    happy_x_3
    	p
    happy_x_2
    	HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap44
    happyOut44 HappyAbsSyn
    happy_x_1 of { (HappyWrap44 CmmParse (CmmExpr, ForeignHint)
    happy_var_1) ->
    	case HappyAbsSyn -> HappyWrap43
    happyOut43 HappyAbsSyn
    happy_x_3 of { (HappyWrap43 [CmmParse (CmmExpr, ForeignHint)]
    happy_var_3) ->
    	[CmmParse (CmmExpr, ForeignHint)] -> HappyAbsSyn
    happyIn43
    		 (CmmParse (CmmExpr, ForeignHint)
    happy_var_1 CmmParse (CmmExpr, ForeignHint)
    -> [CmmParse (CmmExpr, ForeignHint)]
    -> [CmmParse (CmmExpr, ForeignHint)]
    forall a. a -> [a] -> [a]
    : [CmmParse (CmmExpr, ForeignHint)]
    happy_var_3
    	)}}

    happyReduce_141 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_141 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_141 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    40# HappyAbsSyn -> HappyAbsSyn
    happyReduction_141
    happyReduction_141 :: HappyAbsSyn -> HappyAbsSyn
    happyReduction_141 HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_1) ->
    	CmmParse (CmmExpr, ForeignHint) -> HappyAbsSyn
    happyIn44
    		 (do e <- CmmParse CmmExpr
    happy_var_1;
                                                 return (e, inferCmmHint e)
    	)}

    happyReduce_142 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_142 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_142 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyMonadReduce Int#
    2# Int#
    40# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
    forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
    happyReduction_142
    happyReduction_142 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
    happyReduction_142 (HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest) p
    tk
    	 = PD (CmmParse (CmmExpr, ForeignHint))
    -> (CmmParse (CmmExpr, ForeignHint) -> PD HappyAbsSyn)
    -> PD HappyAbsSyn
    forall a b. PD a -> (a -> PD b) -> PD b
    happyThen ((case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_1) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_2 of { (L SrcSpan
    _ (CmmT_String    String
    happy_var_2)) ->
    	( do h <- String -> PD ForeignHint
    parseCmmHint String
    happy_var_2;
                                                  return $ do
                                                    e <- happy_var_1; return (e, h))}})
    	) (\CmmParse (CmmExpr, ForeignHint)
    r -> HappyAbsSyn -> PD HappyAbsSyn
    forall a. a -> PD a
    happyReturn (CmmParse (CmmExpr, ForeignHint) -> HappyAbsSyn
    happyIn44 CmmParse (CmmExpr, ForeignHint)
    r))

    happyReduce_143 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_143 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_143 = Int#
    -> HappyAbsSyn
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_0  Int#
    41# HappyAbsSyn
    happyReduction_143
    happyReduction_143 :: HappyAbsSyn
    happyReduction_143  =  [CmmParse CmmExpr] -> HappyAbsSyn
    happyIn45
    		 ([]
    	)

    happyReduce_144 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_144 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_144 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    41# HappyAbsSyn -> HappyAbsSyn
    happyReduction_144
    happyReduction_144 :: HappyAbsSyn -> HappyAbsSyn
    happyReduction_144 HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap46
    happyOut46 HappyAbsSyn
    happy_x_1 of { (HappyWrap46 [CmmParse CmmExpr]
    happy_var_1) ->
    	[CmmParse CmmExpr] -> HappyAbsSyn
    happyIn45
    		 ([CmmParse CmmExpr]
    happy_var_1
    	)}

    happyReduce_145 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_145 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_145 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    42# HappyAbsSyn -> HappyAbsSyn
    happyReduction_145
    happyReduction_145 :: HappyAbsSyn -> HappyAbsSyn
    happyReduction_145 HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_1) ->
    	[CmmParse CmmExpr] -> HappyAbsSyn
    happyIn46
    		 ([ CmmParse CmmExpr
    happy_var_1 ]
    	)}

    happyReduce_146 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_146 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_146 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_3  Int#
    42# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_146
    happyReduction_146 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_146 HappyAbsSyn
    happy_x_3
    	p
    happy_x_2
    	HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap39
    happyOut39 HappyAbsSyn
    happy_x_1 of { (HappyWrap39 CmmParse CmmExpr
    happy_var_1) ->
    	case HappyAbsSyn -> HappyWrap46
    happyOut46 HappyAbsSyn
    happy_x_3 of { (HappyWrap46 [CmmParse CmmExpr]
    happy_var_3) ->
    	[CmmParse CmmExpr] -> HappyAbsSyn
    happyIn46
    		 (CmmParse CmmExpr
    happy_var_1 CmmParse CmmExpr -> [CmmParse CmmExpr] -> [CmmParse CmmExpr]
    forall a. a -> [a] -> [a]
    : [CmmParse CmmExpr]
    happy_var_3
    	)}}

    happyReduce_147 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_147 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_147 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    43# HappyAbsSyn -> HappyAbsSyn
    happyReduction_147
    happyReduction_147 :: HappyAbsSyn -> HappyAbsSyn
    happyReduction_147 HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_1 of { (L SrcSpan
    _ (CmmT_Name      FastString
    happy_var_1)) ->
    	CmmParse CmmExpr -> HappyAbsSyn
    happyIn47
    		 (FastString -> CmmParse CmmExpr
    lookupName FastString
    happy_var_1
    	)}

    happyReduce_148 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_148 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_148 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    43# HappyAbsSyn -> HappyAbsSyn
    happyReduction_148
    happyReduction_148 :: HappyAbsSyn -> HappyAbsSyn
    happyReduction_148 HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_1 of { (L SrcSpan
    _ (CmmT_GlobalReg GlobalRegUse
    happy_var_1)) ->
    	CmmParse CmmExpr -> HappyAbsSyn
    happyIn47
    		 (CmmExpr -> CmmParse CmmExpr
    forall a. a -> CmmParse a
    forall (m :: * -> *) a. Monad m => a -> m a
    return (CmmReg -> CmmExpr
    CmmReg (GlobalRegUse -> CmmReg
    CmmGlobal GlobalRegUse
    happy_var_1))
    	)}

    happyReduce_149 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_149 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_149 = Int#
    -> HappyAbsSyn
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_0  Int#
    44# HappyAbsSyn
    happyReduction_149
    happyReduction_149 :: HappyAbsSyn
    happyReduction_149  =  [CmmParse (LocalReg, ForeignHint)] -> HappyAbsSyn
    happyIn48
    		 ([]
    	)

    happyReduce_150 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_150 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_150 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce Int#
    4# Int#
    44# HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_150
    happyReduction_150 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    happyReduction_150 (HappyAbsSyn
    happy_x_4 `HappyStk`
    	HappyAbsSyn
    happy_x_3 `HappyStk`
    	HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest)
    	 = case HappyAbsSyn -> HappyWrap49
    happyOut49 HappyAbsSyn
    happy_x_2 of { (HappyWrap49 [CmmParse (LocalReg, ForeignHint)]
    happy_var_2) ->
    	[CmmParse (LocalReg, ForeignHint)] -> HappyAbsSyn
    happyIn48
    		 ([CmmParse (LocalReg, ForeignHint)]
    happy_var_2
    	) HappyAbsSyn -> HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn
    forall a. a -> HappyStk a -> HappyStk a
    `HappyStk` HappyStk HappyAbsSyn
    happyRest}

    happyReduce_151 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_151 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_151 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    45# HappyAbsSyn -> HappyAbsSyn
    happyReduction_151
    happyReduction_151 :: HappyAbsSyn -> HappyAbsSyn
    happyReduction_151 HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap50
    happyOut50 HappyAbsSyn
    happy_x_1 of { (HappyWrap50 CmmParse (LocalReg, ForeignHint)
    happy_var_1) ->
    	[CmmParse (LocalReg, ForeignHint)] -> HappyAbsSyn
    happyIn49
    		 ([CmmParse (LocalReg, ForeignHint)
    happy_var_1]
    	)}

    happyReduce_152 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_152 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_152 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_2  Int#
    45# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p}. p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_152
    happyReduction_152 :: p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_152 p
    happy_x_2
    	HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap50
    happyOut50 HappyAbsSyn
    happy_x_1 of { (HappyWrap50 CmmParse (LocalReg, ForeignHint)
    happy_var_1) ->
    	[CmmParse (LocalReg, ForeignHint)] -> HappyAbsSyn
    happyIn49
    		 ([CmmParse (LocalReg, ForeignHint)
    happy_var_1]
    	)}

    happyReduce_153 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_153 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_153 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_3  Int#
    45# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_153
    happyReduction_153 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_153 HappyAbsSyn
    happy_x_3
    	p
    happy_x_2
    	HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap50
    happyOut50 HappyAbsSyn
    happy_x_1 of { (HappyWrap50 CmmParse (LocalReg, ForeignHint)
    happy_var_1) ->
    	case HappyAbsSyn -> HappyWrap49
    happyOut49 HappyAbsSyn
    happy_x_3 of { (HappyWrap49 [CmmParse (LocalReg, ForeignHint)]
    happy_var_3) ->
    	[CmmParse (LocalReg, ForeignHint)] -> HappyAbsSyn
    happyIn49
    		 (CmmParse (LocalReg, ForeignHint)
    happy_var_1 CmmParse (LocalReg, ForeignHint)
    -> [CmmParse (LocalReg, ForeignHint)]
    -> [CmmParse (LocalReg, ForeignHint)]
    forall a. a -> [a] -> [a]
    : [CmmParse (LocalReg, ForeignHint)]
    happy_var_3
    	)}}

    happyReduce_154 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_154 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_154 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    46# HappyAbsSyn -> HappyAbsSyn
    happyReduction_154
    happyReduction_154 :: HappyAbsSyn -> HappyAbsSyn
    happyReduction_154 HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap51
    happyOut51 HappyAbsSyn
    happy_x_1 of { (HappyWrap51 CmmParse LocalReg
    happy_var_1) ->
    	CmmParse (LocalReg, ForeignHint) -> HappyAbsSyn
    happyIn50
    		 (do e <- CmmParse LocalReg
    happy_var_1; return (e, inferCmmHint (CmmReg (CmmLocal e)))
    	)}

    happyReduce_155 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_155 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_155 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyMonadReduce Int#
    2# Int#
    46# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
    forall {p}. HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
    happyReduction_155
    happyReduction_155 :: HappyStk HappyAbsSyn -> p -> PD HappyAbsSyn
    happyReduction_155 (HappyAbsSyn
    happy_x_2 `HappyStk`
    	HappyAbsSyn
    happy_x_1 `HappyStk`
    	HappyStk HappyAbsSyn
    happyRest) p
    tk
    	 = PD (CmmParse (LocalReg, ForeignHint))
    -> (CmmParse (LocalReg, ForeignHint) -> PD HappyAbsSyn)
    -> PD HappyAbsSyn
    forall a b. PD a -> (a -> PD b) -> PD b
    happyThen ((case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_1 of { (L SrcSpan
    _ (CmmT_String    String
    happy_var_1)) ->
    	case HappyAbsSyn -> HappyWrap51
    happyOut51 HappyAbsSyn
    happy_x_2 of { (HappyWrap51 CmmParse LocalReg
    happy_var_2) ->
    	( do h <- String -> PD ForeignHint
    parseCmmHint String
    happy_var_1;
                                          return $ do
                                             e <- happy_var_2; return (e,h))}})
    	) (\CmmParse (LocalReg, ForeignHint)
    r -> HappyAbsSyn -> PD HappyAbsSyn
    forall a. a -> PD a
    happyReturn (CmmParse (LocalReg, ForeignHint) -> HappyAbsSyn
    happyIn50 CmmParse (LocalReg, ForeignHint)
    r))

    happyReduce_156 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_156 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_156 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    47# HappyAbsSyn -> HappyAbsSyn
    happyReduction_156
    happyReduction_156 :: HappyAbsSyn -> HappyAbsSyn
    happyReduction_156 HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_1 of { (L SrcSpan
    _ (CmmT_Name      FastString
    happy_var_1)) ->
    	CmmParse LocalReg -> HappyAbsSyn
    happyIn51
    		 (do e <- FastString -> CmmParse CmmExpr
    lookupName FastString
    happy_var_1;
                                         return $
                                           case e of
                                            CmmReg (CmmLocal LocalReg
    r) -> LocalReg
    r
                                            CmmExpr
    other -> String -> SDoc -> LocalReg
    forall a. HasCallStack => String -> SDoc -> a
    pprPanic String
    "CmmParse:" (FastString -> SDoc
    forall doc. IsLine doc => FastString -> doc
    ftext FastString
    happy_var_1 SDoc -> SDoc -> SDoc
    forall doc. IsLine doc => doc -> doc -> doc
    <> String -> SDoc
    forall doc. IsLine doc => String -> doc
    text String
    " not a local register")
    	)}

    happyReduce_157 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_157 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_157 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    48# HappyAbsSyn -> HappyAbsSyn
    happyReduction_157
    happyReduction_157 :: HappyAbsSyn -> HappyAbsSyn
    happyReduction_157 HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_1 of { (L SrcSpan
    _ (CmmT_Name      FastString
    happy_var_1)) ->
    	CmmParse CmmReg -> HappyAbsSyn
    happyIn52
    		 (do e <- FastString -> CmmParse CmmExpr
    lookupName FastString
    happy_var_1;
                                         return $
                                           case e of
                                            CmmReg CmmReg
    r -> CmmReg
    r
                                            CmmExpr
    other -> String -> SDoc -> CmmReg
    forall a. HasCallStack => String -> SDoc -> a
    pprPanic String
    "CmmParse:" (FastString -> SDoc
    forall doc. IsLine doc => FastString -> doc
    ftext FastString
    happy_var_1 SDoc -> SDoc -> SDoc
    forall doc. IsLine doc => doc -> doc -> doc
    <> String -> SDoc
    forall doc. IsLine doc => String -> doc
    text String
    " not a register")
    	)}

    happyReduce_158 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_158 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_158 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    48# HappyAbsSyn -> HappyAbsSyn
    happyReduction_158
    happyReduction_158 :: HappyAbsSyn -> HappyAbsSyn
    happyReduction_158 HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_1 of { (L SrcSpan
    _ (CmmT_GlobalReg GlobalRegUse
    happy_var_1)) ->
    	CmmParse CmmReg -> HappyAbsSyn
    happyIn52
    		 (CmmReg -> CmmParse CmmReg
    forall a. a -> CmmParse a
    forall (m :: * -> *) a. Monad m => a -> m a
    return (GlobalRegUse -> CmmReg
    CmmGlobal GlobalRegUse
    happy_var_1)
    	)}

    happyReduce_159 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_159 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_159 = Int#
    -> HappyAbsSyn
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_0  Int#
    49# HappyAbsSyn
    happyReduction_159
    happyReduction_159 :: HappyAbsSyn
    happyReduction_159  =  Maybe [CmmParse LocalReg] -> HappyAbsSyn
    happyIn53
    		 (Maybe [CmmParse LocalReg]
    forall a. Maybe a
    Nothing
    	)

    happyReduce_160 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_160 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_160 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_3  Int#
    49# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p} {p}. p -> HappyAbsSyn -> p -> HappyAbsSyn
    happyReduction_160
    happyReduction_160 :: p -> HappyAbsSyn -> p -> HappyAbsSyn
    happyReduction_160 p
    happy_x_3
    	HappyAbsSyn
    happy_x_2
    	p
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap54
    happyOut54 HappyAbsSyn
    happy_x_2 of { (HappyWrap54 [CmmParse LocalReg]
    happy_var_2) ->
    	Maybe [CmmParse LocalReg] -> HappyAbsSyn
    happyIn53
    		 ([CmmParse LocalReg] -> Maybe [CmmParse LocalReg]
    forall a. a -> Maybe a
    Just [CmmParse LocalReg]
    happy_var_2
    	)}

    happyReduce_161 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_161 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_161 = Int#
    -> HappyAbsSyn
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_0  Int#
    50# HappyAbsSyn
    happyReduction_161
    happyReduction_161 :: HappyAbsSyn
    happyReduction_161  =  [CmmParse LocalReg] -> HappyAbsSyn
    happyIn54
    		 ([]
    	)

    happyReduce_162 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_162 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_162 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    50# HappyAbsSyn -> HappyAbsSyn
    happyReduction_162
    happyReduction_162 :: HappyAbsSyn -> HappyAbsSyn
    happyReduction_162 HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap55
    happyOut55 HappyAbsSyn
    happy_x_1 of { (HappyWrap55 [CmmParse LocalReg]
    happy_var_1) ->
    	[CmmParse LocalReg] -> HappyAbsSyn
    happyIn54
    		 ([CmmParse LocalReg]
    happy_var_1
    	)}

    happyReduce_163 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_163 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_163 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_2  Int#
    51# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p}. p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_163
    happyReduction_163 :: p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_163 p
    happy_x_2
    	HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap56
    happyOut56 HappyAbsSyn
    happy_x_1 of { (HappyWrap56 CmmParse LocalReg
    happy_var_1) ->
    	[CmmParse LocalReg] -> HappyAbsSyn
    happyIn55
    		 ([CmmParse LocalReg
    happy_var_1]
    	)}

    happyReduce_164 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_164 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_164 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    51# HappyAbsSyn -> HappyAbsSyn
    happyReduction_164
    happyReduction_164 :: HappyAbsSyn -> HappyAbsSyn
    happyReduction_164 HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap56
    happyOut56 HappyAbsSyn
    happy_x_1 of { (HappyWrap56 CmmParse LocalReg
    happy_var_1) ->
    	[CmmParse LocalReg] -> HappyAbsSyn
    happyIn55
    		 ([CmmParse LocalReg
    happy_var_1]
    	)}

    happyReduce_165 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_165 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_165 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_3  Int#
    51# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    forall {p}. HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_165
    happyReduction_165 :: HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_165 HappyAbsSyn
    happy_x_3
    	p
    happy_x_2
    	HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap56
    happyOut56 HappyAbsSyn
    happy_x_1 of { (HappyWrap56 CmmParse LocalReg
    happy_var_1) ->
    	case HappyAbsSyn -> HappyWrap55
    happyOut55 HappyAbsSyn
    happy_x_3 of { (HappyWrap55 [CmmParse LocalReg]
    happy_var_3) ->
    	[CmmParse LocalReg] -> HappyAbsSyn
    happyIn55
    		 (CmmParse LocalReg
    happy_var_1 CmmParse LocalReg -> [CmmParse LocalReg] -> [CmmParse LocalReg]
    forall a. a -> [a] -> [a]
    : [CmmParse LocalReg]
    happy_var_3
    	)}}

    happyReduce_166 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_166 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_166 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_2  Int#
    52# HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_166
    happyReduction_166 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn
    happyReduction_166 HappyAbsSyn
    happy_x_2
    	HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap57
    happyOut57 HappyAbsSyn
    happy_x_1 of { (HappyWrap57 CmmType
    happy_var_1) ->
    	case HappyAbsSyn -> Located CmmToken
    happyOutTok HappyAbsSyn
    happy_x_2 of { (L SrcSpan
    _ (CmmT_Name      FastString
    happy_var_2)) ->
    	CmmParse LocalReg -> HappyAbsSyn
    happyIn56
    		 (CmmType -> FastString -> CmmParse LocalReg
    newLocal CmmType
    happy_var_1 FastString
    happy_var_2
    	)}}

    happyReduce_167 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_167 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_167 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    53# HappyAbsSyn -> HappyAbsSyn
    forall {p}. p -> HappyAbsSyn
    happyReduction_167
    happyReduction_167 :: p -> HappyAbsSyn
    happyReduction_167 p
    happy_x_1
    	 =  CmmType -> HappyAbsSyn
    happyIn57
    		 (CmmType
    b8
    	)

    happyReduce_168 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_168 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_168 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    53# HappyAbsSyn -> HappyAbsSyn
    happyReduction_168
    happyReduction_168 :: HappyAbsSyn -> HappyAbsSyn
    happyReduction_168 HappyAbsSyn
    happy_x_1
    	 =  case HappyAbsSyn -> HappyWrap58
    happyOut58 HappyAbsSyn
    happy_x_1 of { (HappyWrap58 CmmType
    happy_var_1) ->
    	CmmType -> HappyAbsSyn
    happyIn57
    		 (CmmType
    happy_var_1
    	)}

    happyReduce_169 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_169 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_169 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    54# HappyAbsSyn -> HappyAbsSyn
    forall {p}. p -> HappyAbsSyn
    happyReduction_169
    happyReduction_169 :: p -> HappyAbsSyn
    happyReduction_169 p
    happy_x_1
    	 =  CmmType -> HappyAbsSyn
    happyIn58
    		 (CmmType
    b16
    	)

    happyReduce_170 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_170 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_170 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    54# HappyAbsSyn -> HappyAbsSyn
    forall {p}. p -> HappyAbsSyn
    happyReduction_170
    happyReduction_170 :: p -> HappyAbsSyn
    happyReduction_170 p
    happy_x_1
    	 =  CmmType -> HappyAbsSyn
    happyIn58
    		 (CmmType
    b32
    	)

    happyReduce_171 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_171 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_171 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    54# HappyAbsSyn -> HappyAbsSyn
    forall {p}. p -> HappyAbsSyn
    happyReduction_171
    happyReduction_171 :: p -> HappyAbsSyn
    happyReduction_171 p
    happy_x_1
    	 =  CmmType -> HappyAbsSyn
    happyIn58
    		 (CmmType
    b64
    	)

    happyReduce_172 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_172 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_172 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    54# HappyAbsSyn -> HappyAbsSyn
    forall {p}. p -> HappyAbsSyn
    happyReduction_172
    happyReduction_172 :: p -> HappyAbsSyn
    happyReduction_172 p
    happy_x_1
    	 =  CmmType -> HappyAbsSyn
    happyIn58
    		 (CmmType
    b128
    	)

    happyReduce_173 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_173 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_173 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    54# HappyAbsSyn -> HappyAbsSyn
    forall {p}. p -> HappyAbsSyn
    happyReduction_173
    happyReduction_173 :: p -> HappyAbsSyn
    happyReduction_173 p
    happy_x_1
    	 =  CmmType -> HappyAbsSyn
    happyIn58
    		 (CmmType
    b256
    	)

    happyReduce_174 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_174 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_174 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    54# HappyAbsSyn -> HappyAbsSyn
    forall {p}. p -> HappyAbsSyn
    happyReduction_174
    happyReduction_174 :: p -> HappyAbsSyn
    happyReduction_174 p
    happy_x_1
    	 =  CmmType -> HappyAbsSyn
    happyIn58
    		 (CmmType
    b512
    	)

    happyReduce_175 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_175 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_175 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    54# HappyAbsSyn -> HappyAbsSyn
    forall {p}. p -> HappyAbsSyn
    happyReduction_175
    happyReduction_175 :: p -> HappyAbsSyn
    happyReduction_175 p
    happy_x_1
    	 =  CmmType -> HappyAbsSyn
    happyIn58
    		 (CmmType
    f32
    	)

    happyReduce_176 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_176 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_176 = Int#
    -> (HappyAbsSyn -> HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happySpecReduce_1  Int#
    54# HappyAbsSyn -> HappyAbsSyn
    forall {p}. p -> HappyAbsSyn
    happyReduction_176
    happyReduction_176 :: p -> HappyAbsSyn
    happyReduction_176 p
    happy_x_1
    	 =  CmmType -> HappyAbsSyn
    happyIn58
    		 (CmmType
    f64
    	)

    happyReduce_177 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
    happyReduce_177 :: Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyReduce_177 = Int#
    -> Int#
    -> (HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn)
    -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyMonadReduce Int#
    1# Int#
    54# HappyStk HappyAbsSyn -> Located CmmToken -> PD HappyAbsSyn
    forall {a} {p}. HappyStk a -> p -> PD HappyAbsSyn
    happyReduction_177
    happyReduction_177 :: HappyStk a -> p -> PD HappyAbsSyn
    happyReduction_177 (a
    happy_x_1 `HappyStk`
    	HappyStk a
    happyRest) p
    tk
    	 = PD CmmType -> (CmmType -> PD HappyAbsSyn) -> PD HappyAbsSyn
    forall a b. PD a -> (a -> PD b) -> PD b
    happyThen ((( do platform <- PD Platform
    PD.getPlatform; return $ gcWord platform))
    	) (\CmmType
    r -> HappyAbsSyn -> PD HappyAbsSyn
    forall a. a -> PD a
    happyReturn (CmmType -> HappyAbsSyn
    happyIn58 CmmType
    r))

    happyNewToken :: Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> PD HappyAbsSyn
    happyNewToken Int#
    action Happy_IntList
    sts HappyStk HappyAbsSyn
    stk
    	= (Located CmmToken -> PD HappyAbsSyn) -> PD HappyAbsSyn
    forall a. (Located CmmToken -> PD a) -> PD a
    cmmlex(\Located CmmToken
    tk ->
    	let cont :: Int# -> PD HappyAbsSyn
    cont Int#
    i = Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyDoAction Int#
    i Located CmmToken
    tk Int#
    action Happy_IntList
    sts HappyStk HappyAbsSyn
    stk in
    	case Located CmmToken
    tk of {
    	L SrcSpan
    _ CmmToken
    CmmT_EOF -> Int#
    -> Located CmmToken
    -> Int#
    -> Happy_IntList
    -> HappyStk HappyAbsSyn
    -> PD HappyAbsSyn
    happyDoAction Int#
    81# Located CmmToken
    tk Int#
    action Happy_IntList
    sts HappyStk HappyAbsSyn
    stk;
    	L SrcSpan
    _ (CmmT_SpecChar Char
    ':') -> Int# -> PD HappyAbsSyn
    cont Int#
    1#;
    	L SrcSpan
    _ (CmmT_SpecChar Char
    ';') -> Int# -> PD HappyAbsSyn
    cont Int#
    2#;
    	L SrcSpan
    _ (CmmT_SpecChar Char
    '{') -> Int# -> PD HappyAbsSyn
    cont Int#
    3#;
    	L SrcSpan
    _ (CmmT_SpecChar Char
    '}') -> Int# -> PD HappyAbsSyn
    cont Int#
    4#;
    	L SrcSpan
    _ (CmmT_SpecChar Char
    '[') -> Int# -> PD HappyAbsSyn
    cont Int#
    5#;
    	L SrcSpan
    _ (CmmT_SpecChar Char
    ']') -> Int# -> PD HappyAbsSyn
    cont Int#
    6#;
    	L SrcSpan
    _ (CmmT_SpecChar Char
    '(') -> Int# -> PD HappyAbsSyn
    cont Int#
    7#;
    	L SrcSpan
    _ (CmmT_SpecChar Char
    ')') -> Int# -> PD HappyAbsSyn
    cont Int#
    8#;
    	L SrcSpan
    _ (CmmT_SpecChar Char
    '=') -> Int# -> PD HappyAbsSyn
    cont Int#
    9#;
    	L SrcSpan
    _ (CmmT_SpecChar Char
    '`') -> Int# -> PD HappyAbsSyn
    cont Int#
    10#;
    	L SrcSpan
    _ (CmmT_SpecChar Char
    '~') -> Int# -> PD HappyAbsSyn
    cont Int#
    11#;
    	L SrcSpan
    _ (CmmT_SpecChar Char
    '/') -> Int# -> PD HappyAbsSyn
    cont Int#
    12#;
    	L SrcSpan
    _ (CmmT_SpecChar Char
    '*') -> Int# -> PD HappyAbsSyn
    cont Int#
    13#;
    	L SrcSpan
    _ (CmmT_SpecChar Char
    '%') -> Int# -> PD HappyAbsSyn
    cont Int#
    14#;
    	L SrcSpan
    _ (CmmT_SpecChar Char
    '-') -> Int# -> PD HappyAbsSyn
    cont Int#
    15#;
    	L SrcSpan
    _ (CmmT_SpecChar Char
    '+') -> Int# -> PD HappyAbsSyn
    cont Int#
    16#;
    	L SrcSpan
    _ (CmmT_SpecChar Char
    '&') -> Int# -> PD HappyAbsSyn
    cont Int#
    17#;
    	L SrcSpan
    _ (CmmT_SpecChar Char
    '^') -> Int# -> PD HappyAbsSyn
    cont Int#
    18#;
    	L SrcSpan
    _ (CmmT_SpecChar Char
    '|') -> Int# -> PD HappyAbsSyn
    cont Int#
    19#;
    	L SrcSpan
    _ (CmmT_SpecChar Char
    '>') -> Int# -> PD HappyAbsSyn
    cont Int#
    20#;
    	L SrcSpan
    _ (CmmT_SpecChar Char
    '<') -> Int# -> PD HappyAbsSyn
    cont Int#
    21#;
    	L SrcSpan
    _ (CmmT_SpecChar Char
    ',') -> Int# -> PD HappyAbsSyn
    cont Int#
    22#;
    	L SrcSpan
    _ (CmmT_SpecChar Char
    '!') -> Int# -> PD HappyAbsSyn
    cont Int#
    23#;
    	L SrcSpan
    _ (CmmToken
    CmmT_DotDot) -> Int# -> PD HappyAbsSyn
    cont Int#
    24#;
    	L SrcSpan
    _ (CmmToken
    CmmT_DoubleColon) -> Int# -> PD HappyAbsSyn
    cont Int#
    25#;
    	L SrcSpan
    _ (CmmToken
    CmmT_Shr) -> Int# -> PD HappyAbsSyn
    cont Int#
    26#;
    	L SrcSpan
    _ (CmmToken
    CmmT_Shl) -> Int# -> PD HappyAbsSyn
    cont Int#
    27#;
    	L SrcSpan
    _ (CmmToken
    CmmT_Ge) -> Int# -> PD HappyAbsSyn
    cont Int#
    28#;
    	L SrcSpan
    _ (CmmToken
    CmmT_Le) -> Int# -> PD HappyAbsSyn
    cont Int#
    29#;
    	L SrcSpan
    _ (CmmToken
    CmmT_Eq) -> Int# -> PD HappyAbsSyn
    cont Int#
    30#;
    	L SrcSpan
    _ (CmmToken
    CmmT_Ne) -> Int# -> PD HappyAbsSyn
    cont Int#
    31#;
    	L SrcSpan
    _ (CmmToken
    CmmT_BoolAnd) -> Int# -> PD HappyAbsSyn
    cont Int#
    32#;
    	L SrcSpan
    _ (CmmToken
    CmmT_BoolOr) -> Int# -> PD HappyAbsSyn
    cont Int#
    33#;
    	L SrcSpan
    _ (CmmToken
    CmmT_True ) -> Int# -> PD HappyAbsSyn
    cont Int#
    34#;
    	L SrcSpan
    _ (CmmToken
    CmmT_False) -> Int# -> PD HappyAbsSyn
    cont Int#
    35#;
    	L SrcSpan
    _ (CmmToken
    CmmT_likely) -> Int# -> PD HappyAbsSyn
    cont Int#
    36#;
    	L SrcSpan
    _ (CmmToken
    CmmT_Relaxed) -> Int# -> PD HappyAbsSyn
    cont Int#
    37#;
    	L SrcSpan
    _ (CmmToken
    CmmT_Acquire) -> Int# -> PD HappyAbsSyn
    cont Int#
    38#;
    	L SrcSpan
    _ (CmmToken
    CmmT_Release) -> Int# -> PD HappyAbsSyn
    cont Int#
    39#;
    	L SrcSpan
    _ (CmmToken
    CmmT_SeqCst) -> Int# -> PD HappyAbsSyn
    cont Int#
    40#;
    	L SrcSpan
    _ (CmmToken
    CmmT_CLOSURE) -> Int# -> PD HappyAbsSyn
    cont Int#
    41#;
    	L SrcSpan
    _ (CmmToken
    CmmT_INFO_TABLE) -> Int# -> PD HappyAbsSyn
    cont Int#
    42#;
    	L SrcSpan
    _ (CmmToken
    CmmT_INFO_TABLE_RET) -> Int# -> PD HappyAbsSyn
    cont Int#
    43#;
    	L SrcSpan
    _ (CmmToken
    CmmT_INFO_TABLE_FUN) -> Int# -> PD HappyAbsSyn
    cont Int#
    44#;
    	L SrcSpan
    _ (CmmToken
    CmmT_INFO_TABLE_CONSTR) -> Int# -> PD HappyAbsSyn
    cont Int#
    45#;
    	L SrcSpan
    _ (CmmToken
    CmmT_INFO_TABLE_SELECTOR) -> Int# -> PD HappyAbsSyn
    cont Int#
    46#;
    	L SrcSpan
    _ (CmmToken
    CmmT_else) -> Int# -> PD HappyAbsSyn
    cont Int#
    47#;
    	L SrcSpan
    _ (CmmToken
    CmmT_export) -> Int# -> PD HappyAbsSyn
    cont Int#
    48#;
    	L SrcSpan
    _ (CmmToken
    CmmT_section) -> Int# -> PD HappyAbsSyn
    cont Int#
    49#;
    	L SrcSpan
    _ (CmmToken
    CmmT_goto) -> Int# -> PD HappyAbsSyn
    cont Int#
    50#;
    	L SrcSpan
    _ (CmmToken
    CmmT_if) -> Int# -> PD HappyAbsSyn
    cont Int#
    51#;
    	L SrcSpan
    _ (CmmToken
    CmmT_call) -> Int# -> PD HappyAbsSyn
    cont Int#
    52#;
    	L SrcSpan
    _ (CmmToken
    CmmT_jump) -> Int# -> PD HappyAbsSyn
    cont Int#
    53#;
    	L SrcSpan
    _ (CmmToken
    CmmT_foreign) -> Int# -> PD HappyAbsSyn
    cont Int#
    54#;
    	L SrcSpan
    _ (CmmToken
    CmmT_never) -> Int# -> PD HappyAbsSyn
    cont Int#
    55#;
    	L SrcSpan
    _ (CmmToken
    CmmT_prim) -> Int# -> PD HappyAbsSyn
    cont Int#
    56#;
    	L SrcSpan
    _ (CmmToken
    CmmT_reserve) -> Int# -> PD HappyAbsSyn
    cont Int#
    57#;
    	L SrcSpan
    _ (CmmToken
    CmmT_return) -> Int# -> PD HappyAbsSyn
    cont Int#
    58#;
    	L SrcSpan
    _ (CmmToken
    CmmT_returns) -> Int# -> PD HappyAbsSyn
    cont Int#
    59#;
    	L SrcSpan
    _ (CmmToken
    CmmT_import) -> Int# -> PD HappyAbsSyn
    cont Int#
    60#;
    	L SrcSpan
    _ (CmmToken
    CmmT_switch) -> Int# -> PD HappyAbsSyn
    cont Int#
    61#;
    	L SrcSpan
    _ (CmmToken
    CmmT_case) -> Int# -> PD HappyAbsSyn
    cont Int#
    62#;
    	L SrcSpan
    _ (CmmToken
    CmmT_default) -> Int# -> PD HappyAbsSyn
    cont Int#
    63#;
    	L SrcSpan
    _ (CmmToken
    CmmT_push) -> Int# -> PD HappyAbsSyn
    cont Int#
    64#;
    	L SrcSpan
    _ (CmmToken
    CmmT_unwind) -> Int# -> PD HappyAbsSyn
    cont Int#
    65#;
    	L SrcSpan
    _ (CmmToken
    CmmT_bits8) -> Int# -> PD HappyAbsSyn
    cont Int#
    66#;
    	L SrcSpan
    _ (CmmToken
    CmmT_bits16) -> Int# -> PD HappyAbsSyn
    cont Int#
    67#;
    	L SrcSpan
    _ (CmmToken
    CmmT_bits32) -> Int# -> PD HappyAbsSyn
    cont Int#
    68#;
    	L SrcSpan
    _ (CmmToken
    CmmT_bits64) -> Int# -> PD HappyAbsSyn
    cont Int#
    69#;
    	L SrcSpan
    _ (CmmToken
    CmmT_bits128) -> Int# -> PD HappyAbsSyn
    cont Int#
    70#;
    	L SrcSpan
    _ (CmmToken
    CmmT_bits256) -> Int# -> PD HappyAbsSyn
    cont Int#
    71#;
    	L SrcSpan
    _ (CmmToken
    CmmT_bits512) -> Int# -> PD HappyAbsSyn
    cont Int#
    72#;
    	L SrcSpan
    _ (CmmToken
    CmmT_float32) -> Int# -> PD HappyAbsSyn
    cont Int#
    73#;
    	L SrcSpan
    _ (CmmToken
    CmmT_float64) -> Int# -> PD HappyAbsSyn
    cont Int#
    74#;
    	L SrcSpan
    _ (CmmToken
    CmmT_gcptr) -> Int# -> PD HappyAbsSyn
    cont Int#
    75#;
    	L SrcSpan
    _ (CmmT_GlobalReg GlobalRegUse
    happy_dollar_dollar) -> Int# -> PD HappyAbsSyn
    cont Int#
    76#;
    	L SrcSpan
    _ (CmmT_Name      FastString
    happy_dollar_dollar) -> Int# -> PD HappyAbsSyn
    cont Int#
    77#;
    	L SrcSpan
    _ (CmmT_String    String
    happy_dollar_dollar) -> Int# -> PD HappyAbsSyn
    cont Int#
    78#;
    	L SrcSpan
    _ (CmmT_Int       Integer
    happy_dollar_dollar) -> Int# -> PD HappyAbsSyn
    cont Int#
    79#;
    	L SrcSpan
    _ (CmmT_Float     Rational
    happy_dollar_dollar) -> Int# -> PD HappyAbsSyn
    cont Int#
    80#;
    	Located CmmToken
    _ -> (Located CmmToken, [String]) -> PD HappyAbsSyn
    forall a. (Located CmmToken, [String]) -> PD a
    happyError' (Located CmmToken
    tk, [])
    	})

    happyError_ :: [String] -> Int# -> Located CmmToken -> PD a
    happyError_ [String]
    explist Int#
    81# Located CmmToken
    tk = (Located CmmToken, [String]) -> PD a
    forall a. (Located CmmToken, [String]) -> PD a
    happyError' (Located CmmToken
    tk, [String]
    explist)
    happyError_ [String]
    explist Int#
    _ Located CmmToken
    tk = (Located CmmToken, [String]) -> PD a
    forall a. (Located CmmToken, [String]) -> PD a
    happyError' (Located CmmToken
    tk, [String]
    explist)

    happyThen :: () => PD a -> (a -> PD b) -> PD b
    happyThen :: forall a b. PD a -> (a -> PD b) -> PD b
    happyThen = PD a -> (a -> PD b) -> PD b
    forall a b. PD a -> (a -> PD b) -> PD b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    (>>=)
    happyReturn :: () => a -> PD a
    happyReturn :: forall a. a -> PD a
    happyReturn = (a -> PD a
    forall a. a -> PD a
    forall (m :: * -> *) a. Monad m => a -> m a
    return)
    happyParse :: () => Happy_GHC_Exts.Int# -> PD (HappyAbsSyn )

    happyNewToken :: () => Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )

    happyDoAction :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )

    happyReduceArr :: () => Happy_Data_Array.Array Prelude.Int (Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn ))

    happyThen1 :: () => PD a -> (a -> PD b) -> PD b
    happyThen1 :: forall a b. PD a -> (a -> PD b) -> PD b
    happyThen1 = PD a -> (a -> PD b) -> PD b
    forall a b. PD a -> (a -> PD b) -> PD b
    happyThen
    happyReturn1 :: () => a -> PD a
    happyReturn1 :: forall a. a -> PD a
    happyReturn1 = a -> PD a
    forall a. a -> PD a
    happyReturn
    happyError' :: () => ((Located CmmToken), [Prelude.String]) -> PD a
    happyError' :: forall a. (Located CmmToken, [String]) -> PD a
    happyError' (Located CmmToken, [String])
    tk = (\(Located CmmToken
    tokens, [String]
    explist) -> PD a
    forall a. PD a
    happyError) (Located CmmToken, [String])
    tk
    cmmParse :: PD (CmmParse ())
    cmmParse = PD (CmmParse ())
    happySomeParser where
     happySomeParser :: PD (CmmParse ())
    happySomeParser = PD HappyAbsSyn
    -> (HappyAbsSyn -> PD (CmmParse ())) -> PD (CmmParse ())
    forall a b. PD a -> (a -> PD b) -> PD b
    happyThen (Int# -> PD HappyAbsSyn
    happyParse Int#
    0#) (\HappyAbsSyn
    x -> CmmParse () -> PD (CmmParse ())
    forall a. a -> PD a
    happyReturn (let {(HappyWrap4 CmmParse ()
    x') = HappyAbsSyn -> HappyWrap4
    happyOut4 HappyAbsSyn
    x} in CmmParse ()
    x'))

    happySeq :: a -> b -> b
    happySeq = a -> b -> b
    forall a b. a -> b -> b
    happyDoSeq

    section :: String -> SectionType
    section :: String -> SectionType
    section String
    "text"      = SectionType
    Text
    section String
    "data"      = SectionType
    Data
    section String
    "rodata"    = SectionType
    ReadOnlyData
    section String
    "relrodata" = SectionType
    RelocatableReadOnlyData
    section String
    "bss"       = SectionType
    UninitialisedData
    section String
    s           = String -> SectionType
    OtherSection String
    s

    mkString :: String -> CmmStatic
    mkString :: String -> CmmStatic
    mkString String
    s = ConstrDescription -> CmmStatic
    CmmString (String -> ConstrDescription
    BS8.pack String
    s)

    -- mkMachOp infers the type of the MachOp from the type of its first
    -- argument.  We assume that this is correct: for MachOps that don't have
    -- symmetrical args (e.g. shift ops), the first arg determines the type of
    -- the op.
    mkMachOp :: (Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
    mkMachOp :: (Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
    mkMachOp Width -> MachOp
    fn [CmmParse CmmExpr]
    args = do
      platform <- CmmParse Platform
    getPlatform
      arg_exprs <- sequence args
      return (CmmMachOp (fn (typeWidth (cmmExprType platform (head arg_exprs)))) arg_exprs)

    getLit :: CmmExpr -> CmmLit
    getLit :: CmmExpr -> CmmLit
    getLit (CmmLit CmmLit
    l) = CmmLit
    l
    getLit (CmmMachOp (MO_S_Neg Width
    _) [CmmLit (CmmInt Integer
    i Width
    r)])  = Integer -> Width -> CmmLit
    CmmInt (Integer -> Integer
    forall a. Num a => a -> a
    negate Integer
    i) Width
    r
    getLit CmmExpr
    _ = String -> CmmLit
    forall a. HasCallStack => String -> a
    panic String
    "invalid literal" -- TODO messy failure

    nameToMachOp :: FastString -> PD (Width -> MachOp)
    nameToMachOp :: FastString -> PD (Width -> MachOp)
    nameToMachOp FastString
    name =
      case UniqFM FastString (Width -> MachOp)
    -> FastString -> Maybe (Width -> MachOp)
    forall key elt. Uniquable key => UniqFM key elt -> key -> Maybe elt
    lookupUFM UniqFM FastString (Width -> MachOp)
    machOps FastString
    name of
            Maybe (Width -> MachOp)
    Nothing -> (SrcSpan -> MsgEnvelope PsMessage) -> PD (Width -> MachOp)
    forall a. (SrcSpan -> MsgEnvelope PsMessage) -> PD a
    failMsgPD ((SrcSpan -> MsgEnvelope PsMessage) -> PD (Width -> MachOp))
    -> (SrcSpan -> MsgEnvelope PsMessage) -> PD (Width -> MachOp)
    forall a b. (a -> b) -> a -> b
    $ \SrcSpan
    span -> SrcSpan -> PsMessage -> MsgEnvelope PsMessage
    forall e. Diagnostic e => SrcSpan -> e -> MsgEnvelope e
    mkPlainErrorMsgEnvelope SrcSpan
    span (PsMessage -> MsgEnvelope PsMessage)
    -> PsMessage -> MsgEnvelope PsMessage
    forall a b. (a -> b) -> a -> b
    $ CmmParserError -> PsMessage
    PsErrCmmParser (FastString -> CmmParserError
    CmmUnknownPrimitive FastString
    name)
            Just Width -> MachOp
    m  -> (Width -> MachOp) -> PD (Width -> MachOp)
    forall a. a -> PD a
    forall (m :: * -> *) a. Monad m => a -> m a
    return Width -> MachOp
    m

    exprOp :: FastString -> [CmmParse CmmExpr] -> PD (CmmParse CmmExpr)
    exprOp :: FastString -> [CmmParse CmmExpr] -> PD (CmmParse CmmExpr)
    exprOp FastString
    name [CmmParse CmmExpr]
    args_code = do
      pdc     <- PD PDConfig
    PD.getPDConfig
      let profile = PDConfig -> Profile
    PD.pdProfile PDConfig
    pdc
      let align_check = PDConfig -> Bool
    PD.pdSanitizeAlignment PDConfig
    pdc
      case lookupUFM (exprMacros profile align_check) name of
         Just [CmmExpr] -> CmmExpr
    f  -> CmmParse CmmExpr -> PD (CmmParse CmmExpr)
    forall a. a -> PD a
    forall (m :: * -> *) a. Monad m => a -> m a
    return (CmmParse CmmExpr -> PD (CmmParse CmmExpr))
    -> CmmParse CmmExpr -> PD (CmmParse CmmExpr)
    forall a b. (a -> b) -> a -> b
    $ do
            args <- [CmmParse CmmExpr] -> CmmParse [CmmExpr]
    forall (t :: * -> *) (m :: * -> *) a.
    (Traversable t, Monad m) =>
    t (m a) -> m (t a)
    forall (m :: * -> *) a. Monad m => [m a] -> m [a]
    sequence [CmmParse CmmExpr]
    args_code
            return (f args)
         Maybe ([CmmExpr] -> CmmExpr)
    Nothing -> do
            mo <- FastString -> PD (Width -> MachOp)
    nameToMachOp FastString
    name
            return $ mkMachOp mo args_code

    exprMacros :: Profile -> DoAlignSanitisation -> UniqFM FastString ([CmmExpr] -> CmmExpr)
    exprMacros :: Profile -> Bool -> UniqFM FastString ([CmmExpr] -> CmmExpr)
    exprMacros Profile
    profile Bool
    align_check = [(FastString, [CmmExpr] -> CmmExpr)]
    -> UniqFM FastString ([CmmExpr] -> CmmExpr)
    forall key elt. Uniquable key => [(key, elt)] -> UniqFM key elt
    listToUFM [
      ( String -> FastString
    fsLit String
    "ENTRY_CODE",   \ [CmmExpr
    x] -> Platform -> CmmExpr -> CmmExpr
    entryCode Platform
    platform CmmExpr
    x ),
      ( String -> FastString
    fsLit String
    "INFO_PTR",     \ [CmmExpr
    x] -> Platform -> Bool -> CmmExpr -> CmmExpr
    closureInfoPtr Platform
    platform Bool
    align_check CmmExpr
    x ),
      ( String -> FastString
    fsLit String
    "STD_INFO",     \ [CmmExpr
    x] -> Profile -> CmmExpr -> CmmExpr
    infoTable    Profile
    profile CmmExpr
    x ),
      ( String -> FastString
    fsLit String
    "FUN_INFO",     \ [CmmExpr
    x] -> Profile -> CmmExpr -> CmmExpr
    funInfoTable Profile
    profile CmmExpr
    x ),
      ( String -> FastString
    fsLit String
    "GET_ENTRY",    \ [CmmExpr
    x] -> Platform -> CmmExpr -> CmmExpr
    entryCode Platform
    platform   (Platform -> Bool -> CmmExpr -> CmmExpr
    closureInfoPtr Platform
    platform Bool
    align_check CmmExpr
    x) ),
      ( String -> FastString
    fsLit String
    "GET_STD_INFO", \ [CmmExpr
    x] -> Profile -> CmmExpr -> CmmExpr
    infoTable Profile
    profile    (Platform -> Bool -> CmmExpr -> CmmExpr
    closureInfoPtr Platform
    platform Bool
    align_check CmmExpr
    x) ),
      ( String -> FastString
    fsLit String
    "GET_FUN_INFO", \ [CmmExpr
    x] -> Profile -> CmmExpr -> CmmExpr
    funInfoTable Profile
    profile (Platform -> Bool -> CmmExpr -> CmmExpr
    closureInfoPtr Platform
    platform Bool
    align_check CmmExpr
    x) ),
      ( String -> FastString
    fsLit String
    "INFO_TYPE",    \ [CmmExpr
    x] -> Profile -> CmmExpr -> CmmExpr
    infoTableClosureType Profile
    profile CmmExpr
    x ),
      ( String -> FastString
    fsLit String
    "INFO_PTRS",    \ [CmmExpr
    x] -> Profile -> CmmExpr -> CmmExpr
    infoTablePtrs Profile
    profile CmmExpr
    x ),
      ( String -> FastString
    fsLit String
    "INFO_NPTRS",   \ [CmmExpr
    x] -> Profile -> CmmExpr -> CmmExpr
    infoTableNonPtrs Profile
    profile CmmExpr
    x )
      ]
      where
        platform :: Platform
    platform = Profile -> Platform
    profilePlatform Profile
    profile

    -- we understand a subset of C-- primitives:
    machOps :: UniqFM FastString (Width -> MachOp)
    machOps :: UniqFM FastString (Width -> MachOp)
    machOps = [(FastString, Width -> MachOp)]
    -> UniqFM FastString (Width -> MachOp)
    forall key elt. Uniquable key => [(key, elt)] -> UniqFM key elt
    listToUFM ([(FastString, Width -> MachOp)]
     -> UniqFM FastString (Width -> MachOp))
    -> [(FastString, Width -> MachOp)]
    -> UniqFM FastString (Width -> MachOp)
    forall a b. (a -> b) -> a -> b
    $
            ((String, Width -> MachOp) -> (FastString, Width -> MachOp))
    -> [(String, Width -> MachOp)] -> [(FastString, Width -> MachOp)]
    forall a b. (a -> b) -> [a] -> [b]
    map (\(String
    x, Width -> MachOp
    y) -> (String -> FastString
    mkFastString String
    x, Width -> MachOp
    y)) [
            ( String
    "add",        Width -> MachOp
    MO_Add ),
            ( String
    "sub",        Width -> MachOp
    MO_Sub ),
            ( String
    "eq",         Width -> MachOp
    MO_Eq ),
            ( String
    "ne",         Width -> MachOp
    MO_Ne ),
            ( String
    "mul",        Width -> MachOp
    MO_Mul ),
            ( String
    "mulmayoflo", Width -> MachOp
    MO_S_MulMayOflo ),
            ( String
    "neg",        Width -> MachOp
    MO_S_Neg ),
            ( String
    "quot",       Width -> MachOp
    MO_S_Quot ),
            ( String
    "rem",        Width -> MachOp
    MO_S_Rem ),
            ( String
    "divu",       Width -> MachOp
    MO_U_Quot ),
            ( String
    "modu",       Width -> MachOp
    MO_U_Rem ),

            ( String
    "ge",         Width -> MachOp
    MO_S_Ge ),
            ( String
    "le",         Width -> MachOp
    MO_S_Le ),
            ( String
    "gt",         Width -> MachOp
    MO_S_Gt ),
            ( String
    "lt",         Width -> MachOp
    MO_S_Lt ),

            ( String
    "geu",        Width -> MachOp
    MO_U_Ge ),
            ( String
    "leu",        Width -> MachOp
    MO_U_Le ),
            ( String
    "gtu",        Width -> MachOp
    MO_U_Gt ),
            ( String
    "ltu",        Width -> MachOp
    MO_U_Lt ),

            ( String
    "and",        Width -> MachOp
    MO_And ),
            ( String
    "or",         Width -> MachOp
    MO_Or ),
            ( String
    "xor",        Width -> MachOp
    MO_Xor ),
            ( String
    "com",        Width -> MachOp
    MO_Not ),
            ( String
    "shl",        Width -> MachOp
    MO_Shl ),
            ( String
    "shrl",       Width -> MachOp
    MO_U_Shr ),
            ( String
    "shra",       Width -> MachOp
    MO_S_Shr ),

            ( String
    "fadd",       Width -> MachOp
    MO_F_Add ),
            ( String
    "fsub",       Width -> MachOp
    MO_F_Sub ),
            ( String
    "fneg",       Width -> MachOp
    MO_F_Neg ),
            ( String
    "fmul",       Width -> MachOp
    MO_F_Mul ),
            ( String
    "fquot",      Width -> MachOp
    MO_F_Quot ),

            ( String
    "fmadd" ,     FMASign -> Width -> MachOp
    MO_FMA FMASign
    FMAdd  ),
            ( String
    "fmsub" ,     FMASign -> Width -> MachOp
    MO_FMA FMASign
    FMSub  ),
            ( String
    "fnmadd",     FMASign -> Width -> MachOp
    MO_FMA FMASign
    FNMAdd ),
            ( String
    "fnmsub",     FMASign -> Width -> MachOp
    MO_FMA FMASign
    FNMSub ),

            ( String
    "feq",        Width -> MachOp
    MO_F_Eq ),
            ( String
    "fne",        Width -> MachOp
    MO_F_Ne ),
            ( String
    "fge",        Width -> MachOp
    MO_F_Ge ),
            ( String
    "fle",        Width -> MachOp
    MO_F_Le ),
            ( String
    "fgt",        Width -> MachOp
    MO_F_Gt ),
            ( String
    "flt",        Width -> MachOp
    MO_F_Lt ),

            ( String
    "lobits8",  (Width -> Width -> MachOp) -> Width -> Width -> MachOp
    forall a b c. (a -> b -> c) -> b -> a -> c
    flip Width -> Width -> MachOp
    MO_UU_Conv Width
    W8  ),
            ( String
    "lobits16", (Width -> Width -> MachOp) -> Width -> Width -> MachOp
    forall a b c. (a -> b -> c) -> b -> a -> c
    flip Width -> Width -> MachOp
    MO_UU_Conv Width
    W16 ),
            ( String
    "lobits32", (Width -> Width -> MachOp) -> Width -> Width -> MachOp
    forall a b c. (a -> b -> c) -> b -> a -> c
    flip Width -> Width -> MachOp
    MO_UU_Conv Width
    W32 ),
            ( String
    "lobits64", (Width -> Width -> MachOp) -> Width -> Width -> MachOp
    forall a b c. (a -> b -> c) -> b -> a -> c
    flip Width -> Width -> MachOp
    MO_UU_Conv Width
    W64 ),

            ( String
    "zx16",     (Width -> Width -> MachOp) -> Width -> Width -> MachOp
    forall a b c. (a -> b -> c) -> b -> a -> c
    flip Width -> Width -> MachOp
    MO_UU_Conv Width
    W16 ),
            ( String
    "zx32",     (Width -> Width -> MachOp) -> Width -> Width -> MachOp
    forall a b c. (a -> b -> c) -> b -> a -> c
    flip Width -> Width -> MachOp
    MO_UU_Conv Width
    W32 ),
            ( String
    "zx64",     (Width -> Width -> MachOp) -> Width -> Width -> MachOp
    forall a b c. (a -> b -> c) -> b -> a -> c
    flip Width -> Width -> MachOp
    MO_UU_Conv Width
    W64 ),

            ( String
    "sx16",     (Width -> Width -> MachOp) -> Width -> Width -> MachOp
    forall a b c. (a -> b -> c) -> b -> a -> c
    flip Width -> Width -> MachOp
    MO_SS_Conv Width
    W16 ),
            ( String
    "sx32",     (Width -> Width -> MachOp) -> Width -> Width -> MachOp
    forall a b c. (a -> b -> c) -> b -> a -> c
    flip Width -> Width -> MachOp
    MO_SS_Conv Width
    W32 ),
            ( String
    "sx64",     (Width -> Width -> MachOp) -> Width -> Width -> MachOp
    forall a b c. (a -> b -> c) -> b -> a -> c
    flip Width -> Width -> MachOp
    MO_SS_Conv Width
    W64 ),

            ( String
    "f2f32",    (Width -> Width -> MachOp) -> Width -> Width -> MachOp
    forall a b c. (a -> b -> c) -> b -> a -> c
    flip Width -> Width -> MachOp
    MO_FF_Conv Width
    W32 ),  -- TODO; rounding mode
            ( String
    "f2f64",    (Width -> Width -> MachOp) -> Width -> Width -> MachOp
    forall a b c. (a -> b -> c) -> b -> a -> c
    flip Width -> Width -> MachOp
    MO_FF_Conv Width
    W64 ),  -- TODO; rounding mode
            ( String
    "f2i8",     (Width -> Width -> MachOp) -> Width -> Width -> MachOp
    forall a b c. (a -> b -> c) -> b -> a -> c
    flip Width -> Width -> MachOp
    MO_FS_Conv Width
    W8 ),
            ( String
    "f2i16",    (Width -> Width -> MachOp) -> Width -> Width -> MachOp
    forall a b c. (a -> b -> c) -> b -> a -> c
    flip Width -> Width -> MachOp
    MO_FS_Conv Width
    W16 ),
            ( String
    "f2i32",    (Width -> Width -> MachOp) -> Width -> Width -> MachOp
    forall a b c. (a -> b -> c) -> b -> a -> c
    flip Width -> Width -> MachOp
    MO_FS_Conv Width
    W32 ),
            ( String
    "f2i64",    (Width -> Width -> MachOp) -> Width -> Width -> MachOp
    forall a b c. (a -> b -> c) -> b -> a -> c
    flip Width -> Width -> MachOp
    MO_FS_Conv Width
    W64 ),
            ( String
    "i2f32",    (Width -> Width -> MachOp) -> Width -> Width -> MachOp
    forall a b c. (a -> b -> c) -> b -> a -> c
    flip Width -> Width -> MachOp
    MO_SF_Conv Width
    W32 ),
            ( String
    "i2f64",    (Width -> Width -> MachOp) -> Width -> Width -> MachOp
    forall a b c. (a -> b -> c) -> b -> a -> c
    flip Width -> Width -> MachOp
    MO_SF_Conv Width
    W64 )
            ]

    callishMachOps :: Platform -> UniqFM FastString ([CmmExpr] -> (CallishMachOp, [CmmExpr]))
    callishMachOps :: Platform
    -> UniqFM FastString ([CmmExpr] -> (CallishMachOp, [CmmExpr]))
    callishMachOps Platform
    platform = [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
    -> UniqFM FastString ([CmmExpr] -> (CallishMachOp, [CmmExpr]))
    forall key elt. Uniquable key => [(key, elt)] -> UniqFM key elt
    listToUFM ([(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
     -> UniqFM FastString ([CmmExpr] -> (CallishMachOp, [CmmExpr])))
    -> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
    -> UniqFM FastString ([CmmExpr] -> (CallishMachOp, [CmmExpr]))
    forall a b. (a -> b) -> a -> b
    $
            ((String, [CmmExpr] -> (CallishMachOp, [CmmExpr]))
     -> (FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr])))
    -> [(String, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
    -> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
    forall a b. (a -> b) -> [a] -> [b]
    map (\(String
    x, [CmmExpr] -> (CallishMachOp, [CmmExpr])
    y) -> (String -> FastString
    mkFastString String
    x, [CmmExpr] -> (CallishMachOp, [CmmExpr])
    y)) [

            ( String
    "pow64f", (CallishMachOp
    MO_F64_Pwr,) ),
            ( String
    "sin64f", (CallishMachOp
    MO_F64_Sin,) ),
            ( String
    "cos64f", (CallishMachOp
    MO_F64_Cos,) ),
            ( String
    "tan64f", (CallishMachOp
    MO_F64_Tan,) ),
            ( String
    "sinh64f", (CallishMachOp
    MO_F64_Sinh,) ),
            ( String
    "cosh64f", (CallishMachOp
    MO_F64_Cosh,) ),
            ( String
    "tanh64f", (CallishMachOp
    MO_F64_Tanh,) ),
            ( String
    "asin64f", (CallishMachOp
    MO_F64_Asin,) ),
            ( String
    "acos64f", (CallishMachOp
    MO_F64_Acos,) ),
            ( String
    "atan64f", (CallishMachOp
    MO_F64_Atan,) ),
            ( String
    "asinh64f", (CallishMachOp
    MO_F64_Asinh,) ),
            ( String
    "acosh64f", (CallishMachOp
    MO_F64_Acosh,) ),
            ( String
    "log64f", (CallishMachOp
    MO_F64_Log,) ),
            ( String
    "log1p64f", (CallishMachOp
    MO_F64_Log1P,) ),
            ( String
    "exp64f", (CallishMachOp
    MO_F64_Exp,) ),
            ( String
    "expM164f", (CallishMachOp
    MO_F64_ExpM1,) ),
            ( String
    "fabs64f", (CallishMachOp
    MO_F64_Fabs,) ),
            ( String
    "sqrt64f", (CallishMachOp
    MO_F64_Sqrt,) ),

            ( String
    "pow32f", (CallishMachOp
    MO_F32_Pwr,) ),
            ( String
    "sin32f", (CallishMachOp
    MO_F32_Sin,) ),
            ( String
    "cos32f", (CallishMachOp
    MO_F32_Cos,) ),
            ( String
    "tan32f", (CallishMachOp
    MO_F32_Tan,) ),
            ( String
    "sinh32f", (CallishMachOp
    MO_F32_Sinh,) ),
            ( String
    "cosh32f", (CallishMachOp
    MO_F32_Cosh,) ),
            ( String
    "tanh32f", (CallishMachOp
    MO_F32_Tanh,) ),
            ( String
    "asin32f", (CallishMachOp
    MO_F32_Asin,) ),
            ( String
    "acos32f", (CallishMachOp
    MO_F32_Acos,) ),
            ( String
    "atan32f", (CallishMachOp
    MO_F32_Atan,) ),
            ( String
    "asinh32f", (CallishMachOp
    MO_F32_Asinh,) ),
            ( String
    "acosh32f", (CallishMachOp
    MO_F32_Acosh,) ),
            ( String
    "log32f", (CallishMachOp
    MO_F32_Log,) ),
            ( String
    "log1p32f", (CallishMachOp
    MO_F32_Log1P,) ),
            ( String
    "exp32f", (CallishMachOp
    MO_F32_Exp,) ),
            ( String
    "expM132f", (CallishMachOp
    MO_F32_ExpM1,) ),
            ( String
    "fabs32f", (CallishMachOp
    MO_F32_Fabs,) ),
            ( String
    "sqrt32f", (CallishMachOp
    MO_F32_Sqrt,) ),

            -- TODO: It would be nice to rename the following operations to
            -- acquire_fence and release_fence. Be aware that there'll be issues
            -- with an overlapping token ('acquire') in the lexer.
            ( String
    "fence_acquire", (CallishMachOp
    MO_AcquireFence,)),
            ( String
    "fence_release", (CallishMachOp
    MO_ReleaseFence,)),
            ( String
    "fence_seq_cst", (CallishMachOp
    MO_SeqCstFence,)),

            ( String
    "memcpy", (ByteOff -> CallishMachOp)
    -> [CmmExpr] -> (CallishMachOp, [CmmExpr])
    memcpyLikeTweakArgs ByteOff -> CallishMachOp
    MO_Memcpy ),
            ( String
    "memset", (ByteOff -> CallishMachOp)
    -> [CmmExpr] -> (CallishMachOp, [CmmExpr])
    memcpyLikeTweakArgs ByteOff -> CallishMachOp
    MO_Memset ),
            ( String
    "memmove", (ByteOff -> CallishMachOp)
    -> [CmmExpr] -> (CallishMachOp, [CmmExpr])
    memcpyLikeTweakArgs ByteOff -> CallishMachOp
    MO_Memmove ),
            ( String
    "memcmp", (ByteOff -> CallishMachOp)
    -> [CmmExpr] -> (CallishMachOp, [CmmExpr])
    memcpyLikeTweakArgs ByteOff -> CallishMachOp
    MO_Memcmp ),

            ( String
    "suspendThread", (CallishMachOp
    MO_SuspendThread,) ),
            ( String
    "resumeThread",  (CallishMachOp
    MO_ResumeThread,) ),

            ( String
    "prefetch0", (ByteOff -> CallishMachOp
    MO_Prefetch_Data ByteOff
    0,)),
            ( String
    "prefetch1", (ByteOff -> CallishMachOp
    MO_Prefetch_Data ByteOff
    1,)),
            ( String
    "prefetch2", (ByteOff -> CallishMachOp
    MO_Prefetch_Data ByteOff
    2,)),
            ( String
    "prefetch3", (ByteOff -> CallishMachOp
    MO_Prefetch_Data ByteOff
    3,))
        ] [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
    -> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
    -> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
    forall a. [a] -> [a] -> [a]
    ++ [[(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]]
    -> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
    forall (t :: * -> *) a. Foldable t => t [a] -> [a]
    concat
        [ String
    -> (Width -> CallishMachOp)
    -> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
    forall a.
    String
    -> (Width -> CallishMachOp)
    -> [(FastString, a -> (CallishMachOp, a))]
    allWidths String
    "popcnt" Width -> CallishMachOp
    MO_PopCnt
        , String
    -> (Width -> CallishMachOp)
    -> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
    forall a.
    String
    -> (Width -> CallishMachOp)
    -> [(FastString, a -> (CallishMachOp, a))]
    allWidths String
    "pdep" Width -> CallishMachOp
    MO_Pdep
        , String
    -> (Width -> CallishMachOp)
    -> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
    forall a.
    String
    -> (Width -> CallishMachOp)
    -> [(FastString, a -> (CallishMachOp, a))]
    allWidths String
    "pext" Width -> CallishMachOp
    MO_Pext
        , String
    -> (Width -> CallishMachOp)
    -> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
    forall a.
    String
    -> (Width -> CallishMachOp)
    -> [(FastString, a -> (CallishMachOp, a))]
    allWidths String
    "cmpxchg" Width -> CallishMachOp
    MO_Cmpxchg
        , String
    -> (Width -> CallishMachOp)
    -> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
    forall a.
    String
    -> (Width -> CallishMachOp)
    -> [(FastString, a -> (CallishMachOp, a))]
    allWidths String
    "xchg" Width -> CallishMachOp
    MO_Xchg
        , String
    -> (Width -> CallishMachOp)
    -> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
    forall a.
    String
    -> (Width -> CallishMachOp)
    -> [(FastString, a -> (CallishMachOp, a))]
    allWidths String
    "load_relaxed" (\Width
    w -> Width -> MemoryOrdering -> CallishMachOp
    MO_AtomicRead Width
    w MemoryOrdering
    MemOrderAcquire)
        , String
    -> (Width -> CallishMachOp)
    -> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
    forall a.
    String
    -> (Width -> CallishMachOp)
    -> [(FastString, a -> (CallishMachOp, a))]
    allWidths String
    "load_acquire" (\Width
    w -> Width -> MemoryOrdering -> CallishMachOp
    MO_AtomicRead Width
    w MemoryOrdering
    MemOrderAcquire)
        , String
    -> (Width -> CallishMachOp)
    -> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
    forall a.
    String
    -> (Width -> CallishMachOp)
    -> [(FastString, a -> (CallishMachOp, a))]
    allWidths String
    "load_seqcst" (\Width
    w -> Width -> MemoryOrdering -> CallishMachOp
    MO_AtomicRead Width
    w MemoryOrdering
    MemOrderSeqCst)
        , String
    -> (Width -> CallishMachOp)
    -> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
    forall a.
    String
    -> (Width -> CallishMachOp)
    -> [(FastString, a -> (CallishMachOp, a))]
    allWidths String
    "store_release" (\Width
    w -> Width -> MemoryOrdering -> CallishMachOp
    MO_AtomicWrite Width
    w MemoryOrdering
    MemOrderRelease)
        , String
    -> (Width -> CallishMachOp)
    -> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
    forall a.
    String
    -> (Width -> CallishMachOp)
    -> [(FastString, a -> (CallishMachOp, a))]
    allWidths String
    "store_seqcst" (\Width
    w -> Width -> MemoryOrdering -> CallishMachOp
    MO_AtomicWrite Width
    w MemoryOrdering
    MemOrderSeqCst)
        , String
    -> (Width -> CallishMachOp)
    -> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
    forall a.
    String
    -> (Width -> CallishMachOp)
    -> [(FastString, a -> (CallishMachOp, a))]
    allWidths String
    "fetch_add" (\Width
    w -> Width -> AtomicMachOp -> CallishMachOp
    MO_AtomicRMW Width
    w AtomicMachOp
    AMO_Add)
        , String
    -> (Width -> CallishMachOp)
    -> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
    forall a.
    String
    -> (Width -> CallishMachOp)
    -> [(FastString, a -> (CallishMachOp, a))]
    allWidths String
    "fetch_sub" (\Width
    w -> Width -> AtomicMachOp -> CallishMachOp
    MO_AtomicRMW Width
    w AtomicMachOp
    AMO_Sub)
        , String
    -> (Width -> CallishMachOp)
    -> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
    forall a.
    String
    -> (Width -> CallishMachOp)
    -> [(FastString, a -> (CallishMachOp, a))]
    allWidths String
    "fetch_and" (\Width
    w -> Width -> AtomicMachOp -> CallishMachOp
    MO_AtomicRMW Width
    w AtomicMachOp
    AMO_And)
        , String
    -> (Width -> CallishMachOp)
    -> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
    forall a.
    String
    -> (Width -> CallishMachOp)
    -> [(FastString, a -> (CallishMachOp, a))]
    allWidths String
    "fetch_nand" (\Width
    w -> Width -> AtomicMachOp -> CallishMachOp
    MO_AtomicRMW Width
    w AtomicMachOp
    AMO_Nand)
        , String
    -> (Width -> CallishMachOp)
    -> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
    forall a.
    String
    -> (Width -> CallishMachOp)
    -> [(FastString, a -> (CallishMachOp, a))]
    allWidths String
    "fetch_or" (\Width
    w -> Width -> AtomicMachOp -> CallishMachOp
    MO_AtomicRMW Width
    w AtomicMachOp
    AMO_Or)
        , String
    -> (Width -> CallishMachOp)
    -> [(FastString, [CmmExpr] -> (CallishMachOp, [CmmExpr]))]
    forall a.
    String
    -> (Width -> CallishMachOp)
    -> [(FastString, a -> (CallishMachOp, a))]
    allWidths String
    "fetch_xor" (\Width
    w -> Width -> AtomicMachOp -> CallishMachOp
    MO_AtomicRMW Width
    w AtomicMachOp
    AMO_Xor)
        ]
      where
        allWidths
            :: String
            -> (Width -> CallishMachOp)
            -> [(FastString, a -> (CallishMachOp, a))]
        allWidths :: forall a.
    String
    -> (Width -> CallishMachOp)
    -> [(FastString, a -> (CallishMachOp, a))]
    allWidths String
    name Width -> CallishMachOp
    f =
            [ (String -> FastString
    mkFastString (String -> FastString) -> String -> FastString
    forall a b. (a -> b) -> a -> b
    $ String
    name String -> String -> String
    forall a. [a] -> [a] -> [a]
    ++ ByteOff -> String
    forall a. Show a => a -> String
    show (Width -> ByteOff
    widthInBits Width
    w), (Width -> CallishMachOp
    f Width
    w,))
            | Width
    w <- [Width
    W8, Width
    W16, Width
    W32, Width
    W64]
            ]

        memcpyLikeTweakArgs :: (Int -> CallishMachOp) -> [CmmExpr] -> (CallishMachOp, [CmmExpr])
        memcpyLikeTweakArgs :: (ByteOff -> CallishMachOp)
    -> [CmmExpr] -> (CallishMachOp, [CmmExpr])
    memcpyLikeTweakArgs ByteOff -> CallishMachOp
    op [] = String -> (CallishMachOp, [CmmExpr])
    forall a. HasCallStack => String -> a
    pgmError String
    "memcpy-like function requires at least one argument"
        memcpyLikeTweakArgs ByteOff -> CallishMachOp
    op args :: [CmmExpr]
    args@(CmmExpr
    _:[CmmExpr]
    _) =
            (ByteOff -> CallishMachOp
    op ByteOff
    align, [CmmExpr]
    args')
          where
            args' :: [CmmExpr]
    args' = [CmmExpr] -> [CmmExpr]
    forall a. HasCallStack => [a] -> [a]
    init [CmmExpr]
    args
            align :: ByteOff
    align = case [CmmExpr] -> CmmExpr
    forall a. HasCallStack => [a] -> a
    last [CmmExpr]
    args of
              CmmLit (CmmInt Integer
    alignInteger Width
    _) -> Integer -> ByteOff
    forall a. Num a => Integer -> a
    fromInteger Integer
    alignInteger
              CmmExpr
    e -> String -> SDoc -> ByteOff
    forall a. String -> SDoc -> a
    pgmErrorDoc String
    "Non-constant alignment in memcpy-like function:" (Platform -> CmmExpr -> SDoc
    forall env a. OutputableP env a => env -> a -> SDoc
    pdoc Platform
    platform CmmExpr
    e)
            -- The alignment of memcpy-ish operations must be a
            -- compile-time constant. We verify this here, passing it around
            -- in the MO_* constructor. In order to do this, however, we
            -- must intercept the arguments in primCall.

    parseSafety :: String -> PD Safety
    parseSafety :: String -> PD Safety
    parseSafety String
    "safe"   = Safety -> PD Safety
    forall a. a -> PD a
    forall (m :: * -> *) a. Monad m => a -> m a
    return Safety
    PlaySafe
    parseSafety String
    "unsafe" = Safety -> PD Safety
    forall a. a -> PD a
    forall (m :: * -> *) a. Monad m => a -> m a
    return Safety
    PlayRisky
    parseSafety String
    "interruptible" = Safety -> PD Safety
    forall a. a -> PD a
    forall (m :: * -> *) a. Monad m => a -> m a
    return Safety
    PlayInterruptible
    parseSafety String
    str      = (SrcSpan -> MsgEnvelope PsMessage) -> PD Safety
    forall a. (SrcSpan -> MsgEnvelope PsMessage) -> PD a
    failMsgPD ((SrcSpan -> MsgEnvelope PsMessage) -> PD Safety)
    -> (SrcSpan -> MsgEnvelope PsMessage) -> PD Safety
    forall a b. (a -> b) -> a -> b
    $ \SrcSpan
    span -> SrcSpan -> PsMessage -> MsgEnvelope PsMessage
    forall e. Diagnostic e => SrcSpan -> e -> MsgEnvelope e
    mkPlainErrorMsgEnvelope SrcSpan
    span (PsMessage -> MsgEnvelope PsMessage)
    -> PsMessage -> MsgEnvelope PsMessage
    forall a b. (a -> b) -> a -> b
    $
                                                  CmmParserError -> PsMessage
    PsErrCmmParser (String -> CmmParserError
    CmmUnrecognisedSafety String
    str)

    parseCmmHint :: String -> PD ForeignHint
    parseCmmHint :: String -> PD ForeignHint
    parseCmmHint String
    "ptr"    = ForeignHint -> PD ForeignHint
    forall a. a -> PD a
    forall (m :: * -> *) a. Monad m => a -> m a
    return ForeignHint
    AddrHint
    parseCmmHint String
    "signed" = ForeignHint -> PD ForeignHint
    forall a. a -> PD a
    forall (m :: * -> *) a. Monad m => a -> m a
    return ForeignHint
    SignedHint
    parseCmmHint String
    str      = (SrcSpan -> MsgEnvelope PsMessage) -> PD ForeignHint
    forall a. (SrcSpan -> MsgEnvelope PsMessage) -> PD a
    failMsgPD ((SrcSpan -> MsgEnvelope PsMessage) -> PD ForeignHint)
    -> (SrcSpan -> MsgEnvelope PsMessage) -> PD ForeignHint
    forall a b. (a -> b) -> a -> b
    $ \SrcSpan
    span -> SrcSpan -> PsMessage -> MsgEnvelope PsMessage
    forall e. Diagnostic e => SrcSpan -> e -> MsgEnvelope e
    mkPlainErrorMsgEnvelope SrcSpan
    span (PsMessage -> MsgEnvelope PsMessage)
    -> PsMessage -> MsgEnvelope PsMessage
    forall a b. (a -> b) -> a -> b
    $
                                                   CmmParserError -> PsMessage
    PsErrCmmParser (String -> CmmParserError
    CmmUnrecognisedHint String
    str)

    -- labels are always pointers, so we might as well infer the hint
    inferCmmHint :: CmmExpr -> ForeignHint
    inferCmmHint :: CmmExpr -> ForeignHint
    inferCmmHint (CmmLit (CmmLabel CLabel
    _))
      = ForeignHint
    AddrHint
    inferCmmHint (CmmReg (CmmGlobal GlobalRegUse
    reg))
      | GlobalRegUse -> Bool
    isPtrGlobalRegUse GlobalRegUse
    reg
      = ForeignHint
    AddrHint
    inferCmmHint CmmExpr
    _
      = ForeignHint
    NoHint

    isPtrGlobalRegUse :: GlobalRegUse -> Bool
    isPtrGlobalRegUse :: GlobalRegUse -> Bool
    isPtrGlobalRegUse (GlobalRegUse GlobalReg
    reg CmmType
    ty)
      | VanillaReg {} <- GlobalReg
    reg
      , CmmType -> Bool
    isGcPtrType CmmType
    ty
      = Bool
    True
      | Bool
    otherwise
      = GlobalReg -> Bool
    go GlobalReg
    reg
      where
        go :: GlobalReg -> Bool
    go GlobalReg
    Sp             = Bool
    True
        go GlobalReg
    SpLim          = Bool
    True
        go GlobalReg
    Hp             = Bool
    True
        go GlobalReg
    HpLim          = Bool
    True
        go GlobalReg
    CCCS           = Bool
    True
        go GlobalReg
    CurrentTSO     = Bool
    True
        go GlobalReg
    CurrentNursery = Bool
    True
        go GlobalReg
    _              = Bool
    False

    happyError :: PD a
    happyError :: forall a. PD a
    happyError = (PDConfig -> HomeUnit -> PState -> ParseResult a) -> PD a
    forall a. (PDConfig -> HomeUnit -> PState -> ParseResult a) -> PD a
    PD ((PDConfig -> HomeUnit -> PState -> ParseResult a) -> PD a)
    -> (PDConfig -> HomeUnit -> PState -> ParseResult a) -> PD a
    forall a b. (a -> b) -> a -> b
    $ \PDConfig
    _ HomeUnit
    _ PState
    s -> P a -> PState -> ParseResult a
    forall a. P a -> PState -> ParseResult a
    unP P a
    forall a. P a
    srcParseFail PState
    s

    -- -----------------------------------------------------------------------------
    -- Statement-level macros

    stmtMacro :: FastString -> [CmmParse CmmExpr] -> PD (CmmParse ())
    stmtMacro :: FastString -> [CmmParse CmmExpr] -> PD (CmmParse ())
    stmtMacro FastString
    fun [CmmParse CmmExpr]
    args_code = do
      case UniqFM FastString ([CmmExpr] -> FCode ())
    -> FastString -> Maybe ([CmmExpr] -> FCode ())
    forall key elt. Uniquable key => UniqFM key elt -> key -> Maybe elt
    lookupUFM UniqFM FastString ([CmmExpr] -> FCode ())
    stmtMacros FastString
    fun of
        Maybe ([CmmExpr] -> FCode ())
    Nothing -> (SrcSpan -> MsgEnvelope PsMessage) -> PD (CmmParse ())
    forall a. (SrcSpan -> MsgEnvelope PsMessage) -> PD a
    failMsgPD ((SrcSpan -> MsgEnvelope PsMessage) -> PD (CmmParse ()))
    -> (SrcSpan -> MsgEnvelope PsMessage) -> PD (CmmParse ())
    forall a b. (a -> b) -> a -> b
    $ \SrcSpan
    span -> SrcSpan -> PsMessage -> MsgEnvelope PsMessage
    forall e. Diagnostic e => SrcSpan -> e -> MsgEnvelope e
    mkPlainErrorMsgEnvelope SrcSpan
    span (PsMessage -> MsgEnvelope PsMessage)
    -> PsMessage -> MsgEnvelope PsMessage
    forall a b. (a -> b) -> a -> b
    $ CmmParserError -> PsMessage
    PsErrCmmParser (FastString -> CmmParserError
    CmmUnknownMacro FastString
    fun)
        Just [CmmExpr] -> FCode ()
    fcode -> CmmParse () -> PD (CmmParse ())
    forall a. a -> PD a
    forall (m :: * -> *) a. Monad m => a -> m a
    return (CmmParse () -> PD (CmmParse ()))
    -> CmmParse () -> PD (CmmParse ())
    forall a b. (a -> b) -> a -> b
    $ do
            args <- [CmmParse CmmExpr] -> CmmParse [CmmExpr]
    forall (t :: * -> *) (m :: * -> *) a.
    (Traversable t, Monad m) =>
    t (m a) -> m (t a)
    forall (m :: * -> *) a. Monad m => [m a] -> m [a]
    sequence [CmmParse CmmExpr]
    args_code
            code (fcode args)

    stmtMacros :: UniqFM FastString ([CmmExpr] -> FCode ())
    stmtMacros :: UniqFM FastString ([CmmExpr] -> FCode ())
    stmtMacros = [(FastString, [CmmExpr] -> FCode ())]
    -> UniqFM FastString ([CmmExpr] -> FCode ())
    forall key elt. Uniquable key => [(key, elt)] -> UniqFM key elt
    listToUFM [
      ( String -> FastString
    fsLit String
    "CCS_ALLOC",             \[CmmExpr
    words,CmmExpr
    ccs]  -> CmmExpr -> CmmExpr -> FCode ()
    profAlloc CmmExpr
    words CmmExpr
    ccs ),
      ( String -> FastString
    fsLit String
    "ENTER_CCS_THUNK",       \[CmmExpr
    e] -> CmmExpr -> FCode ()
    enterCostCentreThunk CmmExpr
    e ),

      ( String -> FastString
    fsLit String
    "CLOSE_NURSERY",         \[]  -> FCode ()
    emitCloseNursery ),
      ( String -> FastString
    fsLit String
    "OPEN_NURSERY",          \[]  -> FCode ()
    emitOpenNursery ),

      -- completely generic heap and stack checks, for use in high-level cmm.
      ( String -> FastString
    fsLit String
    "HP_CHK_GEN",            \[CmmExpr
    bytes] ->
                                          Maybe CmmExpr -> Maybe CmmExpr -> FCode ()
    heapStackCheckGen Maybe CmmExpr
    forall a. Maybe a
    Nothing (CmmExpr -> Maybe CmmExpr
    forall a. a -> Maybe a
    Just CmmExpr
    bytes) ),
      ( String -> FastString
    fsLit String
    "STK_CHK_GEN",           \[] ->
                                          Maybe CmmExpr -> Maybe CmmExpr -> FCode ()
    heapStackCheckGen (CmmExpr -> Maybe CmmExpr
    forall a. a -> Maybe a
    Just (CmmLit -> CmmExpr
    CmmLit CmmLit
    CmmHighStackMark)) Maybe CmmExpr
    forall a. Maybe a
    Nothing ),

      -- A stack check for a fixed amount of stack.  Sounds a bit strange, but
      -- we use the stack for a bit of temporary storage in a couple of primops
      ( String -> FastString
    fsLit String
    "STK_CHK_GEN_N",         \[CmmExpr
    bytes] ->
                                          Maybe CmmExpr -> Maybe CmmExpr -> FCode ()
    heapStackCheckGen (CmmExpr -> Maybe CmmExpr
    forall a. a -> Maybe a
    Just CmmExpr
    bytes) Maybe CmmExpr
    forall a. Maybe a
    Nothing ),

      -- A stack check on entry to a thunk, where the argument is the thunk pointer.
      ( String -> FastString
    fsLit String
    "STK_CHK_NP"   ,         \[CmmExpr
    node] -> Bool -> CmmExpr -> ByteOff -> [LocalReg] -> FCode () -> FCode ()
    entryHeapCheck' Bool
    False CmmExpr
    node ByteOff
    0 [] (() -> FCode ()
    forall a. a -> FCode a
    forall (m :: * -> *) a. Monad m => a -> m a
    return ())),

      ( String -> FastString
    fsLit String
    "LOAD_THREAD_STATE",     \[] -> FCode ()
    emitLoadThreadState ),
      ( String -> FastString
    fsLit String
    "SAVE_THREAD_STATE",     \[] -> FCode ()
    emitSaveThreadState ),

      ( String -> FastString
    fsLit String
    "SAVE_REGS",             \[] -> FCode ()
    emitSaveRegs ),
      ( String -> FastString
    fsLit String
    "RESTORE_REGS",          \[] -> FCode ()
    emitRestoreRegs ),

      ( String -> FastString
    fsLit String
    "PUSH_ARG_REGS",         \[CmmExpr
    live_regs] -> CmmExpr -> FCode ()
    emitPushArgRegs CmmExpr
    live_regs ),
      ( String -> FastString
    fsLit String
    "POP_ARG_REGS",          \[CmmExpr
    live_regs] -> CmmExpr -> FCode ()
    emitPopArgRegs CmmExpr
    live_regs ),

      ( String -> FastString
    fsLit String
    "LDV_ENTER",             \[CmmExpr
    e] -> CmmExpr -> FCode ()
    ldvEnter CmmExpr
    e ),
      ( String -> FastString
    fsLit String
    "PROF_HEADER_CREATE",     \[CmmExpr
    e] -> CmmExpr -> FCode ()
    profHeaderCreate CmmExpr
    e ),

      ( String -> FastString
    fsLit String
    "PUSH_UPD_FRAME",        \[CmmExpr
    sp,CmmExpr
    e] -> CmmExpr -> CmmExpr -> FCode ()
    emitPushUpdateFrame CmmExpr
    sp CmmExpr
    e ),
      ( String -> FastString
    fsLit String
    "SET_HDR",               \[CmmExpr
    ptr,CmmExpr
    info,CmmExpr
    ccs] ->
                                            CmmExpr -> CmmExpr -> CmmExpr -> FCode ()
    emitSetDynHdr CmmExpr
    ptr CmmExpr
    info CmmExpr
    ccs ),
      ( String -> FastString
    fsLit String
    "TICK_ALLOC_PRIM",       \[CmmExpr
    hdr,CmmExpr
    goods,CmmExpr
    slop] ->
                                            CmmExpr -> CmmExpr -> CmmExpr -> FCode ()
    tickyAllocPrim CmmExpr
    hdr CmmExpr
    goods CmmExpr
    slop ),
      ( String -> FastString
    fsLit String
    "TICK_ALLOC_PAP",        \[CmmExpr
    goods,CmmExpr
    slop] ->
                                            CmmExpr -> CmmExpr -> FCode ()
    tickyAllocPAP CmmExpr
    goods CmmExpr
    slop ),
      ( String -> FastString
    fsLit String
    "TICK_ALLOC_UP_THK",     \[CmmExpr
    goods,CmmExpr
    slop] ->
                                            CmmExpr -> CmmExpr -> FCode ()
    tickyAllocThunk CmmExpr
    goods CmmExpr
    slop ),
      ( String -> FastString
    fsLit String
    "UPD_BH_UPDATABLE",      \[CmmExpr
    reg] -> CmmExpr -> FCode ()
    emitBlackHoleCode CmmExpr
    reg )
     ]

    emitPushUpdateFrame :: CmmExpr -> CmmExpr -> FCode ()
    emitPushUpdateFrame :: CmmExpr -> CmmExpr -> FCode ()
    emitPushUpdateFrame CmmExpr
    sp CmmExpr
    e = do
      CmmExpr -> CLabel -> CmmExpr -> FCode ()
    emitUpdateFrame CmmExpr
    sp CLabel
    mkUpdInfoLabel CmmExpr
    e

    pushStackFrame :: [CmmParse CmmExpr] -> CmmParse () -> CmmParse ()
    pushStackFrame :: [CmmParse CmmExpr] -> CmmParse () -> CmmParse ()
    pushStackFrame [CmmParse CmmExpr]
    fields CmmParse ()
    body = do
      profile <- CmmParse Profile
    getProfile
      exprs <- sequence fields
      updfr_off <- getUpdFrameOff
      let (new_updfr_off, _, g) = copyOutOflow profile NativeReturn Ret Old
                                               [] updfr_off exprs
      emit g
      withUpdFrameOff new_updfr_off body

    reserveStackFrame
      :: CmmParse CmmExpr
      -> CmmParse CmmReg
      -> CmmParse ()
      -> CmmParse ()
    reserveStackFrame :: CmmParse CmmExpr -> CmmParse CmmReg -> CmmParse () -> CmmParse ()
    reserveStackFrame CmmParse CmmExpr
    psize CmmParse CmmReg
    preg CmmParse ()
    body = do
      platform <- CmmParse Platform
    getPlatform
      old_updfr_off <- getUpdFrameOff
      reg <- preg
      esize <- psize
      let size = case Platform -> CmmExpr -> CmmExpr
    constantFoldExpr Platform
    platform CmmExpr
    esize of
                   CmmLit (CmmInt Integer
    n Width
    _) -> Integer
    n
                   CmmExpr
    _other -> String -> SDoc -> Integer
    forall a. HasCallStack => String -> SDoc -> a
    pprPanic String
    "CmmParse: not a compile-time integer: "
                                (Platform -> CmmExpr -> SDoc
    forall env a. OutputableP env a => env -> a -> SDoc
    pdoc Platform
    platform CmmExpr
    esize)
      let frame = ByteOff
    old_updfr_off ByteOff -> ByteOff -> ByteOff
    forall a. Num a => a -> a -> a
    + Platform -> ByteOff
    platformWordSizeInBytes Platform
    platform ByteOff -> ByteOff -> ByteOff
    forall a. Num a => a -> a -> a
    * Integer -> ByteOff
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Integer
    size
      emitAssign reg (CmmStackSlot Old frame)
      withUpdFrameOff frame body

    profilingInfo :: Profile -> String -> String -> ProfilingInfo
    profilingInfo Profile
    profile String
    desc_str String
    ty_str
      = if Bool -> Bool
    not (Profile -> Bool
    profileIsProfiling Profile
    profile)
        then ProfilingInfo
    NoProfilingInfo
        else ConstrDescription -> ConstrDescription -> ProfilingInfo
    ProfilingInfo (String -> ConstrDescription
    BS8.pack String
    desc_str) (String -> ConstrDescription
    BS8.pack String
    ty_str)

    staticClosure :: UnitId -> FastString -> FastString -> [CmmLit] -> CmmParse ()
    staticClosure :: UnitId -> FastString -> FastString -> [CmmLit] -> CmmParse ()
    staticClosure UnitId
    pkg FastString
    cl_label FastString
    info [CmmLit]
    payload
      = do profile <- CmmParse Profile
    getProfile
           let lits = Profile
    -> CLabel
    -> CostCentreStack
    -> [CmmLit]
    -> [CmmLit]
    -> [CmmLit]
    -> [CmmLit]
    -> [CmmLit]
    -> [CmmLit]
    mkStaticClosure Profile
    profile (UnitId -> FastString -> CLabel
    mkCmmInfoLabel UnitId
    pkg FastString
    info) CostCentreStack
    dontCareCCS [CmmLit]
    payload [] [] [] []
           code $ emitDataLits (mkCmmDataLabel pkg (NeedExternDecl True) cl_label) lits

    foreignCall
            :: String
            -> [CmmParse (LocalReg, ForeignHint)]
            -> CmmParse CmmExpr
            -> [CmmParse (CmmExpr, ForeignHint)]
            -> Safety
            -> CmmReturnInfo
            -> PD (CmmParse ())
    foreignCall :: String
    -> [CmmParse (LocalReg, ForeignHint)]
    -> CmmParse CmmExpr
    -> [CmmParse (CmmExpr, ForeignHint)]
    -> Safety
    -> CmmReturnInfo
    -> PD (CmmParse ())
    foreignCall String
    conv_string [CmmParse (LocalReg, ForeignHint)]
    results_code CmmParse CmmExpr
    expr_code [CmmParse (CmmExpr, ForeignHint)]
    args_code Safety
    safety CmmReturnInfo
    ret
      = do  conv <- case String
    conv_string of
              String
    "C"       -> CCallConv -> PD CCallConv
    forall a. a -> PD a
    forall (m :: * -> *) a. Monad m => a -> m a
    return CCallConv
    CCallConv
              String
    "stdcall" -> CCallConv -> PD CCallConv
    forall a. a -> PD a
    forall (m :: * -> *) a. Monad m => a -> m a
    return CCallConv
    StdCallConv
              String
    _         -> (SrcSpan -> MsgEnvelope PsMessage) -> PD CCallConv
    forall a. (SrcSpan -> MsgEnvelope PsMessage) -> PD a
    failMsgPD ((SrcSpan -> MsgEnvelope PsMessage) -> PD CCallConv)
    -> (SrcSpan -> MsgEnvelope PsMessage) -> PD CCallConv
    forall a b. (a -> b) -> a -> b
    $ \SrcSpan
    span -> SrcSpan -> PsMessage -> MsgEnvelope PsMessage
    forall e. Diagnostic e => SrcSpan -> e -> MsgEnvelope e
    mkPlainErrorMsgEnvelope SrcSpan
    span (PsMessage -> MsgEnvelope PsMessage)
    -> PsMessage -> MsgEnvelope PsMessage
    forall a b. (a -> b) -> a -> b
    $
                                                  CmmParserError -> PsMessage
    PsErrCmmParser (String -> CmmParserError
    CmmUnknownCConv String
    conv_string)
            return $ do
              platform <- getPlatform
              results <- sequence results_code
              expr <- expr_code
              args <- sequence args_code
              let
                      expr' = Platform
    -> CCallConv -> CmmExpr -> [(CmmExpr, ForeignHint)] -> CmmExpr
    adjCallTarget Platform
    platform CCallConv
    conv CmmExpr
    expr [(CmmExpr, ForeignHint)]
    args
                      (arg_exprs, arg_hints) = unzip args
                      (res_regs,  res_hints) = unzip results
                      fc = CCallConv
    -> [ForeignHint]
    -> [ForeignHint]
    -> CmmReturnInfo
    -> ForeignConvention
    ForeignConvention CCallConv
    conv [ForeignHint]
    arg_hints [ForeignHint]
    res_hints CmmReturnInfo
    ret
                      target = CmmExpr -> ForeignConvention -> ForeignTarget
    ForeignTarget CmmExpr
    expr' ForeignConvention
    fc
              _ <- code $ emitForeignCall safety res_regs target arg_exprs
              return ()

    doReturn :: [CmmParse CmmExpr] -> CmmParse ()
    doReturn :: [CmmParse CmmExpr] -> CmmParse ()
    doReturn [CmmParse CmmExpr]
    exprs_code = do
      profile <- CmmParse Profile
    getProfile
      exprs <- sequence exprs_code
      updfr_off <- getUpdFrameOff
      emit (mkReturnSimple profile exprs updfr_off)

    mkReturnSimple  :: Profile -> [CmmActual] -> UpdFrameOffset -> CmmAGraph
    mkReturnSimple :: Profile -> [CmmExpr] -> ByteOff -> CmmAGraph
    mkReturnSimple Profile
    profile [CmmExpr]
    actuals ByteOff
    updfr_off =
      Profile -> CmmExpr -> [CmmExpr] -> ByteOff -> CmmAGraph
    mkReturn Profile
    profile CmmExpr
    e [CmmExpr]
    actuals ByteOff
    updfr_off
      where e :: CmmExpr
    e = Platform -> CmmExpr -> CmmExpr
    entryCode Platform
    platform (Platform -> CmmExpr -> CmmExpr
    cmmLoadGCWord Platform
    platform (Area -> ByteOff -> CmmExpr
    CmmStackSlot Area
    Old ByteOff
    updfr_off))
            platform :: Platform
    platform = Profile -> Platform
    profilePlatform Profile
    profile

    doRawJump :: CmmParse CmmExpr -> [GlobalReg] -> CmmParse ()
    doRawJump :: CmmParse CmmExpr -> [GlobalReg] -> CmmParse ()
    doRawJump CmmParse CmmExpr
    expr_code [GlobalReg]
    vols = do
      profile <- CmmParse Profile
    getProfile
      expr <- expr_code
      updfr_off <- getUpdFrameOff
      emit (mkRawJump profile expr updfr_off vols)

    doJumpWithStack :: CmmParse CmmExpr -> [CmmParse CmmExpr]
                    -> [CmmParse CmmExpr] -> CmmParse ()
    doJumpWithStack :: CmmParse CmmExpr
    -> [CmmParse CmmExpr] -> [CmmParse CmmExpr] -> CmmParse ()
    doJumpWithStack CmmParse CmmExpr
    expr_code [CmmParse CmmExpr]
    stk_code [CmmParse CmmExpr]
    args_code = do
      profile <- CmmParse Profile
    getProfile
      expr <- expr_code
      stk_args <- sequence stk_code
      args <- sequence args_code
      updfr_off <- getUpdFrameOff
      emit (mkJumpExtra profile NativeNodeCall expr args updfr_off stk_args)

    doCall :: CmmParse CmmExpr -> [CmmParse LocalReg] -> [CmmParse CmmExpr]
           -> CmmParse ()
    doCall :: CmmParse CmmExpr
    -> [CmmParse LocalReg] -> [CmmParse CmmExpr] -> CmmParse ()
    doCall CmmParse CmmExpr
    expr_code [CmmParse LocalReg]
    res_code [CmmParse CmmExpr]
    args_code = do
      expr <- CmmParse CmmExpr
    expr_code
      args <- sequence args_code
      ress <- sequence res_code
      updfr_off <- getUpdFrameOff
      c <- code $ mkCall expr (NativeNodeCall,NativeReturn) ress args updfr_off []
      emit c

    adjCallTarget :: Platform -> CCallConv -> CmmExpr -> [(CmmExpr, ForeignHint) ]
                  -> CmmExpr
    -- On Windows, we have to add the '@N' suffix to the label when making
    -- a call with the stdcall calling convention.
    adjCallTarget :: Platform
    -> CCallConv -> CmmExpr -> [(CmmExpr, ForeignHint)] -> CmmExpr
    adjCallTarget Platform
    platform CCallConv
    StdCallConv (CmmLit (CmmLabel CLabel
    lbl)) [(CmmExpr, ForeignHint)]
    args
     | Platform -> OS
    platformOS Platform
    platform OS -> OS -> Bool
    forall a. Eq a => a -> a -> Bool
    == OS
    OSMinGW32
      = CmmLit -> CmmExpr
    CmmLit (CLabel -> CmmLit
    CmmLabel (CLabel -> ByteOff -> CLabel
    addLabelSize CLabel
    lbl ([ByteOff] -> ByteOff
    forall a. Num a => [a] -> a
    forall (t :: * -> *) a. (Foldable t, Num a) => t a -> a
    sum (((CmmExpr, ForeignHint) -> ByteOff)
    -> [(CmmExpr, ForeignHint)] -> [ByteOff]
    forall a b. (a -> b) -> [a] -> [b]
    map (CmmExpr, ForeignHint) -> ByteOff
    size [(CmmExpr, ForeignHint)]
    args))))
      where size :: (CmmExpr, ForeignHint) -> ByteOff
    size (CmmExpr
    e, ForeignHint
    _) = ByteOff -> ByteOff -> ByteOff
    forall a. Ord a => a -> a -> a
    max (Platform -> ByteOff
    platformWordSizeInBytes Platform
    platform) (Width -> ByteOff
    widthInBytes (CmmType -> Width
    typeWidth (Platform -> CmmExpr -> CmmType
    cmmExprType Platform
    platform CmmExpr
    e)))
                     -- c.f. CgForeignCall.emitForeignCall
    adjCallTarget Platform
    _ CCallConv
    _ CmmExpr
    expr [(CmmExpr, ForeignHint)]
    _
      = CmmExpr
    expr

    primCall
            :: [CmmParse (CmmFormal, ForeignHint)]
            -> FastString
            -> [CmmParse CmmExpr]
            -> PD (CmmParse ())
    primCall :: [CmmParse (LocalReg, ForeignHint)]
    -> FastString -> [CmmParse CmmExpr] -> PD (CmmParse ())
    primCall [CmmParse (LocalReg, ForeignHint)]
    results_code FastString
    name [CmmParse CmmExpr]
    args_code
      = do
        platform <- PD Platform
    PD.getPlatform
        case lookupUFM (callishMachOps platform) name of
            Maybe ([CmmExpr] -> (CallishMachOp, [CmmExpr]))
    Nothing -> (SrcSpan -> MsgEnvelope PsMessage) -> PD (CmmParse ())
    forall a. (SrcSpan -> MsgEnvelope PsMessage) -> PD a
    failMsgPD ((SrcSpan -> MsgEnvelope PsMessage) -> PD (CmmParse ()))
    -> (SrcSpan -> MsgEnvelope PsMessage) -> PD (CmmParse ())
    forall a b. (a -> b) -> a -> b
    $ \SrcSpan
    span -> SrcSpan -> PsMessage -> MsgEnvelope PsMessage
    forall e. Diagnostic e => SrcSpan -> e -> MsgEnvelope e
    mkPlainErrorMsgEnvelope SrcSpan
    span (PsMessage -> MsgEnvelope PsMessage)
    -> PsMessage -> MsgEnvelope PsMessage
    forall a b. (a -> b) -> a -> b
    $ CmmParserError -> PsMessage
    PsErrCmmParser (FastString -> CmmParserError
    CmmUnknownPrimitive FastString
    name)
            Just [CmmExpr] -> (CallishMachOp, [CmmExpr])
    f  -> CmmParse () -> PD (CmmParse ())
    forall a. a -> PD a
    forall (m :: * -> *) a. Monad m => a -> m a
    return (CmmParse () -> PD (CmmParse ()))
    -> CmmParse () -> PD (CmmParse ())
    forall a b. (a -> b) -> a -> b
    $ do
                    results <- [CmmParse (LocalReg, ForeignHint)]
    -> CmmParse [(LocalReg, ForeignHint)]
    forall (t :: * -> *) (m :: * -> *) a.
    (Traversable t, Monad m) =>
    t (m a) -> m (t a)
    forall (m :: * -> *) a. Monad m => [m a] -> m [a]
    sequence [CmmParse (LocalReg, ForeignHint)]
    results_code
                    args <- sequence args_code
                    let (p, args') = f args
                    code (emitPrimCall (map fst results) p args')

    doStore :: Maybe MemoryOrdering
            -> CmmType
            -> CmmParse CmmExpr   -- ^ address
            -> CmmParse CmmExpr   -- ^ value
            -> CmmParse ()
    doStore :: Maybe MemoryOrdering
    -> CmmType -> CmmParse CmmExpr -> CmmParse CmmExpr -> CmmParse ()
    doStore Maybe MemoryOrdering
    mem_ord CmmType
    rep CmmParse CmmExpr
    addr_code CmmParse CmmExpr
    val_code
      = do platform <- CmmParse Platform
    getPlatform
           addr <- addr_code
           val <- val_code
            -- if the specified store type does not match the type of the expr
            -- on the rhs, then we insert a coercion that will cause the type
            -- mismatch to be flagged by cmm-lint.  If we don't do this, then
            -- the store will happen at the wrong type, and the error will not
            -- be noticed.
           let val_width = CmmType -> Width
    typeWidth (Platform -> CmmExpr -> CmmType
    cmmExprType Platform
    platform CmmExpr
    val)
               rep_width = CmmType -> Width
    typeWidth CmmType
    rep
           let coerce_val
                    | Width
    val_width Width -> Width -> Bool
    forall a. Eq a => a -> a -> Bool
    /= Width
    rep_width = MachOp -> [CmmExpr] -> CmmExpr
    CmmMachOp (Width -> Width -> MachOp
    MO_UU_Conv Width
    val_width Width
    rep_width) [CmmExpr
    val]
                    | Bool
    otherwise              = CmmExpr
    val
           emitStore mem_ord addr coerce_val

    -- -----------------------------------------------------------------------------
    -- If-then-else and boolean expressions

    data BoolExpr
      = BoolExpr `BoolAnd` BoolExpr
      | BoolExpr `BoolOr`  BoolExpr
      | BoolNot BoolExpr
      | BoolTest CmmExpr

    -- ToDo: smart constructors which simplify the boolean expression.

    cmmIfThenElse :: CmmParse BoolExpr
    -> CmmParse a -> CmmParse a -> Maybe Bool -> CmmParse ()
    cmmIfThenElse CmmParse BoolExpr
    cond CmmParse a
    then_part CmmParse a
    else_part Maybe Bool
    likely = do
         then_id <- CmmParse BlockId
    forall (m :: * -> *). MonadUnique m => m BlockId
    newBlockId
         join_id <- newBlockId
         c <- cond
         emitCond c then_id likely
         else_part
         emit (mkBranch join_id)
         emitLabel then_id
         then_part
         -- fall through to join
         emitLabel join_id

    cmmRawIf :: CmmParse BoolExpr -> BlockId -> Maybe Bool -> CmmParse ()
    cmmRawIf CmmParse BoolExpr
    cond BlockId
    then_id Maybe Bool
    likely = do
        c <- CmmParse BoolExpr
    cond
        emitCond c then_id likely

    -- 'emitCond cond true_id'  emits code to test whether the cond is true,
    -- branching to true_id if so, and falling through otherwise.
    emitCond :: BoolExpr -> BlockId -> Maybe Bool -> CmmParse ()
    emitCond (BoolTest CmmExpr
    e) BlockId
    then_id Maybe Bool
    likely = do
      else_id <- CmmParse BlockId
    forall (m :: * -> *). MonadUnique m => m BlockId
    newBlockId
      emit (mkCbranch e then_id else_id likely)
      emitLabel else_id
    emitCond (BoolNot (BoolTest (CmmMachOp MachOp
    op [CmmExpr]
    args))) BlockId
    then_id Maybe Bool
    likely
      | Just MachOp
    op' <- MachOp -> Maybe MachOp
    maybeInvertComparison MachOp
    op
      = BoolExpr -> BlockId -> Maybe Bool -> CmmParse ()
    emitCond (CmmExpr -> BoolExpr
    BoolTest (MachOp -> [CmmExpr] -> CmmExpr
    CmmMachOp MachOp
    op' [CmmExpr]
    args)) BlockId
    then_id (Bool -> Bool
    not (Bool -> Bool) -> Maybe Bool -> Maybe Bool
    forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
    <$> Maybe Bool
    likely)
    emitCond (BoolNot BoolExpr
    e) BlockId
    then_id Maybe Bool
    likely = do
      else_id <- CmmParse BlockId
    forall (m :: * -> *). MonadUnique m => m BlockId
    newBlockId
      emitCond e else_id likely
      emit (mkBranch then_id)
      emitLabel else_id
    emitCond (BoolExpr
    e1 `BoolOr` BoolExpr
    e2) BlockId
    then_id Maybe Bool
    likely = do
      BoolExpr -> BlockId -> Maybe Bool -> CmmParse ()
    emitCond BoolExpr
    e1 BlockId
    then_id Maybe Bool
    likely
      BoolExpr -> BlockId -> Maybe Bool -> CmmParse ()
    emitCond BoolExpr
    e2 BlockId
    then_id Maybe Bool
    likely
    emitCond (BoolExpr
    e1 `BoolAnd` BoolExpr
    e2) BlockId
    then_id Maybe Bool
    likely = do
            -- we'd like to invert one of the conditionals here to avoid an
            -- extra branch instruction, but we can't use maybeInvertComparison
            -- here because we can't look too closely at the expression since
            -- we're in a loop.
      and_id <- CmmParse BlockId
    forall (m :: * -> *). MonadUnique m => m BlockId
    newBlockId
      else_id <- newBlockId
      emitCond e1 and_id likely
      emit (mkBranch else_id)
      emitLabel and_id
      emitCond e2 then_id likely
      emitLabel else_id

    -- -----------------------------------------------------------------------------
    -- Source code notes

    -- | Generate a source note spanning from "a" to "b" (inclusive), then
    -- proceed with parsing. This allows debugging tools to reason about
    -- locations in Cmm code.
    withSourceNote :: Located a -> Located b -> CmmParse c -> CmmParse c
    withSourceNote :: forall a b c. Located a -> Located b -> CmmParse c -> CmmParse c
    withSourceNote Located a
    a Located b
    b CmmParse c
    parse = do
      name <- CmmParse String
    getName
      case combineSrcSpans (getLoc a) (getLoc b) of
        RealSrcSpan RealSrcSpan
    span Maybe BufSpan
    _ -> FCode () -> CmmParse ()
    forall a. FCode a -> CmmParse a
    code (CmmTickish -> FCode ()
    emitTick (RealSrcSpan -> LexicalFastString -> CmmTickish
    forall (pass :: TickishPass).
    RealSrcSpan -> LexicalFastString -> GenTickish pass
    SourceNote RealSrcSpan
    span (LexicalFastString -> CmmTickish)
    -> LexicalFastString -> CmmTickish
    forall a b. (a -> b) -> a -> b
    $ FastString -> LexicalFastString
    LexicalFastString (FastString -> LexicalFastString)
    -> FastString -> LexicalFastString
    forall a b. (a -> b) -> a -> b
    $ String -> FastString
    mkFastString String
    name)) CmmParse () -> CmmParse c -> CmmParse c
    forall a b. CmmParse a -> CmmParse b -> CmmParse b
    forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
    >> CmmParse c
    parse
        SrcSpan
    _other           -> CmmParse c
    parse

    -- -----------------------------------------------------------------------------
    -- Table jumps

    -- We use a simplified form of C-- switch statements for now.  A
    -- switch statement always compiles to a table jump.  Each arm can
    -- specify a list of values (not ranges), and there can be a single
    -- default branch.  The range of the table is given either by the
    -- optional range on the switch (eg. switch [0..7] {...}), or by
    -- the minimum/maximum values from the branches.

    doSwitch :: Maybe (Integer,Integer)
             -> CmmParse CmmExpr
             -> [([Integer],Either BlockId (CmmParse ()))]
             -> Maybe (CmmParse ()) -> CmmParse ()
    doSwitch :: Maybe (Integer, Integer)
    -> CmmParse CmmExpr
    -> [([Integer], Either BlockId (CmmParse ()))]
    -> Maybe (CmmParse ())
    -> CmmParse ()
    doSwitch Maybe (Integer, Integer)
    mb_range CmmParse CmmExpr
    scrut [([Integer], Either BlockId (CmmParse ()))]
    arms Maybe (CmmParse ())
    deflt
       = do
            -- Compile code for the default branch
            dflt_entry <-
                    case Maybe (CmmParse ())
    deflt of
                      Maybe (CmmParse ())
    Nothing -> Maybe BlockId -> CmmParse (Maybe BlockId)
    forall a. a -> CmmParse a
    forall (m :: * -> *) a. Monad m => a -> m a
    return Maybe BlockId
    forall a. Maybe a
    Nothing
                      Just CmmParse ()
    e  -> do b <- CmmParse () -> CmmParse BlockId
    forkLabelledCode CmmParse ()
    e; return (Just b)

            -- Compile each case branch
            table_entries <- mapM emitArm arms
            let table = [(Integer, BlockId)] -> Map Integer BlockId
    forall k a. Ord k => [(k, a)] -> Map k a
    M.fromList ([[(Integer, BlockId)]] -> [(Integer, BlockId)]
    forall (t :: * -> *) a. Foldable t => t [a] -> [a]
    concat [[(Integer, BlockId)]]
    table_entries)

            platform <- getPlatform
            let range = (Integer, Integer)
    -> Maybe (Integer, Integer) -> (Integer, Integer)
    forall a. a -> Maybe a -> a
    fromMaybe (Integer
    0, Platform -> Integer
    platformMaxWord Platform
    platform) Maybe (Integer, Integer)
    mb_range

            expr <- scrut
            -- ToDo: check for out of range and jump to default if necessary
            emit $ mkSwitch expr (mkSwitchTargets False range dflt_entry table)
       where
            emitArm :: ([Integer],Either BlockId (CmmParse ())) -> CmmParse [(Integer,BlockId)]
            emitArm :: ([Integer], Either BlockId (CmmParse ()))
    -> CmmParse [(Integer, BlockId)]
    emitArm ([Integer]
    ints,Left BlockId
    blockid) = [(Integer, BlockId)] -> CmmParse [(Integer, BlockId)]
    forall a. a -> CmmParse a
    forall (m :: * -> *) a. Monad m => a -> m a
    return [ (Integer
    i,BlockId
    blockid) | Integer
    i <- [Integer]
    ints ]
            emitArm ([Integer]
    ints,Right CmmParse ()
    code) = do
               blockid <- CmmParse () -> CmmParse BlockId
    forkLabelledCode CmmParse ()
    code
               return [ (i,blockid) | i <- ints ]

    forkLabelledCode :: CmmParse () -> CmmParse BlockId
    forkLabelledCode :: CmmParse () -> CmmParse BlockId
    forkLabelledCode CmmParse ()
    p = do
      (_,ag) <- CmmParse () -> CmmParse ((), CmmAGraphScoped)
    forall a. CmmParse a -> CmmParse (a, CmmAGraphScoped)
    getCodeScoped CmmParse ()
    p
      l <- newBlockId
      emitOutOfLine l ag
      return l

    -- -----------------------------------------------------------------------------
    -- Putting it all together

    -- The initial environment: we define some constants that the compiler
    -- knows about here.
    initEnv :: Profile -> Env
    initEnv :: Profile -> Env
    initEnv Profile
    profile = [(FastString, Named)] -> Env
    forall key elt. Uniquable key => [(key, elt)] -> UniqFM key elt
    listToUFM [
      ( String -> FastString
    fsLit String
    "SIZEOF_StgHeader",
        CmmExpr -> Named
    VarN (CmmLit -> CmmExpr
    CmmLit (Integer -> Width -> CmmLit
    CmmInt (ByteOff -> Integer
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral (Profile -> ByteOff
    fixedHdrSize Profile
    profile)) (Platform -> Width
    wordWidth Platform
    platform)) )),
      ( String -> FastString
    fsLit String
    "SIZEOF_StgInfoTable",
        CmmExpr -> Named
    VarN (CmmLit -> CmmExpr
    CmmLit (Integer -> Width -> CmmLit
    CmmInt (ByteOff -> Integer
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral (Profile -> ByteOff
    stdInfoTableSizeB Profile
    profile)) (Platform -> Width
    wordWidth Platform
    platform)) ))
      ]
      where platform :: Platform
    platform = Profile -> Platform
    profilePlatform Profile
    profile

    parseCmmFile :: CmmParserConfig
                 -> Module
                 -> HomeUnit
                 -> FilePath
                 -> IO (Messages PsMessage, Messages PsMessage, Maybe (CmmGroup, [InfoProvEnt]))
    parseCmmFile :: CmmParserConfig
    -> Module
    -> HomeUnit
    -> String
    -> IO
         (Messages PsMessage, Messages PsMessage,
          Maybe (CmmGroup, [InfoProvEnt]))
    parseCmmFile CmmParserConfig
    cmmpConfig Module
    this_mod HomeUnit
    home_unit String
    filename = do
      buf <- String -> IO StringBuffer
    hGetStringBuffer String
    filename
      let
            init_loc = FastString -> ByteOff -> ByteOff -> RealSrcLoc
    mkRealSrcLoc (String -> FastString
    mkFastString String
    filename) ByteOff
    1 ByteOff
    1
            init_state = (ParserOpts -> StringBuffer -> RealSrcLoc -> PState
    initParserState (CmmParserConfig -> ParserOpts
    cmmpParserOpts CmmParserConfig
    cmmpConfig) StringBuffer
    buf RealSrcLoc
    init_loc) { lex_state = [0] }
                    -- reset the lex_state: the Lexer monad leaves some stuff
                    -- in there we don't want.
            pdConfig = CmmParserConfig -> PDConfig
    cmmpPDConfig CmmParserConfig
    cmmpConfig
      case unPD cmmParse pdConfig home_unit init_state of
        PFailed PState
    pst -> do
            let (Messages PsMessage
    warnings,Messages PsMessage
    errors) = PState -> (Messages PsMessage, Messages PsMessage)
    getPsMessages PState
    pst
            (Messages PsMessage, Messages PsMessage,
     Maybe (CmmGroup, [InfoProvEnt]))
    -> IO
         (Messages PsMessage, Messages PsMessage,
          Maybe (CmmGroup, [InfoProvEnt]))
    forall a. a -> IO a
    forall (m :: * -> *) a. Monad m => a -> m a
    return (Messages PsMessage
    warnings, Messages PsMessage
    errors, Maybe (CmmGroup, [InfoProvEnt])
    forall a. Maybe a
    Nothing)
        POk PState
    pst CmmParse ()
    code -> do
            st <- IO CgState
    initC
            let fstate = Platform -> FCodeState
    F.initFCodeState (Profile -> Platform
    profilePlatform (Profile -> Platform) -> Profile -> Platform
    forall a b. (a -> b) -> a -> b
    $ PDConfig -> Profile
    pdProfile PDConfig
    pdConfig)
            let fcode = do
                  ((), cmm) <- FCode () -> FCode ((), CmmGroup)
    forall a. FCode a -> FCode (a, CmmGroup)
    getCmm (FCode () -> FCode ((), CmmGroup))
    -> FCode () -> FCode ((), CmmGroup)
    forall a b. (a -> b) -> a -> b
    $ CmmParse ()
    -> String
    -> Env
    -> [(FastString, Named)]
    -> FCode ([(FastString, Named)], ())
    forall a.
    CmmParse a
    -> String
    -> Env
    -> [(FastString, Named)]
    -> FCode ([(FastString, Named)], a)
    unEC CmmParse ()
    code String
    "global" (Profile -> Env
    initEnv (PDConfig -> Profile
    pdProfile PDConfig
    pdConfig)) [] FCode ([(FastString, Named)], ()) -> FCode () -> FCode ()
    forall a b. FCode a -> FCode b -> FCode b
    forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
    >> () -> FCode ()
    forall a. a -> FCode a
    forall (m :: * -> *) a. Monad m => a -> m a
    return ()
                  -- See Note [Mapping Info Tables to Source Positions] (IPE Maps)
                  let used_info
                        | Bool
    do_ipe    = (CmmInfoTable -> InfoProvEnt) -> [CmmInfoTable] -> [InfoProvEnt]
    forall a b. (a -> b) -> [a] -> [b]
    map (Module -> CmmInfoTable -> InfoProvEnt
    cmmInfoTableToInfoProvEnt Module
    this_mod) ((CmmDecl -> Maybe CmmInfoTable) -> CmmGroup -> [CmmInfoTable]
    forall a b. (a -> Maybe b) -> [a] -> [b]
    mapMaybe CmmDecl -> Maybe CmmInfoTable
    forall a (n :: Extensibility -> Extensibility -> *).
    GenCmmDecl a CmmTopInfo (GenCmmGraph n) -> Maybe CmmInfoTable
    topInfoTable CmmGroup
    cmm)
                        | Bool
    otherwise = []
                        where
                          do_ipe :: Bool
    do_ipe = StgToCmmConfig -> Bool
    stgToCmmInfoTableMap (StgToCmmConfig -> Bool) -> StgToCmmConfig -> Bool
    forall a b. (a -> b) -> a -> b
    $ CmmParserConfig -> StgToCmmConfig
    cmmpStgToCmmConfig CmmParserConfig
    cmmpConfig
                  ((), cmm2) <- getCmm $ emitIpeBufferListNode this_mod used_info
                  return (cmm ++ cmm2, used_info)
                (cmm, _) = runC (cmmpStgToCmmConfig cmmpConfig) fstate st fcode
                (warnings,errors) = getPsMessages pst
            if not (isEmptyMessages errors)
             then return (warnings, errors, Nothing)
             else return (warnings, errors, Just cmm)
    {-# LINE 1 "templates/GenericTemplate.hs" #-}
    -- $Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp $

    -- Do not remove this comment. Required to fix CPP parsing when using GCC and a clang-compiled alex.
    #if __GLASGOW_HASKELL__ > 706
    #define LT(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.<# m)) :: Prelude.Bool)
    #define GTE(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.>=# m)) :: Prelude.Bool)
    #define EQ(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.==# m)) :: Prelude.Bool)
    #else
    #define LT(n,m) (n Happy_GHC_Exts.<# m)
    #define GTE(n,m) (n Happy_GHC_Exts.>=# m)
    #define EQ(n,m) (n Happy_GHC_Exts.==# m)
    #endif

    data Happy_IntList = HappyCons Happy_GHC_Exts.Int# Happy_IntList

    infixr 9 `HappyStk`
    data HappyStk a = HappyStk a (HappyStk a)

    -----------------------------------------------------------------------------
    -- starting the parse

    happyParse start_state = happyNewToken start_state notHappyAtAll notHappyAtAll

    -----------------------------------------------------------------------------
    -- Accepting the parse

    -- If the current token is ERROR_TOK, it means we've just accepted a partial
    -- parse (a %partial parser).  We must ignore the saved token on the top of
    -- the stack in this case.
    happyAccept 0# tk st sts (_ `HappyStk` ans `HappyStk` _) =
            happyReturn1 ans
    happyAccept j tk st sts (HappyStk ans _) =
            (happyTcHack j (happyTcHack st)) (happyReturn1 ans)

    -----------------------------------------------------------------------------
    -- Arrays only: do the next action

    happyDoAction i tk st
            = {- nothing -}
              case action of
                    0#           -> {- nothing -}
                                         happyFail (happyExpListPerState ((Happy_GHC_Exts.I# (st)) :: Prelude.Int)) i tk st
                    -1#          -> {- nothing -}
                                         happyAccept i tk st
                    n | LT(n,(0# :: Happy_GHC_Exts.Int#)) -> {- nothing -}
                                                       (happyReduceArr Happy_Data_Array.! rule) i tk st
                                                       where rule = (Happy_GHC_Exts.I# ((Happy_GHC_Exts.negateInt# ((n Happy_GHC_Exts.+# (1# :: Happy_GHC_Exts.Int#))))))
                    n                 -> {- nothing -}
                                         happyShift new_state i tk st
                                         where new_state = (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#))
       where off    = happyAdjustOffset (indexShortOffAddr happyActOffsets st)
             off_i  = (off Happy_GHC_Exts.+# i)
             check  = if GTE(off_i,(0# :: Happy_GHC_Exts.Int#))
                      then EQ(indexShortOffAddr happyCheck off_i, i)
                      else Prelude.False
             action
              | check     = indexShortOffAddr happyTable off_i
              | Prelude.otherwise = indexShortOffAddr happyDefActions st

    indexShortOffAddr (HappyA# arr) off =
            Happy_GHC_Exts.narrow16Int# i
      where
            i = Happy_GHC_Exts.word2Int# (Happy_GHC_Exts.or# (Happy_GHC_Exts.uncheckedShiftL# high 8#) low)
            high = Happy_GHC_Exts.int2Word# (Happy_GHC_Exts.ord# (Happy_GHC_Exts.indexCharOffAddr# arr (off' Happy_GHC_Exts.+# 1#)))
            low  = Happy_GHC_Exts.int2Word# (Happy_GHC_Exts.ord# (Happy_GHC_Exts.indexCharOffAddr# arr off'))
            off' = off Happy_GHC_Exts.*# 2#

    {-# INLINE happyLt #-}
    happyLt x y = LT(x,y)

    readArrayBit arr bit =
        Bits.testBit (Happy_GHC_Exts.I# (indexShortOffAddr arr ((unbox_int bit) `Happy_GHC_Exts.iShiftRA#` 4#))) (bit `Prelude.mod` 16)
      where unbox_int (Happy_GHC_Exts.I# x) = x

    data HappyAddr = HappyA# Happy_GHC_Exts.Addr#

    -----------------------------------------------------------------------------
    -- HappyState data type (not arrays)

    -----------------------------------------------------------------------------
    -- Shifting a token

    happyShift new_state 0# tk st sts stk@(x `HappyStk` _) =
         let i = (case Happy_GHC_Exts.unsafeCoerce# x of { (Happy_GHC_Exts.I# (i)) -> i }) in
    --     trace "shifting the error token" $
         happyDoAction i tk new_state (HappyCons (st) (sts)) (stk)

    happyShift new_state i tk st sts stk =
         happyNewToken new_state (HappyCons (st) (sts)) ((happyInTok (tk))`HappyStk`stk)

    -- happyReduce is specialised for the common cases.

    happySpecReduce_0 i fn 0# tk st sts stk
         = happyFail [] 0# tk st sts stk
    happySpecReduce_0 nt fn j tk st@((action)) sts stk
         = happyGoto nt j tk st (HappyCons (st) (sts)) (fn `HappyStk` stk)

    happySpecReduce_1 i fn 0# tk st sts stk
         = happyFail [] 0# tk st sts stk
    happySpecReduce_1 nt fn j tk _ sts@((HappyCons (st@(action)) (_))) (v1`HappyStk`stk')
         = let r = fn v1 in
           happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))

    happySpecReduce_2 i fn 0# tk st sts stk
         = happyFail [] 0# tk st sts stk
    happySpecReduce_2 nt fn j tk _ (HappyCons (_) (sts@((HappyCons (st@(action)) (_))))) (v1`HappyStk`v2`HappyStk`stk')
         = let r = fn v1 v2 in
           happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))

    happySpecReduce_3 i fn 0# tk st sts stk
         = happyFail [] 0# tk st sts stk
    happySpecReduce_3 nt fn j tk _ (HappyCons (_) ((HappyCons (_) (sts@((HappyCons (st@(action)) (_))))))) (v1`HappyStk`v2`HappyStk`v3`HappyStk`stk')
         = let r = fn v1 v2 v3 in
           happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))

    happyReduce k i fn 0# tk st sts stk
         = happyFail [] 0# tk st sts stk
    happyReduce k nt fn j tk st sts stk
         = case happyDrop (k Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) sts of
             sts1@((HappyCons (st1@(action)) (_))) ->
                    let r = fn stk in  -- it doesn't hurt to always seq here...
                    happyDoSeq r (happyGoto nt j tk st1 sts1 r)

    happyMonadReduce k nt fn 0# tk st sts stk
         = happyFail [] 0# tk st sts stk
    happyMonadReduce k nt fn j tk st sts stk =
          case happyDrop k (HappyCons (st) (sts)) of
            sts1@((HappyCons (st1@(action)) (_))) ->
              let drop_stk = happyDropStk k stk in
              happyThen1 (fn stk tk) (\r -> happyGoto nt j tk st1 sts1 (r `HappyStk` drop_stk))

    happyMonad2Reduce k nt fn 0# tk st sts stk
         = happyFail [] 0# tk st sts stk
    happyMonad2Reduce k nt fn j tk st sts stk =
          case happyDrop k (HappyCons (st) (sts)) of
            sts1@((HappyCons (st1@(action)) (_))) ->
             let drop_stk = happyDropStk k stk

                 off = happyAdjustOffset (indexShortOffAddr happyGotoOffsets st1)
                 off_i = (off Happy_GHC_Exts.+# nt)
                 new_state = indexShortOffAddr happyTable off_i

              in
              happyThen1 (fn stk tk) (\r -> happyNewToken new_state sts1 (r `HappyStk` drop_stk))

    happyDrop 0# l = l
    happyDrop n (HappyCons (_) (t)) = happyDrop (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) t

    happyDropStk 0# l = l
    happyDropStk n (x `HappyStk` xs) = happyDropStk (n Happy_GHC_Exts.-# (1#::Happy_GHC_Exts.Int#)) xs

    -----------------------------------------------------------------------------
    -- Moving to a new state after a reduction

    happyGoto nt j tk st =
       {- nothing -}
       happyDoAction j tk new_state
       where off = happyAdjustOffset (indexShortOffAddr happyGotoOffsets st)
             off_i = (off Happy_GHC_Exts.+# nt)
             new_state = indexShortOffAddr happyTable off_i

    -----------------------------------------------------------------------------
    -- Error recovery (ERROR_TOK is the error token)

    -- parse error if we are in recovery and we fail again
    happyFail explist 0# tk old_st _ stk@(x `HappyStk` _) =
         let i = (case Happy_GHC_Exts.unsafeCoerce# x of { (Happy_GHC_Exts.I# (i)) -> i }) in
    --      trace "failing" $
            happyError_ explist i tk

    {-  We don't need state discarding for our restricted implementation of
        "error".  In fact, it can cause some bogus parses, so I've disabled it
        for now --SDM

    -- discard a state
    happyFail  ERROR_TOK tk old_st CONS(HAPPYSTATE(action),sts)
                                                    (saved_tok `HappyStk` _ `HappyStk` stk) =
    --      trace ("discarding state, depth " ++ show (length stk))  $
            DO_ACTION(action,ERROR_TOK,tk,sts,(saved_tok`HappyStk`stk))
    -}

    -- Enter error recovery: generate an error token,
    --                       save the old token and carry on.
    happyFail explist i tk (action) sts stk =
    --      trace "entering error recovery" $
            happyDoAction 0# tk action sts ((Happy_GHC_Exts.unsafeCoerce# (Happy_GHC_Exts.I# (i))) `HappyStk` stk)

    -- Internal happy errors:

    notHappyAtAll :: a
    notHappyAtAll = Prelude.error "Internal Happy error\n"

    -----------------------------------------------------------------------------
    -- Hack to get the typechecker to accept our action functions

    happyTcHack :: Happy_GHC_Exts.Int# -> a -> a
    happyTcHack x y = y
    {-# INLINE happyTcHack #-}

    -----------------------------------------------------------------------------
    -- Seq-ing.  If the --strict flag is given, then Happy emits
    --      happySeq = happyDoSeq
    -- otherwise it emits
    --      happySeq = happyDontSeq

    happyDoSeq, happyDontSeq :: a -> b -> b
    happyDoSeq   a b = a `Prelude.seq` b
    happyDontSeq a b = b

    -----------------------------------------------------------------------------
    -- Don't inline any functions from the template.  GHC has a nasty habit
    -- of deciding to inline happyGoto everywhere, which increases the size of
    -- the generated parser quite a bit.

    {-# NOINLINE happyDoAction #-}
    {-# NOINLINE happyTable #-}
    {-# NOINLINE happyCheck #-}
    {-# NOINLINE happyActOffsets #-}
    {-# NOINLINE happyGotoOffsets #-}
    {-# NOINLINE happyDefActions #-}

    {-# NOINLINE happyShift #-}
    {-# NOINLINE happySpecReduce_0 #-}
    {-# NOINLINE happySpecReduce_1 #-}
    {-# NOINLINE happySpecReduce_2 #-}
    {-# NOINLINE happySpecReduce_3 #-}
    {-# NOINLINE happyReduce #-}
    {-# NOINLINE happyMonadReduce #-}
    {-# NOINLINE happyGoto #-}
    {-# NOINLINE happyFail #-}

    -- end of Happy Template.