never executed always true always false
    1 {-# OPTIONS_GHC -w #-}
    2 {-# OPTIONS -XMagicHash -XBangPatterns -XTypeSynonymInstances -XFlexibleInstances -cpp #-}
    3 #if __GLASGOW_HASKELL__ >= 710
    4 {-# OPTIONS_GHC -XPartialTypeSignatures #-}
    5 #endif
    6 {-# LANGUAGE TupleSections #-}
    7 
    8 module GHC.Cmm.Parser ( parseCmmFile ) where
    9 
   10 import GHC.Prelude
   11 import qualified Prelude -- for happy-generated code
   12 
   13 import GHC.Driver.Session
   14 import GHC.Driver.Ppr
   15 import GHC.Driver.Config.Parser (initParserOpts)
   16 
   17 import GHC.Platform
   18 import GHC.Platform.Profile
   19 
   20 import GHC.StgToCmm.ExtCode
   21 import GHC.StgToCmm.Prof
   22 import GHC.StgToCmm.Heap
   23 import GHC.StgToCmm.Monad hiding ( getCode, getCodeR, getCodeScoped, emitLabel, emit
   24                                  , emitStore, emitAssign, emitOutOfLine, withUpdFrameOff
   25                                  , getUpdFrameOff, getProfile, getPlatform, getPtrOpts )
   26 import qualified GHC.StgToCmm.Monad as F
   27 import GHC.StgToCmm.Utils
   28 import GHC.StgToCmm.Foreign
   29 import GHC.StgToCmm.Expr
   30 import GHC.StgToCmm.Lit
   31 import GHC.StgToCmm.Closure
   32 import GHC.StgToCmm.Layout     hiding (ArgRep(..))
   33 import GHC.StgToCmm.Ticky
   34 import GHC.StgToCmm.Prof
   35 import GHC.StgToCmm.Bind  ( emitBlackHoleCode, emitUpdateFrame )
   36 
   37 import GHC.Cmm.Opt
   38 import GHC.Cmm.Graph
   39 import GHC.Cmm
   40 import GHC.Cmm.Utils
   41 import GHC.Cmm.Switch     ( mkSwitchTargets )
   42 import GHC.Cmm.Info
   43 import GHC.Cmm.BlockId
   44 import GHC.Cmm.Lexer
   45 import GHC.Cmm.CLabel
   46 import GHC.Cmm.Parser.Monad hiding (getPlatform, getProfile, getPtrOpts)
   47 import qualified GHC.Cmm.Parser.Monad as PD
   48 import GHC.Cmm.CallConv
   49 import GHC.Runtime.Heap.Layout
   50 import GHC.Parser.Lexer
   51 import GHC.Parser.Errors.Types
   52 import GHC.Parser.Errors.Ppr
   53 
   54 import GHC.Types.CostCentre
   55 import GHC.Types.ForeignCall
   56 import GHC.Unit.Module
   57 import GHC.Unit.Home
   58 import GHC.Types.Literal
   59 import GHC.Types.Unique
   60 import GHC.Types.Unique.FM
   61 import GHC.Types.SrcLoc
   62 import GHC.Types.Tickish  ( GenTickish(SourceNote) )
   63 import GHC.Utils.Error
   64 import GHC.Data.StringBuffer
   65 import GHC.Data.FastString
   66 import GHC.Utils.Panic
   67 import GHC.Settings.Constants
   68 import GHC.Utils.Outputable
   69 import GHC.Types.Basic
   70 import GHC.Data.Bag     ( Bag, emptyBag, unitBag, isEmptyBag )
   71 import GHC.Types.Var
   72 
   73 import Control.Monad
   74 import Data.Array
   75 import Data.Char        ( ord )
   76 import System.Exit
   77 import Data.Maybe
   78 import qualified Data.Map as M
   79 import qualified Data.ByteString.Char8 as BS8
   80 import qualified Data.Array as Happy_Data_Array
   81 import qualified Data.Bits as Bits
   82 import qualified GHC.Exts as Happy_GHC_Exts
   83 import Control.Applicative(Applicative(..))
   84 import Control.Monad (ap)
   85 
   86 -- parser produced by Happy Version 1.20.0
   87 
   88 newtype HappyAbsSyn  = HappyAbsSyn HappyAny
   89 #if __GLASGOW_HASKELL__ >= 607
   90 type HappyAny = Happy_GHC_Exts.Any
   91 #else
   92 type HappyAny = forall a . a
   93 #endif
   94 newtype HappyWrap4 = HappyWrap4 (CmmParse ())
   95 happyIn4 :: (CmmParse ()) -> (HappyAbsSyn )
   96 happyIn4 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap4 x)
   97 {-# INLINE happyIn4 #-}
   98 happyOut4 :: (HappyAbsSyn ) -> HappyWrap4
   99 happyOut4 x = Happy_GHC_Exts.unsafeCoerce# x
  100 {-# INLINE happyOut4 #-}
  101 newtype HappyWrap5 = HappyWrap5 (CmmParse ())
  102 happyIn5 :: (CmmParse ()) -> (HappyAbsSyn )
  103 happyIn5 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap5 x)
  104 {-# INLINE happyIn5 #-}
  105 happyOut5 :: (HappyAbsSyn ) -> HappyWrap5
  106 happyOut5 x = Happy_GHC_Exts.unsafeCoerce# x
  107 {-# INLINE happyOut5 #-}
  108 newtype HappyWrap6 = HappyWrap6 (CmmParse ())
  109 happyIn6 :: (CmmParse ()) -> (HappyAbsSyn )
  110 happyIn6 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap6 x)
  111 {-# INLINE happyIn6 #-}
  112 happyOut6 :: (HappyAbsSyn ) -> HappyWrap6
  113 happyOut6 x = Happy_GHC_Exts.unsafeCoerce# x
  114 {-# INLINE happyOut6 #-}
  115 newtype HappyWrap7 = HappyWrap7 (CmmParse CLabel)
  116 happyIn7 :: (CmmParse CLabel) -> (HappyAbsSyn )
  117 happyIn7 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap7 x)
  118 {-# INLINE happyIn7 #-}
  119 happyOut7 :: (HappyAbsSyn ) -> HappyWrap7
  120 happyOut7 x = Happy_GHC_Exts.unsafeCoerce# x
  121 {-# INLINE happyOut7 #-}
  122 newtype HappyWrap8 = HappyWrap8 ([CmmParse [CmmStatic]])
  123 happyIn8 :: ([CmmParse [CmmStatic]]) -> (HappyAbsSyn )
  124 happyIn8 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap8 x)
  125 {-# INLINE happyIn8 #-}
  126 happyOut8 :: (HappyAbsSyn ) -> HappyWrap8
  127 happyOut8 x = Happy_GHC_Exts.unsafeCoerce# x
  128 {-# INLINE happyOut8 #-}
  129 newtype HappyWrap9 = HappyWrap9 (CmmParse [CmmStatic])
  130 happyIn9 :: (CmmParse [CmmStatic]) -> (HappyAbsSyn )
  131 happyIn9 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap9 x)
  132 {-# INLINE happyIn9 #-}
  133 happyOut9 :: (HappyAbsSyn ) -> HappyWrap9
  134 happyOut9 x = Happy_GHC_Exts.unsafeCoerce# x
  135 {-# INLINE happyOut9 #-}
  136 newtype HappyWrap10 = HappyWrap10 ([CmmParse CmmExpr])
  137 happyIn10 :: ([CmmParse CmmExpr]) -> (HappyAbsSyn )
  138 happyIn10 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap10 x)
  139 {-# INLINE happyIn10 #-}
  140 happyOut10 :: (HappyAbsSyn ) -> HappyWrap10
  141 happyOut10 x = Happy_GHC_Exts.unsafeCoerce# x
  142 {-# INLINE happyOut10 #-}
  143 newtype HappyWrap11 = HappyWrap11 (CmmParse ())
  144 happyIn11 :: (CmmParse ()) -> (HappyAbsSyn )
  145 happyIn11 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap11 x)
  146 {-# INLINE happyIn11 #-}
  147 happyOut11 :: (HappyAbsSyn ) -> HappyWrap11
  148 happyOut11 x = Happy_GHC_Exts.unsafeCoerce# x
  149 {-# INLINE happyOut11 #-}
  150 newtype HappyWrap12 = HappyWrap12 (Convention)
  151 happyIn12 :: (Convention) -> (HappyAbsSyn )
  152 happyIn12 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap12 x)
  153 {-# INLINE happyIn12 #-}
  154 happyOut12 :: (HappyAbsSyn ) -> HappyWrap12
  155 happyOut12 x = Happy_GHC_Exts.unsafeCoerce# x
  156 {-# INLINE happyOut12 #-}
  157 newtype HappyWrap13 = HappyWrap13 (CmmParse ())
  158 happyIn13 :: (CmmParse ()) -> (HappyAbsSyn )
  159 happyIn13 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap13 x)
  160 {-# INLINE happyIn13 #-}
  161 happyOut13 :: (HappyAbsSyn ) -> HappyWrap13
  162 happyOut13 x = Happy_GHC_Exts.unsafeCoerce# x
  163 {-# INLINE happyOut13 #-}
  164 newtype HappyWrap14 = HappyWrap14 (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg]))
  165 happyIn14 :: (CmmParse (CLabel, Maybe CmmInfoTable, [LocalReg])) -> (HappyAbsSyn )
  166 happyIn14 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap14 x)
  167 {-# INLINE happyIn14 #-}
  168 happyOut14 :: (HappyAbsSyn ) -> HappyWrap14
  169 happyOut14 x = Happy_GHC_Exts.unsafeCoerce# x
  170 {-# INLINE happyOut14 #-}
  171 newtype HappyWrap15 = HappyWrap15 (CmmParse ())
  172 happyIn15 :: (CmmParse ()) -> (HappyAbsSyn )
  173 happyIn15 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap15 x)
  174 {-# INLINE happyIn15 #-}
  175 happyOut15 :: (HappyAbsSyn ) -> HappyWrap15
  176 happyOut15 x = Happy_GHC_Exts.unsafeCoerce# x
  177 {-# INLINE happyOut15 #-}
  178 newtype HappyWrap16 = HappyWrap16 (CmmParse ())
  179 happyIn16 :: (CmmParse ()) -> (HappyAbsSyn )
  180 happyIn16 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap16 x)
  181 {-# INLINE happyIn16 #-}
  182 happyOut16 :: (HappyAbsSyn ) -> HappyWrap16
  183 happyOut16 x = Happy_GHC_Exts.unsafeCoerce# x
  184 {-# INLINE happyOut16 #-}
  185 newtype HappyWrap17 = HappyWrap17 ([(FastString, CLabel)])
  186 happyIn17 :: ([(FastString, CLabel)]) -> (HappyAbsSyn )
  187 happyIn17 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap17 x)
  188 {-# INLINE happyIn17 #-}
  189 happyOut17 :: (HappyAbsSyn ) -> HappyWrap17
  190 happyOut17 x = Happy_GHC_Exts.unsafeCoerce# x
  191 {-# INLINE happyOut17 #-}
  192 newtype HappyWrap18 = HappyWrap18 ((FastString,  CLabel))
  193 happyIn18 :: ((FastString,  CLabel)) -> (HappyAbsSyn )
  194 happyIn18 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap18 x)
  195 {-# INLINE happyIn18 #-}
  196 happyOut18 :: (HappyAbsSyn ) -> HappyWrap18
  197 happyOut18 x = Happy_GHC_Exts.unsafeCoerce# x
  198 {-# INLINE happyOut18 #-}
  199 newtype HappyWrap19 = HappyWrap19 ([FastString])
  200 happyIn19 :: ([FastString]) -> (HappyAbsSyn )
  201 happyIn19 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap19 x)
  202 {-# INLINE happyIn19 #-}
  203 happyOut19 :: (HappyAbsSyn ) -> HappyWrap19
  204 happyOut19 x = Happy_GHC_Exts.unsafeCoerce# x
  205 {-# INLINE happyOut19 #-}
  206 newtype HappyWrap20 = HappyWrap20 (CmmParse ())
  207 happyIn20 :: (CmmParse ()) -> (HappyAbsSyn )
  208 happyIn20 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap20 x)
  209 {-# INLINE happyIn20 #-}
  210 happyOut20 :: (HappyAbsSyn ) -> HappyWrap20
  211 happyOut20 x = Happy_GHC_Exts.unsafeCoerce# x
  212 {-# INLINE happyOut20 #-}
  213 newtype HappyWrap21 = HappyWrap21 (CmmParse [(GlobalReg, Maybe CmmExpr)])
  214 happyIn21 :: (CmmParse [(GlobalReg, Maybe CmmExpr)]) -> (HappyAbsSyn )
  215 happyIn21 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap21 x)
  216 {-# INLINE happyIn21 #-}
  217 happyOut21 :: (HappyAbsSyn ) -> HappyWrap21
  218 happyOut21 x = Happy_GHC_Exts.unsafeCoerce# x
  219 {-# INLINE happyOut21 #-}
  220 newtype HappyWrap22 = HappyWrap22 (CmmParse (Maybe CmmExpr))
  221 happyIn22 :: (CmmParse (Maybe CmmExpr)) -> (HappyAbsSyn )
  222 happyIn22 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap22 x)
  223 {-# INLINE happyIn22 #-}
  224 happyOut22 :: (HappyAbsSyn ) -> HappyWrap22
  225 happyOut22 x = Happy_GHC_Exts.unsafeCoerce# x
  226 {-# INLINE happyOut22 #-}
  227 newtype HappyWrap23 = HappyWrap23 (CmmParse CmmExpr)
  228 happyIn23 :: (CmmParse CmmExpr) -> (HappyAbsSyn )
  229 happyIn23 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap23 x)
  230 {-# INLINE happyIn23 #-}
  231 happyOut23 :: (HappyAbsSyn ) -> HappyWrap23
  232 happyOut23 x = Happy_GHC_Exts.unsafeCoerce# x
  233 {-# INLINE happyOut23 #-}
  234 newtype HappyWrap24 = HappyWrap24 (CmmReturnInfo)
  235 happyIn24 :: (CmmReturnInfo) -> (HappyAbsSyn )
  236 happyIn24 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap24 x)
  237 {-# INLINE happyIn24 #-}
  238 happyOut24 :: (HappyAbsSyn ) -> HappyWrap24
  239 happyOut24 x = Happy_GHC_Exts.unsafeCoerce# x
  240 {-# INLINE happyOut24 #-}
  241 newtype HappyWrap25 = HappyWrap25 (CmmParse BoolExpr)
  242 happyIn25 :: (CmmParse BoolExpr) -> (HappyAbsSyn )
  243 happyIn25 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap25 x)
  244 {-# INLINE happyIn25 #-}
  245 happyOut25 :: (HappyAbsSyn ) -> HappyWrap25
  246 happyOut25 x = Happy_GHC_Exts.unsafeCoerce# x
  247 {-# INLINE happyOut25 #-}
  248 newtype HappyWrap26 = HappyWrap26 (CmmParse BoolExpr)
  249 happyIn26 :: (CmmParse BoolExpr) -> (HappyAbsSyn )
  250 happyIn26 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap26 x)
  251 {-# INLINE happyIn26 #-}
  252 happyOut26 :: (HappyAbsSyn ) -> HappyWrap26
  253 happyOut26 x = Happy_GHC_Exts.unsafeCoerce# x
  254 {-# INLINE happyOut26 #-}
  255 newtype HappyWrap27 = HappyWrap27 (Safety)
  256 happyIn27 :: (Safety) -> (HappyAbsSyn )
  257 happyIn27 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap27 x)
  258 {-# INLINE happyIn27 #-}
  259 happyOut27 :: (HappyAbsSyn ) -> HappyWrap27
  260 happyOut27 x = Happy_GHC_Exts.unsafeCoerce# x
  261 {-# INLINE happyOut27 #-}
  262 newtype HappyWrap28 = HappyWrap28 ([GlobalReg])
  263 happyIn28 :: ([GlobalReg]) -> (HappyAbsSyn )
  264 happyIn28 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap28 x)
  265 {-# INLINE happyIn28 #-}
  266 happyOut28 :: (HappyAbsSyn ) -> HappyWrap28
  267 happyOut28 x = Happy_GHC_Exts.unsafeCoerce# x
  268 {-# INLINE happyOut28 #-}
  269 newtype HappyWrap29 = HappyWrap29 ([GlobalReg])
  270 happyIn29 :: ([GlobalReg]) -> (HappyAbsSyn )
  271 happyIn29 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap29 x)
  272 {-# INLINE happyIn29 #-}
  273 happyOut29 :: (HappyAbsSyn ) -> HappyWrap29
  274 happyOut29 x = Happy_GHC_Exts.unsafeCoerce# x
  275 {-# INLINE happyOut29 #-}
  276 newtype HappyWrap30 = HappyWrap30 (Maybe (Integer,Integer))
  277 happyIn30 :: (Maybe (Integer,Integer)) -> (HappyAbsSyn )
  278 happyIn30 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap30 x)
  279 {-# INLINE happyIn30 #-}
  280 happyOut30 :: (HappyAbsSyn ) -> HappyWrap30
  281 happyOut30 x = Happy_GHC_Exts.unsafeCoerce# x
  282 {-# INLINE happyOut30 #-}
  283 newtype HappyWrap31 = HappyWrap31 ([CmmParse ([Integer],Either BlockId (CmmParse ()))])
  284 happyIn31 :: ([CmmParse ([Integer],Either BlockId (CmmParse ()))]) -> (HappyAbsSyn )
  285 happyIn31 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap31 x)
  286 {-# INLINE happyIn31 #-}
  287 happyOut31 :: (HappyAbsSyn ) -> HappyWrap31
  288 happyOut31 x = Happy_GHC_Exts.unsafeCoerce# x
  289 {-# INLINE happyOut31 #-}
  290 newtype HappyWrap32 = HappyWrap32 (CmmParse ([Integer],Either BlockId (CmmParse ())))
  291 happyIn32 :: (CmmParse ([Integer],Either BlockId (CmmParse ()))) -> (HappyAbsSyn )
  292 happyIn32 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap32 x)
  293 {-# INLINE happyIn32 #-}
  294 happyOut32 :: (HappyAbsSyn ) -> HappyWrap32
  295 happyOut32 x = Happy_GHC_Exts.unsafeCoerce# x
  296 {-# INLINE happyOut32 #-}
  297 newtype HappyWrap33 = HappyWrap33 (CmmParse (Either BlockId (CmmParse ())))
  298 happyIn33 :: (CmmParse (Either BlockId (CmmParse ()))) -> (HappyAbsSyn )
  299 happyIn33 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap33 x)
  300 {-# INLINE happyIn33 #-}
  301 happyOut33 :: (HappyAbsSyn ) -> HappyWrap33
  302 happyOut33 x = Happy_GHC_Exts.unsafeCoerce# x
  303 {-# INLINE happyOut33 #-}
  304 newtype HappyWrap34 = HappyWrap34 ([Integer])
  305 happyIn34 :: ([Integer]) -> (HappyAbsSyn )
  306 happyIn34 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap34 x)
  307 {-# INLINE happyIn34 #-}
  308 happyOut34 :: (HappyAbsSyn ) -> HappyWrap34
  309 happyOut34 x = Happy_GHC_Exts.unsafeCoerce# x
  310 {-# INLINE happyOut34 #-}
  311 newtype HappyWrap35 = HappyWrap35 (Maybe (CmmParse ()))
  312 happyIn35 :: (Maybe (CmmParse ())) -> (HappyAbsSyn )
  313 happyIn35 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap35 x)
  314 {-# INLINE happyIn35 #-}
  315 happyOut35 :: (HappyAbsSyn ) -> HappyWrap35
  316 happyOut35 x = Happy_GHC_Exts.unsafeCoerce# x
  317 {-# INLINE happyOut35 #-}
  318 newtype HappyWrap36 = HappyWrap36 (CmmParse ())
  319 happyIn36 :: (CmmParse ()) -> (HappyAbsSyn )
  320 happyIn36 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap36 x)
  321 {-# INLINE happyIn36 #-}
  322 happyOut36 :: (HappyAbsSyn ) -> HappyWrap36
  323 happyOut36 x = Happy_GHC_Exts.unsafeCoerce# x
  324 {-# INLINE happyOut36 #-}
  325 newtype HappyWrap37 = HappyWrap37 (Maybe Bool)
  326 happyIn37 :: (Maybe Bool) -> (HappyAbsSyn )
  327 happyIn37 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap37 x)
  328 {-# INLINE happyIn37 #-}
  329 happyOut37 :: (HappyAbsSyn ) -> HappyWrap37
  330 happyOut37 x = Happy_GHC_Exts.unsafeCoerce# x
  331 {-# INLINE happyOut37 #-}
  332 newtype HappyWrap38 = HappyWrap38 (CmmParse CmmExpr)
  333 happyIn38 :: (CmmParse CmmExpr) -> (HappyAbsSyn )
  334 happyIn38 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap38 x)
  335 {-# INLINE happyIn38 #-}
  336 happyOut38 :: (HappyAbsSyn ) -> HappyWrap38
  337 happyOut38 x = Happy_GHC_Exts.unsafeCoerce# x
  338 {-# INLINE happyOut38 #-}
  339 newtype HappyWrap39 = HappyWrap39 (CmmParse CmmExpr)
  340 happyIn39 :: (CmmParse CmmExpr) -> (HappyAbsSyn )
  341 happyIn39 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap39 x)
  342 {-# INLINE happyIn39 #-}
  343 happyOut39 :: (HappyAbsSyn ) -> HappyWrap39
  344 happyOut39 x = Happy_GHC_Exts.unsafeCoerce# x
  345 {-# INLINE happyOut39 #-}
  346 newtype HappyWrap40 = HappyWrap40 (CmmType)
  347 happyIn40 :: (CmmType) -> (HappyAbsSyn )
  348 happyIn40 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap40 x)
  349 {-# INLINE happyIn40 #-}
  350 happyOut40 :: (HappyAbsSyn ) -> HappyWrap40
  351 happyOut40 x = Happy_GHC_Exts.unsafeCoerce# x
  352 {-# INLINE happyOut40 #-}
  353 newtype HappyWrap41 = HappyWrap41 ([CmmParse (CmmExpr, ForeignHint)])
  354 happyIn41 :: ([CmmParse (CmmExpr, ForeignHint)]) -> (HappyAbsSyn )
  355 happyIn41 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap41 x)
  356 {-# INLINE happyIn41 #-}
  357 happyOut41 :: (HappyAbsSyn ) -> HappyWrap41
  358 happyOut41 x = Happy_GHC_Exts.unsafeCoerce# x
  359 {-# INLINE happyOut41 #-}
  360 newtype HappyWrap42 = HappyWrap42 ([CmmParse (CmmExpr, ForeignHint)])
  361 happyIn42 :: ([CmmParse (CmmExpr, ForeignHint)]) -> (HappyAbsSyn )
  362 happyIn42 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap42 x)
  363 {-# INLINE happyIn42 #-}
  364 happyOut42 :: (HappyAbsSyn ) -> HappyWrap42
  365 happyOut42 x = Happy_GHC_Exts.unsafeCoerce# x
  366 {-# INLINE happyOut42 #-}
  367 newtype HappyWrap43 = HappyWrap43 (CmmParse (CmmExpr, ForeignHint))
  368 happyIn43 :: (CmmParse (CmmExpr, ForeignHint)) -> (HappyAbsSyn )
  369 happyIn43 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap43 x)
  370 {-# INLINE happyIn43 #-}
  371 happyOut43 :: (HappyAbsSyn ) -> HappyWrap43
  372 happyOut43 x = Happy_GHC_Exts.unsafeCoerce# x
  373 {-# INLINE happyOut43 #-}
  374 newtype HappyWrap44 = HappyWrap44 ([CmmParse CmmExpr])
  375 happyIn44 :: ([CmmParse CmmExpr]) -> (HappyAbsSyn )
  376 happyIn44 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap44 x)
  377 {-# INLINE happyIn44 #-}
  378 happyOut44 :: (HappyAbsSyn ) -> HappyWrap44
  379 happyOut44 x = Happy_GHC_Exts.unsafeCoerce# x
  380 {-# INLINE happyOut44 #-}
  381 newtype HappyWrap45 = HappyWrap45 ([CmmParse CmmExpr])
  382 happyIn45 :: ([CmmParse CmmExpr]) -> (HappyAbsSyn )
  383 happyIn45 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap45 x)
  384 {-# INLINE happyIn45 #-}
  385 happyOut45 :: (HappyAbsSyn ) -> HappyWrap45
  386 happyOut45 x = Happy_GHC_Exts.unsafeCoerce# x
  387 {-# INLINE happyOut45 #-}
  388 newtype HappyWrap46 = HappyWrap46 (CmmParse CmmExpr)
  389 happyIn46 :: (CmmParse CmmExpr) -> (HappyAbsSyn )
  390 happyIn46 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap46 x)
  391 {-# INLINE happyIn46 #-}
  392 happyOut46 :: (HappyAbsSyn ) -> HappyWrap46
  393 happyOut46 x = Happy_GHC_Exts.unsafeCoerce# x
  394 {-# INLINE happyOut46 #-}
  395 newtype HappyWrap47 = HappyWrap47 ([CmmParse (LocalReg, ForeignHint)])
  396 happyIn47 :: ([CmmParse (LocalReg, ForeignHint)]) -> (HappyAbsSyn )
  397 happyIn47 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap47 x)
  398 {-# INLINE happyIn47 #-}
  399 happyOut47 :: (HappyAbsSyn ) -> HappyWrap47
  400 happyOut47 x = Happy_GHC_Exts.unsafeCoerce# x
  401 {-# INLINE happyOut47 #-}
  402 newtype HappyWrap48 = HappyWrap48 ([CmmParse (LocalReg, ForeignHint)])
  403 happyIn48 :: ([CmmParse (LocalReg, ForeignHint)]) -> (HappyAbsSyn )
  404 happyIn48 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap48 x)
  405 {-# INLINE happyIn48 #-}
  406 happyOut48 :: (HappyAbsSyn ) -> HappyWrap48
  407 happyOut48 x = Happy_GHC_Exts.unsafeCoerce# x
  408 {-# INLINE happyOut48 #-}
  409 newtype HappyWrap49 = HappyWrap49 (CmmParse (LocalReg, ForeignHint))
  410 happyIn49 :: (CmmParse (LocalReg, ForeignHint)) -> (HappyAbsSyn )
  411 happyIn49 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap49 x)
  412 {-# INLINE happyIn49 #-}
  413 happyOut49 :: (HappyAbsSyn ) -> HappyWrap49
  414 happyOut49 x = Happy_GHC_Exts.unsafeCoerce# x
  415 {-# INLINE happyOut49 #-}
  416 newtype HappyWrap50 = HappyWrap50 (CmmParse LocalReg)
  417 happyIn50 :: (CmmParse LocalReg) -> (HappyAbsSyn )
  418 happyIn50 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap50 x)
  419 {-# INLINE happyIn50 #-}
  420 happyOut50 :: (HappyAbsSyn ) -> HappyWrap50
  421 happyOut50 x = Happy_GHC_Exts.unsafeCoerce# x
  422 {-# INLINE happyOut50 #-}
  423 newtype HappyWrap51 = HappyWrap51 (CmmParse CmmReg)
  424 happyIn51 :: (CmmParse CmmReg) -> (HappyAbsSyn )
  425 happyIn51 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap51 x)
  426 {-# INLINE happyIn51 #-}
  427 happyOut51 :: (HappyAbsSyn ) -> HappyWrap51
  428 happyOut51 x = Happy_GHC_Exts.unsafeCoerce# x
  429 {-# INLINE happyOut51 #-}
  430 newtype HappyWrap52 = HappyWrap52 (Maybe [CmmParse LocalReg])
  431 happyIn52 :: (Maybe [CmmParse LocalReg]) -> (HappyAbsSyn )
  432 happyIn52 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap52 x)
  433 {-# INLINE happyIn52 #-}
  434 happyOut52 :: (HappyAbsSyn ) -> HappyWrap52
  435 happyOut52 x = Happy_GHC_Exts.unsafeCoerce# x
  436 {-# INLINE happyOut52 #-}
  437 newtype HappyWrap53 = HappyWrap53 ([CmmParse LocalReg])
  438 happyIn53 :: ([CmmParse LocalReg]) -> (HappyAbsSyn )
  439 happyIn53 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap53 x)
  440 {-# INLINE happyIn53 #-}
  441 happyOut53 :: (HappyAbsSyn ) -> HappyWrap53
  442 happyOut53 x = Happy_GHC_Exts.unsafeCoerce# x
  443 {-# INLINE happyOut53 #-}
  444 newtype HappyWrap54 = HappyWrap54 ([CmmParse LocalReg])
  445 happyIn54 :: ([CmmParse LocalReg]) -> (HappyAbsSyn )
  446 happyIn54 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap54 x)
  447 {-# INLINE happyIn54 #-}
  448 happyOut54 :: (HappyAbsSyn ) -> HappyWrap54
  449 happyOut54 x = Happy_GHC_Exts.unsafeCoerce# x
  450 {-# INLINE happyOut54 #-}
  451 newtype HappyWrap55 = HappyWrap55 (CmmParse LocalReg)
  452 happyIn55 :: (CmmParse LocalReg) -> (HappyAbsSyn )
  453 happyIn55 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap55 x)
  454 {-# INLINE happyIn55 #-}
  455 happyOut55 :: (HappyAbsSyn ) -> HappyWrap55
  456 happyOut55 x = Happy_GHC_Exts.unsafeCoerce# x
  457 {-# INLINE happyOut55 #-}
  458 newtype HappyWrap56 = HappyWrap56 (CmmType)
  459 happyIn56 :: (CmmType) -> (HappyAbsSyn )
  460 happyIn56 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap56 x)
  461 {-# INLINE happyIn56 #-}
  462 happyOut56 :: (HappyAbsSyn ) -> HappyWrap56
  463 happyOut56 x = Happy_GHC_Exts.unsafeCoerce# x
  464 {-# INLINE happyOut56 #-}
  465 newtype HappyWrap57 = HappyWrap57 (CmmType)
  466 happyIn57 :: (CmmType) -> (HappyAbsSyn )
  467 happyIn57 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap57 x)
  468 {-# INLINE happyIn57 #-}
  469 happyOut57 :: (HappyAbsSyn ) -> HappyWrap57
  470 happyOut57 x = Happy_GHC_Exts.unsafeCoerce# x
  471 {-# INLINE happyOut57 #-}
  472 happyInTok :: (Located CmmToken) -> (HappyAbsSyn )
  473 happyInTok x = Happy_GHC_Exts.unsafeCoerce# x
  474 {-# INLINE happyInTok #-}
  475 happyOutTok :: (HappyAbsSyn ) -> (Located CmmToken)
  476 happyOutTok x = Happy_GHC_Exts.unsafeCoerce# x
  477 {-# INLINE happyOutTok #-}
  478 
  479 
  480 happyExpList :: HappyAddr
  481 happyExpList = HappyA# "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x37\x00\xc1\xff\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\x80\xdf\x00\x04\xff\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x08\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\x20\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\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\x02\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\x02\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x01\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\x20\x00\x00\x00\x00\x00\x00\x00\x20\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\x10\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\x08\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\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\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\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\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\x01\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\x10\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\x01\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\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\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\x02\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xf0\x3f\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\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\x20\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\x80\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\x40\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\x84\x00\x00\x00\x00\xd0\x63\xf3\xff\x03\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x08\x00\x00\x00\x00\x3d\x36\xff\x3f\x00\x00\x00\x00\x00\x00\x00\x10\x02\x00\x00\x00\x40\x8f\xcd\xff\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\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\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\x00\xc0\xff\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x88\x0c\x08\x00\x00\x00\x00\xfc\xff\x01\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x80\xc8\x00\x00\x00\x00\x00\xc0\xff\x1f\x00\x00\x00\x00\x00\x00\x00\x20\x32\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x08\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\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\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\x08\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\xf0\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\x01\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\x40\x00\x10\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\x01\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\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\xff\x03\x00\x00\x00\x00\x00\x00\x00\x84\xc8\x00\x00\x00\x00\x00\xc0\xff\x1f\x00\x00\x00\x00\x00\x00\x00\x08\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\x80\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\x08\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\x80\x00\x00\x00\x00\x00\x00\x00\x10\xc0\xff\xf0\x03\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\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\x80\xc8\x00\x00\x00\x00\x00\xc0\xff\x1f\x00\x00\x00\x00\x00\x00\x00\x20\x32\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x00\x20\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\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\xff\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88\x0c\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\x20\x32\x00\x00\x00\x00\x00\xf0\xff\x07\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\x80\xc8\x00\x00\x00\x00\x00\xc0\xff\x1f\x00\x00\x00\x00\x00\x00\x00\x20\x32\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x00\xf2\x3f\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\xfc\x0f\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\xff\xc3\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x0c\x00\x00\x00\x00\x00\x00\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\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88\x0c\x08\x00\x00\x00\x00\xfc\xff\x01\x00\x00\x00\x00\x00\x00\x00\x22\x03\x02\x00\x00\x00\x00\xff\x7f\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\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\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\x20\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x80\xc8\x00\x00\x00\x00\x00\xc0\xff\x1f\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\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\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x04\xf0\x3f\xfc\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\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\x06\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\x00\x00\x03\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\x10\xff\xc3\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x80\xc8\x00\x00\x00\x00\x00\xc0\xff\x1f\x00\x00\x00\x00\x00\x00\x00\x20\x32\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x88\x0c\x00\x00\x00\x00\x00\xfc\xff\x01\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x80\xc8\x00\x00\x00\x00\x00\xc0\xff\x1f\x00\x00\x00\x00\x00\x00\x00\x20\x32\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x88\x0c\x00\x00\x00\x00\x00\xfc\xff\x01\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x80\xc8\x00\x00\x00\x00\x00\xc0\xff\x1f\x00\x00\x00\x00\x00\x00\x00\x20\x32\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x88\x0c\x00\x00\x00\x00\x00\xfc\xff\x01\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x80\xc8\x00\x00\x00\x00\x00\xc0\xff\x1f\x00\x00\x00\x00\x00\x00\x00\x20\x32\x00\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x88\x0c\x00\x00\x00\x00\x00\xfc\xff\x01\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x01\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\x20\x32\x20\x00\x00\x00\x00\xf0\xff\x07\x00\x00\x00\x00\x00\x00\x00\x88\x0c\x08\x00\x00\x00\x00\xfc\xff\x01\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xff\x7f\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\x08\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x88\x0c\x00\x00\x00\x00\x00\xfc\xff\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x7f\xfc\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\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\xf0\x3f\xfc\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\x88\x0c\x00\x00\x00\x00\x04\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\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\x1f\x3f\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\x01\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\x10\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\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\xf0\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\xc0\x01\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\x10\xff\xc3\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xff\x7f\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\x04\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\x04\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\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\x01\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\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\x20\x32\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\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\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\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\x40\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\xf0\x3f\xfc\x00\x00\x00\x00\x00\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\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\x08\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88\x0c\x00\x00\x00\x00\x00\xfc\xff\x01\x00\x00\x00\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\x40\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\x40\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\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\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\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x02\x00\x00\x00\x40\x8f\xcd\xff\x0f\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\xfc\x03\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xc0\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\xf0\x0f\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\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\xc0\x3f\x30\x00\x00\x00\x00\x00\x00\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\xfc\x01\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x07\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88\x0c\x00\x00\x00\x00\x00\xfc\xff\x01\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x80\xc8\x00\x00\x00\x00\x00\xc0\xff\x1f\x00\x00\x00\x00\x00\x00\x00\x20\x32\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\x40\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\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\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x80\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\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\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\x40\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\x04\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\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\x08\x04\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x80\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\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\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\x04\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\x20\x32\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\x01\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\x80\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\x04\xf0\x3f\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\x0f\x3f\x00\x00\x00\x00\x00\x01\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\x40\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\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\xff\x7f\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\x22\x03\x00\x00\x00\x00\x00\xff\x7f\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\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\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\x08\x00\x00\x00\x00\x40\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\x04\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\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\x40\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\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\x08\x00\x00\x00\x00\x3d\x36\xff\x3f\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\x21\x00\x00\x00\x00\xf4\xd8\xfc\xff\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x02\x00\x00\x00\x40\x8f\xcd\xff\x0f\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\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\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\x08\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\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\x01\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\x10\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\x04\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\x04\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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"#
  482 
  483 {-# NOINLINE happyExpListPerState #-}
  484 happyExpListPerState st =
  485     token_strs_expected
  486   where token_strs = ["error","%dummy","%start_cmmParse","cmm","cmmtop","cmmdata","data_label","statics","static","lits","cmmproc","maybe_conv","maybe_body","info","body","decl","importNames","importName","names","stmt","unwind_regs","expr_or_unknown","foreignLabel","opt_never_returns","bool_expr","bool_op","safety","vols","globals","maybe_range","arms","arm","arm_body","ints","default","else","cond_likely","expr","expr0","maybe_ty","cmm_hint_exprs0","cmm_hint_exprs","cmm_hint_expr","exprs0","exprs","reg","foreign_results","foreign_formals","foreign_formal","local_lreg","lreg","maybe_formals","formals0","formals","formal","type","typenot8","':'","';'","'{'","'}'","'['","']'","'('","')'","'='","'`'","'~'","'/'","'*'","'%'","'-'","'+'","'&'","'^'","'|'","'>'","'<'","','","'!'","'..'","'::'","'>>'","'<<'","'>='","'<='","'=='","'!='","'&&'","'||'","'True'","'False'","'likely'","'CLOSURE'","'INFO_TABLE'","'INFO_TABLE_RET'","'INFO_TABLE_FUN'","'INFO_TABLE_CONSTR'","'INFO_TABLE_SELECTOR'","'else'","'export'","'section'","'goto'","'if'","'call'","'jump'","'foreign'","'never'","'prim'","'reserve'","'return'","'returns'","'import'","'switch'","'case'","'default'","'push'","'unwind'","'bits8'","'bits16'","'bits32'","'bits64'","'bits128'","'bits256'","'bits512'","'float32'","'float64'","'gcptr'","GLOBALREG","NAME","STRING","INT","FLOAT","%eof"]
  487         bit_start = st Prelude.* 134
  488         bit_end = (st Prelude.+ 1) Prelude.* 134
  489         read_bit = readArrayBit happyExpList
  490         bits = Prelude.map read_bit [bit_start..bit_end Prelude.- 1]
  491         bits_indexed = Prelude.zip bits [0..133]
  492         token_strs_expected = Prelude.concatMap f bits_indexed
  493         f (Prelude.False, _) = []
  494         f (Prelude.True, nr) = [token_strs Prelude.!! nr]
  495 
  496 happyActOffsets :: HappyAddr
  497 happyActOffsets = HappyA# "\x44\x01\x00\x00\xba\xff\x44\x01\x00\x00\x00\x00\xdf\xff\x00\x00\xcf\xff\x00\x00\x14\x00\x18\x00\x1c\x00\x1f\x00\x2c\x00\x33\x00\xe4\xff\x21\x00\xe0\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x00\x66\x00\x56\x00\x00\x00\x79\x00\xc9\x00\xcc\x00\xf2\x00\xb4\x00\xc6\x00\xc7\x00\xd8\x00\xda\x00\xe2\x00\x1a\x01\x19\x01\x00\x00\x00\x00\x2e\x00\x2f\x04\x00\x00\x18\x01\x1e\x01\x20\x01\x23\x01\x27\x01\x2a\x01\xf8\x00\x00\x00\xf9\x00\x00\x00\x00\x00\xe0\xff\x00\x00\x00\x00\x07\x01\x43\x01\x00\x00\x04\x01\x05\x01\x09\x01\x0a\x01\x0b\x01\x08\x01\x54\x01\x00\x00\x47\x01\x16\x01\x00\x00\x00\x00\x20\x00\x5f\x01\x20\x00\x20\x00\xfa\xff\x5d\x01\x23\x00\x00\x00\x22\x04\x26\x01\x63\x00\x72\x00\x72\x00\x72\x00\x72\x01\x75\x01\x74\x01\x35\x01\x00\x00\x10\x00\x00\x00\x2f\x04\x00\x00\x68\x01\x69\x01\x08\x00\x76\x01\x8e\x01\x92\x01\x00\x00\xa2\x01\x07\x01\xff\xff\xa7\x01\xb2\x01\xb5\x01\x02\x00\x77\x01\x73\x01\xbf\x01\xbc\x01\x00\x00\xd1\x01\x00\x00\x72\x00\x72\x00\x8f\x01\x72\x00\x00\x00\x00\x00\x00\x00\xbe\x01\xbe\x01\x00\x00\x00\x00\x9f\x01\xa0\x01\xa1\x01\x00\x00\x2f\x04\xb4\x01\xf5\x01\x72\x00\x00\x00\x00\x00\x72\x00\xfe\x01\x08\x02\x72\x00\x72\x00\xc7\x01\x72\x00\xab\x02\x16\x02\x63\x02\xfc\xff\x00\x00\xe7\x02\x63\x00\x63\x00\x11\x02\x0c\x02\x06\x02\x00\x00\x17\x02\x00\x00\xd5\x01\x72\x00\x72\x00\xd6\x01\x13\x02\x00\x00\x00\x00\x00\x00\xe3\x01\xe4\x01\xd3\x01\x30\x02\x00\x00\x25\x02\x26\x00\x26\x02\x00\x00\x00\x00\x5e\x00\x2f\x02\x94\x02\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x01\x00\x14\x02\x63\x00\x63\x00\x72\x00\x37\x02\x25\x00\x72\x00\x3b\x00\xbf\x02\x32\x02\x00\x00\x23\x02\xfb\x01\x3e\x02\x4c\x00\x00\x00\x3f\x02\xd3\x02\x46\x02\x33\x02\x49\x02\x3c\x02\x3d\x02\x4b\x02\x00\x00\x2f\x04\x00\x00\x7b\x00\x4d\x02\x00\x00\x94\x02\x72\x00\x19\x02\x00\x00\x4f\x02\x55\x02\x22\x02\x5a\x02\x61\x02\x6b\x02\x66\x02\x77\x02\x70\x02\x4a\x02\x00\x00\x72\x00\x00\x00\x31\x02\x39\x02\x3a\x02\x00\x00\x3b\x02\x00\x00\x00\x00\x7a\x02\x71\x02\xe7\x02\x00\x00\xc5\x00\x58\x02\x48\x02\x92\x02\x72\x00\xc5\x00\x00\x00\x8d\x02\x97\x02\x00\x00\x98\x02\x89\x02\x00\x00\xa2\x02\xcb\x00\x8b\x02\xac\x02\x20\x00\x6c\x02\xfb\x02\xfb\x02\xfb\x02\xfb\x02\x29\x00\x29\x00\xfb\x02\xfb\x02\x66\x01\x34\x04\x44\x04\x7b\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\x02\xa3\x02\x00\x00\xba\x02\x00\x00\xbb\x02\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\xc0\x02\xd7\x00\xc1\x02\x8e\x02\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\xd1\x02\x9d\x02\xb0\x02\xa0\x02\x00\x00\xa4\x02\x00\x00\xe8\x02\xe9\x02\xea\x02\xfd\x02\xf5\x02\x00\x00\x92\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc7\x02\xc9\x02\xc8\x02\xd6\x02\x00\x00\x1c\x03\x11\x03\x00\x00\x24\x03\x28\x03\x00\x00\x00\x00\x72\x00\x00\x00\x00\x00\x22\x03\x23\x03\x01\x03\x7c\x02\xe7\x01\xd3\x00\x2c\x03\x00\x00\x19\x03\x2f\x03\x3c\x03\x72\x00\xf6\x02\x00\x00\x00\x00\x72\x00\x00\x00\x3e\x03\x00\x00\x00\x00\x37\x03\x3f\x03\x00\x00\xf8\x02\x06\x00\x30\x03\x35\x03\x38\x03\x50\x03\x00\x00\x0d\x03\x16\x03\x17\x03\x00\x00\x20\x00\x25\x03\x00\x00\x20\x00\x60\x03\x20\x00\x67\x03\x3d\x03\x00\x00\x00\x00\x00\x00\x78\x03\x45\x03\x7c\x03\x84\x03\x00\x00\x86\x03\x8a\x03\x92\x03\x75\x03\x82\x03\x83\x03\x5a\x03\x40\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9e\x03\x9f\x03\x00\x00\x00\x00\x00\x00"#
  498 
  499 happyGotoOffsets :: HappyAddr
  500 happyGotoOffsets = HappyA# "\xbf\x00\x00\x00\x00\x00\xc3\x00\x00\x00\x00\x00\xa0\x03\x00\x00\x8b\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x03\x00\x00\xe8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x03\x00\x00\x00\x00\xa9\x03\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa7\x03\x00\x00\xc0\x03\x00\x00\x00\x00\xf4\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\xf0\x00\x00\x00\xf3\x00\xfb\x00\x00\x00\x00\x00\xb5\x03\x00\x00\x4b\x04\x00\x00\x79\x01\x4f\x03\x51\x03\x5d\x03\x00\x00\x9a\x03\x00\x00\xbd\x03\x00\x00\x00\x00\x00\x00\x90\x01\x00\x00\xbc\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe5\x00\x5f\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x03\x6d\x03\x00\x00\x79\x03\x00\x00\x00\x00\x00\x00\xac\x03\xad\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x01\x00\x00\x00\x00\x7b\x03\x00\x00\x00\x00\x30\x01\x00\x00\x00\x00\x93\x01\x87\x03\x00\x00\xf9\x02\x00\x00\xba\x03\x00\x00\xbb\x03\x00\x00\x00\x00\x7b\x01\x7d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb0\x03\x89\x03\x95\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcc\x03\x00\x00\x00\x00\x00\x00\x00\x00\xe7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\x03\xa3\x03\xa5\x03\xb1\x03\xb3\x03\xbf\x03\xc1\x03\xcd\x03\xcf\x03\xdb\x03\xdd\x03\xe9\x03\xeb\x03\xf7\x03\xf9\x03\x05\x04\x00\x00\x00\x00\x7f\x01\x95\x01\xfc\x02\x00\x00\xc7\x03\x10\x03\xbe\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\xff\x00\x00\x00\x00\xe4\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\x04\x00\x00\x00\x00\x00\x00\xe6\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\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\xe5\x03\xf1\x00\x00\x00\x00\x00\x43\x03\xef\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x03\x51\x00\x13\x04\x15\x04\x00\x00\x00\x00\x00\x00\x00\x00\xe1\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdc\x03\xfc\x00\xde\x03\x00\x00\xf5\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xec\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\x2a\x03\x00\x00\x00\x00\x00\x00\x00\x00\xe8\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x03\xf2\x03\x00\x00\x00\x00\x41\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xec\x03\xfa\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x01\x00\x00\x00\x00\x2c\x01\x00\x00\x33\x01\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"#
  501 
  502 happyAdjustOffset :: Happy_GHC_Exts.Int# -> Happy_GHC_Exts.Int#
  503 happyAdjustOffset off = off
  504 
  505 happyDefActions :: HappyAddr
  506 happyDefActions = HappyA# "\xfe\xff\x00\x00\x00\x00\xfe\xff\xfb\xff\xfc\xff\xeb\xff\xfa\xff\x00\x00\x5f\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\xff\x5e\xff\x5d\xff\x5c\xff\x5b\xff\x5a\xff\x59\xff\x58\xff\x57\xff\x56\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\x68\xff\xea\xff\xfd\xff\x00\x00\x66\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\x65\xff\x63\xff\x00\x00\xec\xff\xe9\xff\xe0\xff\x00\x00\xe0\xff\xe0\xff\x00\x00\x00\x00\x00\x00\xd3\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaa\xff\x00\x00\x00\x00\x69\xff\x6a\xff\x61\xff\x64\xff\x67\xff\xee\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\xff\x00\x00\xf6\xff\x00\x00\x5f\xff\x00\x00\x60\xff\x00\x00\x00\x00\x00\x00\x00\x00\x88\xff\x84\xff\x00\x00\xf3\xff\x00\x00\x00\x00\x00\x00\x00\x00\x73\xff\x74\xff\x85\xff\x80\xff\x80\xff\xf5\xff\xf8\xff\x00\x00\x00\x00\x00\x00\xe2\xff\x66\xff\x00\x00\x00\x00\x00\x00\x62\xff\xd2\xff\x78\xff\x00\x00\x00\x00\x78\xff\x00\x00\x00\x00\x78\xff\x00\x00\x00\x00\x00\x00\x9c\xff\xb8\xff\xb7\xff\x00\x00\x00\x00\x00\x00\x00\x00\x70\xff\x6d\xff\x00\x00\x6b\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xde\xff\xdf\xff\xe8\xff\x00\x00\x00\x00\x00\x00\x00\x00\x6c\xff\x00\x00\x6f\xff\x00\x00\xcb\xff\xb4\xff\x00\x00\xb8\xff\xb7\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\x78\xff\x00\x00\x00\x00\x78\xff\x00\x00\x76\xff\x00\x00\x77\xff\x00\x00\x00\x00\x00\x00\x00\x00\xc0\xff\x00\x00\xee\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\xff\x00\x00\x87\xff\x8a\xff\x00\x00\x8b\xff\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\x81\xff\x78\xff\x7f\xff\x00\x00\x00\x00\x00\x00\xe1\xff\x00\x00\xf9\xff\xed\xff\x00\x00\xbe\xff\xbc\xff\xbd\xff\x00\x00\xa9\xff\x00\x00\x00\x00\x00\x00\x00\x00\x6a\xff\x00\x00\x00\x00\xb0\xff\x00\x00\xad\xff\xc9\xff\x00\x00\xb5\xff\xb6\xff\x00\x00\xe0\xff\x00\x00\x8d\xff\x8c\xff\x8f\xff\x91\xff\x95\xff\x96\xff\x8e\xff\x90\xff\x92\xff\x93\xff\x94\xff\x97\xff\x98\xff\x99\xff\x9a\xff\x9b\xff\xb3\xff\x71\xff\x6e\xff\x00\x00\x00\x00\xd1\xff\x00\x00\xbb\xff\x00\x00\x78\xff\x7e\xff\x00\x00\x00\x00\xc4\xff\x00\x00\x00\x00\x00\x00\x00\x00\xaf\xff\xae\xff\x00\x00\xc1\xff\x75\xff\xca\xff\x00\x00\xa1\xff\xa9\xff\x00\x00\xc2\xff\x00\x00\xcd\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x83\xff\x00\x00\xf0\xff\xef\xff\xf2\xff\xf1\xff\x89\xff\x82\xff\x00\x00\x00\x00\x00\x00\x00\x00\xbf\xff\x00\x00\xa4\xff\xa8\xff\x00\x00\x00\x00\xab\xff\xc8\xff\x78\xff\xac\xff\xc6\xff\x00\x00\x00\x00\xa0\xff\x00\x00\x00\x00\x7a\xff\x00\x00\x7d\xff\x7c\xff\x00\x00\x00\x00\x00\x00\xb2\xff\x79\xff\xd0\xff\x78\xff\xc3\xff\x00\x00\x9d\xff\x9e\xff\x00\x00\x00\x00\xcc\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe3\xff\x00\x00\x00\x00\x00\x00\xa7\xff\xe0\xff\x00\x00\xa3\xff\xe0\xff\x00\x00\xe0\xff\x00\x00\xba\xff\xb1\xff\x7b\xff\xce\xff\x00\x00\x00\x00\x00\x00\x00\x00\xc7\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe6\xff\xa6\xff\xa5\xff\xa2\xff\x9f\xff\xc5\xff\xb9\xff\xcf\xff\x00\x00\x00\x00\xe4\xff\xe5\xff"#
  507 
  508 happyCheck :: HappyAddr
  509 happyCheck = HappyA# "\xff\xff\x02\x00\x12\x00\x07\x00\x03\x00\x25\x00\x07\x00\x4d\x00\x06\x00\x03\x00\x0b\x00\x04\x00\x05\x00\x0e\x00\x0f\x00\x23\x00\x08\x00\x01\x00\x22\x00\x23\x00\x02\x00\x36\x00\x2a\x00\x07\x00\x49\x00\x07\x00\x2a\x00\x07\x00\x20\x00\x21\x00\x16\x00\x07\x00\x34\x00\x35\x00\x02\x00\x07\x00\x34\x00\x35\x00\x07\x00\x07\x00\x05\x00\x49\x00\x4a\x00\x06\x00\x32\x00\x49\x00\x34\x00\x2e\x00\x02\x00\x03\x00\x0d\x00\x07\x00\x2e\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x07\x00\x34\x00\x35\x00\x3e\x00\x3f\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\x2c\x00\x4b\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x07\x00\x34\x00\x35\x00\x36\x00\x0b\x00\x38\x00\x39\x00\x0e\x00\x0f\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x07\x00\x4a\x00\x49\x00\x48\x00\x0b\x00\x49\x00\x4a\x00\x0e\x00\x0f\x00\x22\x00\x23\x00\x02\x00\x25\x00\x26\x00\x27\x00\x07\x00\x17\x00\x2a\x00\x16\x00\x0b\x00\x20\x00\x21\x00\x0e\x00\x0f\x00\x36\x00\x48\x00\x49\x00\x34\x00\x35\x00\x0c\x00\x0d\x00\x0e\x00\x3e\x00\x3f\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\x07\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x49\x00\x0e\x00\x3e\x00\x3f\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\x3e\x00\x3f\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\x00\x00\x01\x00\x02\x00\x49\x00\x00\x00\x01\x00\x02\x00\x07\x00\x02\x00\x03\x00\x0a\x00\x07\x00\x0c\x00\x03\x00\x0a\x00\x02\x00\x0c\x00\x3e\x00\x3f\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\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x04\x00\x05\x00\x20\x00\x21\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x34\x00\x35\x00\x0d\x00\x0e\x00\x34\x00\x35\x00\x22\x00\x23\x00\x0b\x00\x0c\x00\x49\x00\x0b\x00\x0c\x00\x10\x00\x0d\x00\x0e\x00\x10\x00\x34\x00\x35\x00\x0b\x00\x0c\x00\x16\x00\x0b\x00\x0c\x00\x10\x00\x1b\x00\x1c\x00\x10\x00\x49\x00\x49\x00\x0b\x00\x0c\x00\x2c\x00\x2d\x00\x2e\x00\x10\x00\x1b\x00\x1c\x00\x34\x00\x35\x00\x2b\x00\x02\x00\x4a\x00\x2b\x00\x2f\x00\x07\x00\x49\x00\x2f\x00\x49\x00\x34\x00\x35\x00\x2b\x00\x34\x00\x35\x00\x2b\x00\x2f\x00\x49\x00\x25\x00\x2f\x00\x16\x00\x34\x00\x35\x00\x2b\x00\x34\x00\x35\x00\x16\x00\x2f\x00\x16\x00\x0b\x00\x0c\x00\x16\x00\x34\x00\x35\x00\x10\x00\x16\x00\x0b\x00\x0c\x00\x16\x00\x49\x00\x49\x00\x10\x00\x01\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x4b\x00\x4b\x00\x49\x00\x22\x00\x23\x00\x4b\x00\x4b\x00\x4b\x00\x2b\x00\x28\x00\x29\x00\x2a\x00\x2f\x00\x08\x00\x16\x00\x2b\x00\x49\x00\x34\x00\x35\x00\x2f\x00\x04\x00\x34\x00\x35\x00\x09\x00\x34\x00\x35\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x49\x00\x2c\x00\x2d\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x07\x00\x05\x00\x07\x00\x38\x00\x48\x00\x16\x00\x16\x00\x1a\x00\x1b\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x16\x00\x49\x00\x15\x00\x16\x00\x15\x00\x16\x00\x15\x00\x16\x00\x15\x00\x16\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x22\x00\x23\x00\x22\x00\x23\x00\x22\x00\x23\x00\x22\x00\x23\x00\x2a\x00\x16\x00\x2a\x00\x04\x00\x2a\x00\x16\x00\x2a\x00\x15\x00\x16\x00\x05\x00\x34\x00\x35\x00\x34\x00\x35\x00\x34\x00\x35\x00\x34\x00\x35\x00\x22\x00\x23\x00\x22\x00\x23\x00\x07\x00\x05\x00\x28\x00\x29\x00\x2a\x00\x4b\x00\x2a\x00\x49\x00\x02\x00\x32\x00\x33\x00\x34\x00\x35\x00\x0a\x00\x34\x00\x35\x00\x34\x00\x35\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x02\x00\x05\x00\x19\x00\x49\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\x4b\x00\x4b\x00\x4b\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\x08\x00\x03\x00\x4b\x00\x02\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\x4b\x00\x02\x00\x08\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x05\x00\x16\x00\x07\x00\x49\x00\x08\x00\x4a\x00\x0e\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x49\x00\x49\x00\x09\x00\x09\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x06\x00\x08\x00\x24\x00\x02\x00\x08\x00\x18\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x08\x00\x08\x00\x02\x00\x16\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x06\x00\x08\x00\x16\x00\x16\x00\x07\x00\x06\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x06\x00\x16\x00\x49\x00\x02\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x07\x00\x16\x00\x4a\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\x4a\x00\x02\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x07\x00\x4b\x00\x4b\x00\x4b\x00\x16\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x3a\x00\x4b\x00\x02\x00\x08\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x08\x00\x06\x00\x06\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\x20\x00\x09\x00\x01\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x09\x00\x49\x00\x30\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x07\x00\x07\x00\x02\x00\x04\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\x48\x00\x06\x00\x3b\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\x3a\x00\x4b\x00\x48\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\x08\x00\x16\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\x4a\x00\x4a\x00\x16\x00\x4b\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x22\x00\x23\x00\x01\x00\x22\x00\x23\x00\x4a\x00\x28\x00\x29\x00\x2a\x00\x28\x00\x29\x00\x2a\x00\x16\x00\x04\x00\x01\x00\x08\x00\x08\x00\x2b\x00\x34\x00\x35\x00\x16\x00\x34\x00\x35\x00\x22\x00\x23\x00\x08\x00\x22\x00\x23\x00\x08\x00\x28\x00\x29\x00\x2a\x00\x28\x00\x29\x00\x2a\x00\x02\x00\x08\x00\x4a\x00\x03\x00\x03\x00\x4b\x00\x34\x00\x35\x00\x16\x00\x34\x00\x35\x00\x22\x00\x23\x00\x16\x00\x22\x00\x23\x00\x16\x00\x28\x00\x29\x00\x2a\x00\x28\x00\x29\x00\x2a\x00\x22\x00\x23\x00\x4a\x00\x08\x00\x26\x00\x27\x00\x34\x00\x35\x00\x2a\x00\x34\x00\x35\x00\x4a\x00\x4a\x00\x02\x00\x22\x00\x23\x00\x22\x00\x23\x00\x34\x00\x35\x00\x28\x00\x29\x00\x2a\x00\x29\x00\x2a\x00\x49\x00\x08\x00\x33\x00\x22\x00\x23\x00\x22\x00\x23\x00\x34\x00\x35\x00\x34\x00\x35\x00\x2a\x00\x02\x00\x2a\x00\x37\x00\x08\x00\x02\x00\x22\x00\x23\x00\x22\x00\x23\x00\x34\x00\x35\x00\x34\x00\x35\x00\x2a\x00\x04\x00\x2a\x00\x04\x00\x4b\x00\x02\x00\x22\x00\x23\x00\x22\x00\x23\x00\x34\x00\x35\x00\x34\x00\x35\x00\x2a\x00\x04\x00\x2a\x00\x16\x00\x16\x00\x0f\x00\x22\x00\x23\x00\x22\x00\x23\x00\x34\x00\x35\x00\x34\x00\x35\x00\x2a\x00\x4a\x00\x2a\x00\x08\x00\x08\x00\x08\x00\x22\x00\x23\x00\x22\x00\x23\x00\x34\x00\x35\x00\x34\x00\x35\x00\x2a\x00\x09\x00\x2a\x00\x1a\x00\x0f\x00\x0f\x00\x22\x00\x23\x00\x22\x00\x23\x00\x34\x00\x35\x00\x34\x00\x35\x00\x2a\x00\x30\x00\x2a\x00\x06\x00\x03\x00\x0f\x00\x22\x00\x23\x00\x22\x00\x23\x00\x34\x00\x35\x00\x34\x00\x35\x00\x2a\x00\x11\x00\x2a\x00\x24\x00\x24\x00\x18\x00\x22\x00\x23\x00\x22\x00\x23\x00\x34\x00\x35\x00\x34\x00\x35\x00\x2a\x00\x21\x00\x2a\x00\x2e\x00\x13\x00\x19\x00\x22\x00\x23\x00\x22\x00\x23\x00\x34\x00\x35\x00\x34\x00\x35\x00\x2a\x00\x06\x00\x2a\x00\x06\x00\x2f\x00\x09\x00\x22\x00\x23\x00\x22\x00\x23\x00\x34\x00\x35\x00\x34\x00\x35\x00\x2a\x00\x09\x00\x2a\x00\x19\x00\x1f\x00\x1e\x00\x22\x00\x23\x00\x22\x00\x23\x00\x34\x00\x35\x00\x34\x00\x35\x00\x2a\x00\x11\x00\x2a\x00\x20\x00\x17\x00\x1e\x00\x22\x00\x23\x00\x22\x00\x23\x00\x34\x00\x35\x00\x34\x00\x35\x00\x2a\x00\x14\x00\x2a\x00\xff\xff\x1d\x00\xff\xff\x22\x00\x23\x00\x22\x00\x23\x00\x34\x00\x35\x00\x34\x00\x35\x00\x2a\x00\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\x22\x00\x23\x00\x22\x00\x23\x00\x34\x00\x35\x00\x34\x00\x35\x00\x2a\x00\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\x22\x00\x23\x00\x22\x00\x23\x00\x34\x00\x35\x00\x34\x00\x35\x00\x2a\x00\xff\xff\x2a\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\xff\xff\x34\x00\x35\x00\x34\x00\x35\x00\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\x4a\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x2c\x00\x2d\x00\x2e\x00\xff\xff\xff\xff\xff\xff\x32\x00\x33\x00\x34\x00\x35\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"#
  510 
  511 happyTable :: HappyAddr
  512 happyTable = HappyA# "\x00\x00\x7c\x00\x03\x01\xcd\x00\x18\x01\x21\x00\x7d\x00\xff\xff\xf1\x00\x87\x01\x7e\x00\x6e\x00\x6f\x00\x7f\x00\x80\x00\x53\x01\x8b\x00\x91\x00\x04\x01\x78\x00\x61\x01\x2f\x00\x79\x00\x92\x00\x26\x00\x62\x01\x79\x00\x2c\x00\xce\x00\xcf\x00\x8c\x00\x2b\x00\x7a\x00\x09\x00\x58\x00\x2a\x00\x7a\x00\x09\x00\x29\x00\x59\x00\xa8\x00\x22\x00\x23\x00\x10\x01\xaa\x00\x26\x00\xab\x00\x19\x01\x50\x00\x51\x00\x11\x01\x28\x00\x88\x01\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\x27\x00\x70\x00\x71\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x11\x00\xf2\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x72\xff\x7d\x00\x72\xff\x5e\x00\x5f\x00\x7e\x00\x13\x00\x60\x00\x7f\x00\x80\x00\x61\x00\x62\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x63\x00\x64\x00\x9f\x00\x24\x00\x26\x00\x12\x01\x7e\x00\xa6\x00\xa7\x00\x7f\x00\x80\x00\x69\x01\x78\x00\x40\x00\x6a\x01\x6b\x01\x6c\x01\x7d\x00\xa0\x00\x79\x00\x3f\x00\x7e\x00\xce\x00\xcf\x00\x7f\x00\x80\x00\x06\x01\x63\x00\x0d\x01\x7a\x00\x09\x00\xbc\x00\xbd\x00\xbe\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x7d\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x09\x00\x3e\x00\x7f\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x02\x00\x03\x00\x04\x00\x3d\x00\x2f\x00\x03\x00\x04\x00\x05\x00\x50\x00\x51\x00\x06\x00\x05\x00\x07\x00\x3c\x00\x06\x00\x3b\x00\x07\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\x85\x00\x6f\x00\xce\x00\xcf\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\x08\x00\x09\x00\x1e\x00\x1f\x00\x08\x00\x09\x00\x65\x01\x66\x01\x51\x00\x52\x00\x39\x00\xac\x00\x52\x00\x53\x00\x40\x00\x1f\x00\x53\x00\xfa\x00\x09\x00\xab\x00\x52\x00\x3a\x00\x37\x01\x52\x00\x53\x00\x42\x01\x43\x01\x53\x00\x38\x00\x37\x00\x98\x01\x52\x00\x2b\x01\xa2\x00\xa3\x00\x53\x00\x5c\x01\x43\x01\x70\x00\x71\x00\x54\x00\x33\x00\x72\x01\x54\x00\x55\x00\x32\x00\x36\x00\x55\x00\x35\x00\x56\x00\x09\x00\x54\x00\x56\x00\x09\x00\x54\x00\x55\x00\x34\x00\x73\x00\x55\x00\x4a\x00\x56\x00\x09\x00\x54\x00\x56\x00\x09\x00\x49\x00\x55\x00\x48\x00\x96\x01\x52\x00\x47\x00\x56\x00\x09\x00\x53\x00\x46\x00\x94\x01\x52\x00\x45\x00\x26\x00\x43\x00\x53\x00\x6e\x00\x74\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x6d\x00\x6c\x00\x68\x00\xd4\x00\x78\x00\x6b\x00\x6a\x00\x69\x00\x54\x00\xdc\x00\xd6\x00\x79\x00\x55\x00\x67\x00\x66\x00\x54\x00\x65\x00\x56\x00\x09\x00\x55\x00\xae\x00\x7a\x00\x09\x00\xa9\x00\x56\x00\x09\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\xa1\x00\x11\x00\x12\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\x98\x00\x97\x00\x95\x00\x13\x00\x94\x00\x8f\x00\x8d\x00\xc6\x00\xc7\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x8a\x00\x1e\x00\x9b\x00\x9c\x00\xb8\x00\xb9\x00\xb7\x00\x9c\x00\x15\x01\x9c\x00\xe0\x00\x4b\x00\x4c\x00\x4d\x00\x09\x00\x9d\x00\x78\x00\xba\x00\x78\x00\x9d\x00\x78\x00\x9d\x00\x78\x00\x79\x00\x89\x00\x79\x00\x87\x00\x79\x00\x88\x00\x79\x00\x14\x01\x9c\x00\x77\x00\x7a\x00\x09\x00\x7a\x00\x09\x00\x7a\x00\x09\x00\x7a\x00\x09\x00\xd4\x00\x78\x00\x9d\x00\x78\x00\x76\x00\x75\x00\xd9\x00\xd6\x00\x79\x00\xef\x00\x79\x00\xf0\x00\xee\x00\x8f\x00\x4c\x00\x4d\x00\x09\x00\xed\x00\x7a\x00\x09\x00\x7a\x00\x09\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\x2f\x01\xec\x00\xe6\x00\xe9\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\x73\x01\xe4\x00\xe3\x00\xe2\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xdf\x00\x08\x01\xe0\x00\xdc\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xdb\x00\xd8\x00\xb7\x00\xb6\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xd2\x00\xb5\x00\xd3\x00\xa6\x00\xb4\x00\xb0\x00\xaf\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\x32\x01\x31\x01\x2d\x01\x2b\x01\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\x2e\x01\x2a\x01\x17\x01\x13\x01\x0a\x01\x09\x01\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\x07\x01\x03\x01\x01\x01\x00\x01\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\x4e\x01\xff\x00\xfe\x00\xfd\x00\xfa\x00\xf6\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xf3\x00\xfc\x00\xf7\x00\x53\x01\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xd0\x00\x8f\x00\xf4\x00\x52\x01\x51\x01\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\x50\x01\x4f\x01\x4c\x01\x48\x01\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\x74\x01\x4b\x01\x4a\x01\x49\x01\x47\x01\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\x45\x01\x42\x01\x41\x01\x3e\x01\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xf9\x00\x3d\x01\x3c\x01\x3b\x01\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\x3a\x01\xce\x00\x35\x01\x39\x01\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xd4\x00\x37\x01\x36\x01\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\x34\x01\x33\x01\x64\x01\x67\x01\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\x0b\x01\x12\x01\x60\x01\x5f\x01\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\x8f\x00\x45\x01\x5c\x01\x94\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\x55\x01\x59\x01\x58\x01\x57\x01\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\x00\x00\x00\x00\x81\x01\x7f\x01\x56\x01\x80\x01\xc6\x00\xc7\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x00\x78\x00\x7d\x01\xd4\x00\x78\x00\x7e\x01\xd5\x00\xd6\x00\x79\x00\x13\x01\xd6\x00\x79\x00\x7c\x01\x7b\x01\x7a\x01\x78\x01\x77\x01\x76\x01\x7a\x00\x09\x00\x70\x01\x7a\x00\x09\x00\xd4\x00\x78\x00\x71\x01\xd4\x00\x78\x00\x6f\x01\x0d\x01\xd6\x00\x79\x00\x4c\x01\xd6\x00\x79\x00\x91\x01\x8b\x01\x8f\x01\x8c\x01\x8a\x01\x5c\x01\x7a\x00\x09\x00\x85\x01\x7a\x00\x09\x00\xd4\x00\x78\x00\x84\x01\xd4\x00\x78\x00\x83\x01\x6d\x01\xd6\x00\x79\x00\x78\x01\xd6\x00\x79\x00\x69\x01\x78\x00\x9c\x01\x82\x01\x8f\x01\x6c\x01\x7a\x00\x09\x00\x79\x00\x7a\x00\x09\x00\x9b\x01\x9a\x01\x96\x01\xd4\x00\x78\x00\xd4\x00\x78\x00\x7a\x00\x09\x00\x8c\x01\xd6\x00\x79\x00\x3f\x01\x79\x00\x98\x01\x94\x01\x93\x01\x9a\x00\x78\x00\x99\x00\x78\x00\x7a\x00\x09\x00\x7a\x00\x09\x00\x79\x00\xa6\x01\x79\x00\xa5\x01\x9f\x01\xa4\x01\x98\x00\x78\x00\x77\x00\x78\x00\x7a\x00\x09\x00\x7a\x00\x09\x00\x79\x00\xa3\x01\x79\x00\xa2\x01\xa7\x01\xa1\x01\xea\x00\x78\x00\xe9\x00\x78\x00\x7a\x00\x09\x00\x7a\x00\x09\x00\x79\x00\xa0\x01\x79\x00\x9e\x01\x9d\x01\x2c\x00\xe7\x00\x78\x00\xdd\x00\x78\x00\x7a\x00\x09\x00\x7a\x00\x09\x00\x79\x00\xa8\x01\x79\x00\xaa\x01\xa9\x01\x2d\x00\xd8\x00\x78\x00\xb1\x00\x78\x00\x7a\x00\x09\x00\x7a\x00\x09\x00\x79\x00\x4e\x00\x79\x00\x95\x00\x24\x00\x43\x00\xb0\x00\x78\x00\x28\x01\x78\x00\x7a\x00\x09\x00\x7a\x00\x09\x00\x79\x00\x30\x00\x79\x00\x8d\x00\x41\x00\x2c\x00\x27\x01\x78\x00\x26\x01\x78\x00\x7a\x00\x09\x00\x7a\x00\x09\x00\x79\x00\x92\x00\x79\x00\xe6\x00\xe4\x00\xd0\x00\x25\x01\x78\x00\x24\x01\x78\x00\x7a\x00\x09\x00\x7a\x00\x09\x00\x79\x00\xcb\x00\x79\x00\xb2\x00\x2f\x01\x0e\x01\x23\x01\x78\x00\x22\x01\x78\x00\x7a\x00\x09\x00\x7a\x00\x09\x00\x79\x00\x01\x01\x79\x00\xf4\x00\x0b\x01\x45\x01\x21\x01\x78\x00\x20\x01\x78\x00\x7a\x00\x09\x00\x7a\x00\x09\x00\x79\x00\x3e\x01\x79\x00\x62\x01\x5d\x01\x5a\x01\x1f\x01\x78\x00\x1e\x01\x78\x00\x7a\x00\x09\x00\x7a\x00\x09\x00\x79\x00\x59\x01\x79\x00\x74\x01\x8d\x01\x88\x01\x1d\x01\x78\x00\x1c\x01\x78\x00\x7a\x00\x09\x00\x7a\x00\x09\x00\x79\x00\x91\x01\x79\x00\x00\x00\x85\x01\x00\x00\x1b\x01\x78\x00\x1a\x01\x78\x00\x7a\x00\x09\x00\x7a\x00\x09\x00\x79\x00\x00\x00\x79\x00\x00\x00\x00\x00\x00\x00\x19\x01\x78\x00\xf7\x00\x78\x00\x7a\x00\x09\x00\x7a\x00\x09\x00\x79\x00\x00\x00\x79\x00\x00\x00\x00\x00\x00\x00\x68\x01\x78\x00\x67\x01\x78\x00\x7a\x00\x09\x00\x7a\x00\x09\x00\x79\x00\x00\x00\x79\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\x00\x00\x7a\x00\x09\x00\x7a\x00\x09\x00\x00\x00\x00\x00\x00\x00\xc6\x00\xc7\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc6\x00\xc7\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\xa6\x00\xa7\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xa1\x00\xa2\x00\xa3\x00\x00\x00\x00\x00\x00\x00\xa4\x00\x4c\x00\x4d\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
  513 
  514 happyReduceArr = Happy_Data_Array.array (1, 169) [
  515         (1 , happyReduce_1),
  516         (2 , happyReduce_2),
  517         (3 , happyReduce_3),
  518         (4 , happyReduce_4),
  519         (5 , happyReduce_5),
  520         (6 , happyReduce_6),
  521         (7 , happyReduce_7),
  522         (8 , happyReduce_8),
  523         (9 , happyReduce_9),
  524         (10 , happyReduce_10),
  525         (11 , happyReduce_11),
  526         (12 , happyReduce_12),
  527         (13 , happyReduce_13),
  528         (14 , happyReduce_14),
  529         (15 , happyReduce_15),
  530         (16 , happyReduce_16),
  531         (17 , happyReduce_17),
  532         (18 , happyReduce_18),
  533         (19 , happyReduce_19),
  534         (20 , happyReduce_20),
  535         (21 , happyReduce_21),
  536         (22 , happyReduce_22),
  537         (23 , happyReduce_23),
  538         (24 , happyReduce_24),
  539         (25 , happyReduce_25),
  540         (26 , happyReduce_26),
  541         (27 , happyReduce_27),
  542         (28 , happyReduce_28),
  543         (29 , happyReduce_29),
  544         (30 , happyReduce_30),
  545         (31 , happyReduce_31),
  546         (32 , happyReduce_32),
  547         (33 , happyReduce_33),
  548         (34 , happyReduce_34),
  549         (35 , happyReduce_35),
  550         (36 , happyReduce_36),
  551         (37 , happyReduce_37),
  552         (38 , happyReduce_38),
  553         (39 , happyReduce_39),
  554         (40 , happyReduce_40),
  555         (41 , happyReduce_41),
  556         (42 , happyReduce_42),
  557         (43 , happyReduce_43),
  558         (44 , happyReduce_44),
  559         (45 , happyReduce_45),
  560         (46 , happyReduce_46),
  561         (47 , happyReduce_47),
  562         (48 , happyReduce_48),
  563         (49 , happyReduce_49),
  564         (50 , happyReduce_50),
  565         (51 , happyReduce_51),
  566         (52 , happyReduce_52),
  567         (53 , happyReduce_53),
  568         (54 , happyReduce_54),
  569         (55 , happyReduce_55),
  570         (56 , happyReduce_56),
  571         (57 , happyReduce_57),
  572         (58 , happyReduce_58),
  573         (59 , happyReduce_59),
  574         (60 , happyReduce_60),
  575         (61 , happyReduce_61),
  576         (62 , happyReduce_62),
  577         (63 , happyReduce_63),
  578         (64 , happyReduce_64),
  579         (65 , happyReduce_65),
  580         (66 , happyReduce_66),
  581         (67 , happyReduce_67),
  582         (68 , happyReduce_68),
  583         (69 , happyReduce_69),
  584         (70 , happyReduce_70),
  585         (71 , happyReduce_71),
  586         (72 , happyReduce_72),
  587         (73 , happyReduce_73),
  588         (74 , happyReduce_74),
  589         (75 , happyReduce_75),
  590         (76 , happyReduce_76),
  591         (77 , happyReduce_77),
  592         (78 , happyReduce_78),
  593         (79 , happyReduce_79),
  594         (80 , happyReduce_80),
  595         (81 , happyReduce_81),
  596         (82 , happyReduce_82),
  597         (83 , happyReduce_83),
  598         (84 , happyReduce_84),
  599         (85 , happyReduce_85),
  600         (86 , happyReduce_86),
  601         (87 , happyReduce_87),
  602         (88 , happyReduce_88),
  603         (89 , happyReduce_89),
  604         (90 , happyReduce_90),
  605         (91 , happyReduce_91),
  606         (92 , happyReduce_92),
  607         (93 , happyReduce_93),
  608         (94 , happyReduce_94),
  609         (95 , happyReduce_95),
  610         (96 , happyReduce_96),
  611         (97 , happyReduce_97),
  612         (98 , happyReduce_98),
  613         (99 , happyReduce_99),
  614         (100 , happyReduce_100),
  615         (101 , happyReduce_101),
  616         (102 , happyReduce_102),
  617         (103 , happyReduce_103),
  618         (104 , happyReduce_104),
  619         (105 , happyReduce_105),
  620         (106 , happyReduce_106),
  621         (107 , happyReduce_107),
  622         (108 , happyReduce_108),
  623         (109 , happyReduce_109),
  624         (110 , happyReduce_110),
  625         (111 , happyReduce_111),
  626         (112 , happyReduce_112),
  627         (113 , happyReduce_113),
  628         (114 , happyReduce_114),
  629         (115 , happyReduce_115),
  630         (116 , happyReduce_116),
  631         (117 , happyReduce_117),
  632         (118 , happyReduce_118),
  633         (119 , happyReduce_119),
  634         (120 , happyReduce_120),
  635         (121 , happyReduce_121),
  636         (122 , happyReduce_122),
  637         (123 , happyReduce_123),
  638         (124 , happyReduce_124),
  639         (125 , happyReduce_125),
  640         (126 , happyReduce_126),
  641         (127 , happyReduce_127),
  642         (128 , happyReduce_128),
  643         (129 , happyReduce_129),
  644         (130 , happyReduce_130),
  645         (131 , happyReduce_131),
  646         (132 , happyReduce_132),
  647         (133 , happyReduce_133),
  648         (134 , happyReduce_134),
  649         (135 , happyReduce_135),
  650         (136 , happyReduce_136),
  651         (137 , happyReduce_137),
  652         (138 , happyReduce_138),
  653         (139 , happyReduce_139),
  654         (140 , happyReduce_140),
  655         (141 , happyReduce_141),
  656         (142 , happyReduce_142),
  657         (143 , happyReduce_143),
  658         (144 , happyReduce_144),
  659         (145 , happyReduce_145),
  660         (146 , happyReduce_146),
  661         (147 , happyReduce_147),
  662         (148 , happyReduce_148),
  663         (149 , happyReduce_149),
  664         (150 , happyReduce_150),
  665         (151 , happyReduce_151),
  666         (152 , happyReduce_152),
  667         (153 , happyReduce_153),
  668         (154 , happyReduce_154),
  669         (155 , happyReduce_155),
  670         (156 , happyReduce_156),
  671         (157 , happyReduce_157),
  672         (158 , happyReduce_158),
  673         (159 , happyReduce_159),
  674         (160 , happyReduce_160),
  675         (161 , happyReduce_161),
  676         (162 , happyReduce_162),
  677         (163 , happyReduce_163),
  678         (164 , happyReduce_164),
  679         (165 , happyReduce_165),
  680         (166 , happyReduce_166),
  681         (167 , happyReduce_167),
  682         (168 , happyReduce_168),
  683         (169 , happyReduce_169)
  684         ]
  685 
  686 happy_n_terms = 78 :: Prelude.Int
  687 happy_n_nonterms = 54 :: Prelude.Int
  688 
  689 happyReduce_1 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
  690 happyReduce_1 = happySpecReduce_0  0# happyReduction_1
  691 happyReduction_1  =  happyIn4
  692                  (return ()
  693         )
  694 
  695 happyReduce_2 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
  696 happyReduce_2 = happySpecReduce_2  0# happyReduction_2
  697 happyReduction_2 happy_x_2
  698         happy_x_1
  699          =  case happyOut5 happy_x_1 of { (HappyWrap5 happy_var_1) -> 
  700         case happyOut4 happy_x_2 of { (HappyWrap4 happy_var_2) -> 
  701         happyIn4
  702                  (do happy_var_1; happy_var_2
  703         )}}
  704 
  705 happyReduce_3 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
  706 happyReduce_3 = happySpecReduce_1  1# happyReduction_3
  707 happyReduction_3 happy_x_1
  708          =  case happyOut11 happy_x_1 of { (HappyWrap11 happy_var_1) -> 
  709         happyIn5
  710                  (happy_var_1
  711         )}
  712 
  713 happyReduce_4 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
  714 happyReduce_4 = happySpecReduce_1  1# happyReduction_4
  715 happyReduction_4 happy_x_1
  716          =  case happyOut6 happy_x_1 of { (HappyWrap6 happy_var_1) -> 
  717         happyIn5
  718                  (happy_var_1
  719         )}
  720 
  721 happyReduce_5 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
  722 happyReduce_5 = happySpecReduce_1  1# happyReduction_5
  723 happyReduction_5 happy_x_1
  724          =  case happyOut16 happy_x_1 of { (HappyWrap16 happy_var_1) -> 
  725         happyIn5
  726                  (happy_var_1
  727         )}
  728 
  729 happyReduce_6 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
  730 happyReduce_6 = happyMonadReduce 8# 1# happyReduction_6
  731 happyReduction_6 (happy_x_8 `HappyStk`
  732         happy_x_7 `HappyStk`
  733         happy_x_6 `HappyStk`
  734         happy_x_5 `HappyStk`
  735         happy_x_4 `HappyStk`
  736         happy_x_3 `HappyStk`
  737         happy_x_2 `HappyStk`
  738         happy_x_1 `HappyStk`
  739         happyRest) tk
  740          = happyThen ((case happyOutTok happy_x_3 of { (L _ (CmmT_Name        happy_var_3)) -> 
  741         case happyOutTok happy_x_5 of { (L _ (CmmT_Name        happy_var_5)) -> 
  742         case happyOut10 happy_x_6 of { (HappyWrap10 happy_var_6) -> 
  743         ( do
  744                       home_unit_id <- getHomeUnitId
  745                       liftP $ pure $ do
  746                         lits <- sequence happy_var_6;
  747                         staticClosure home_unit_id happy_var_3 happy_var_5 (map getLit lits))}}})
  748         ) (\r -> happyReturn (happyIn5 r))
  749 
  750 happyReduce_7 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
  751 happyReduce_7 = happyReduce 6# 2# happyReduction_7
  752 happyReduction_7 (happy_x_6 `HappyStk`
  753         happy_x_5 `HappyStk`
  754         happy_x_4 `HappyStk`
  755         happy_x_3 `HappyStk`
  756         happy_x_2 `HappyStk`
  757         happy_x_1 `HappyStk`
  758         happyRest)
  759          = case happyOutTok happy_x_2 of { (L _ (CmmT_String      happy_var_2)) -> 
  760         case happyOut7 happy_x_4 of { (HappyWrap7 happy_var_4) -> 
  761         case happyOut8 happy_x_5 of { (HappyWrap8 happy_var_5) -> 
  762         happyIn6
  763                  (do lbl <- happy_var_4;
  764                      ss <- sequence happy_var_5;
  765                      code (emitDecl (CmmData (Section (section happy_var_2) lbl) (CmmStaticsRaw lbl (concat ss))))
  766         ) `HappyStk` happyRest}}}
  767 
  768 happyReduce_8 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
  769 happyReduce_8 = happyMonadReduce 2# 3# happyReduction_8
  770 happyReduction_8 (happy_x_2 `HappyStk`
  771         happy_x_1 `HappyStk`
  772         happyRest) tk
  773          = happyThen ((case happyOutTok happy_x_1 of { (L _ (CmmT_Name        happy_var_1)) -> 
  774         ( do
  775                    home_unit_id <- getHomeUnitId
  776                    liftP $ pure $ do
  777                      pure (mkCmmDataLabel home_unit_id (NeedExternDecl False) happy_var_1))})
  778         ) (\r -> happyReturn (happyIn7 r))
  779 
  780 happyReduce_9 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
  781 happyReduce_9 = happySpecReduce_0  4# happyReduction_9
  782 happyReduction_9  =  happyIn8
  783                  ([]
  784         )
  785 
  786 happyReduce_10 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
  787 happyReduce_10 = happySpecReduce_2  4# happyReduction_10
  788 happyReduction_10 happy_x_2
  789         happy_x_1
  790          =  case happyOut9 happy_x_1 of { (HappyWrap9 happy_var_1) -> 
  791         case happyOut8 happy_x_2 of { (HappyWrap8 happy_var_2) -> 
  792         happyIn8
  793                  (happy_var_1 : happy_var_2
  794         )}}
  795 
  796 happyReduce_11 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
  797 happyReduce_11 = happySpecReduce_3  5# happyReduction_11
  798 happyReduction_11 happy_x_3
  799         happy_x_2
  800         happy_x_1
  801          =  case happyOut38 happy_x_2 of { (HappyWrap38 happy_var_2) -> 
  802         happyIn9
  803                  (do e <- happy_var_2;
  804                              return [CmmStaticLit (getLit e)]
  805         )}
  806 
  807 happyReduce_12 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
  808 happyReduce_12 = happySpecReduce_2  5# happyReduction_12
  809 happyReduction_12 happy_x_2
  810         happy_x_1
  811          =  case happyOut56 happy_x_1 of { (HappyWrap56 happy_var_1) -> 
  812         happyIn9
  813                  (return [CmmUninitialised
  814                                                         (widthInBytes (typeWidth happy_var_1))]
  815         )}
  816 
  817 happyReduce_13 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
  818 happyReduce_13 = happyReduce 5# 5# happyReduction_13
  819 happyReduction_13 (happy_x_5 `HappyStk`
  820         happy_x_4 `HappyStk`
  821         happy_x_3 `HappyStk`
  822         happy_x_2 `HappyStk`
  823         happy_x_1 `HappyStk`
  824         happyRest)
  825          = case happyOutTok happy_x_4 of { (L _ (CmmT_String      happy_var_4)) -> 
  826         happyIn9
  827                  (return [mkString happy_var_4]
  828         ) `HappyStk` happyRest}
  829 
  830 happyReduce_14 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
  831 happyReduce_14 = happyReduce 5# 5# happyReduction_14
  832 happyReduction_14 (happy_x_5 `HappyStk`
  833         happy_x_4 `HappyStk`
  834         happy_x_3 `HappyStk`
  835         happy_x_2 `HappyStk`
  836         happy_x_1 `HappyStk`
  837         happyRest)
  838          = case happyOutTok happy_x_3 of { (L _ (CmmT_Int         happy_var_3)) -> 
  839         happyIn9
  840                  (return [CmmUninitialised
  841                                                         (fromIntegral happy_var_3)]
  842         ) `HappyStk` happyRest}
  843 
  844 happyReduce_15 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
  845 happyReduce_15 = happyReduce 5# 5# happyReduction_15
  846 happyReduction_15 (happy_x_5 `HappyStk`
  847         happy_x_4 `HappyStk`
  848         happy_x_3 `HappyStk`
  849         happy_x_2 `HappyStk`
  850         happy_x_1 `HappyStk`
  851         happyRest)
  852          = case happyOut57 happy_x_1 of { (HappyWrap57 happy_var_1) -> 
  853         case happyOutTok happy_x_3 of { (L _ (CmmT_Int         happy_var_3)) -> 
  854         happyIn9
  855                  (return [CmmUninitialised
  856                                                 (widthInBytes (typeWidth happy_var_1) *
  857                                                         fromIntegral happy_var_3)]
  858         ) `HappyStk` happyRest}}
  859 
  860 happyReduce_16 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
  861 happyReduce_16 = happyReduce 5# 5# happyReduction_16
  862 happyReduction_16 (happy_x_5 `HappyStk`
  863         happy_x_4 `HappyStk`
  864         happy_x_3 `HappyStk`
  865         happy_x_2 `HappyStk`
  866         happy_x_1 `HappyStk`
  867         happyRest)
  868          = case happyOutTok happy_x_3 of { (L _ (CmmT_Name        happy_var_3)) -> 
  869         case happyOut10 happy_x_4 of { (HappyWrap10 happy_var_4) -> 
  870         happyIn9
  871                  (do { lits <- sequence happy_var_4
  872                 ; profile <- getProfile
  873                      ; return $ map CmmStaticLit $
  874                         mkStaticClosure profile (mkForeignLabel happy_var_3 Nothing ForeignLabelInExternalPackage IsData)
  875                          -- mkForeignLabel because these are only used
  876                          -- for CHARLIKE and INTLIKE closures in the RTS.
  877                         dontCareCCS (map getLit lits) [] [] [] }
  878         ) `HappyStk` happyRest}}
  879 
  880 happyReduce_17 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
  881 happyReduce_17 = happySpecReduce_0  6# happyReduction_17
  882 happyReduction_17  =  happyIn10
  883                  ([]
  884         )
  885 
  886 happyReduce_18 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
  887 happyReduce_18 = happySpecReduce_3  6# happyReduction_18
  888 happyReduction_18 happy_x_3
  889         happy_x_2
  890         happy_x_1
  891          =  case happyOut38 happy_x_2 of { (HappyWrap38 happy_var_2) -> 
  892         case happyOut10 happy_x_3 of { (HappyWrap10 happy_var_3) -> 
  893         happyIn10
  894                  (happy_var_2 : happy_var_3
  895         )}}
  896 
  897 happyReduce_19 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
  898 happyReduce_19 = happyReduce 4# 7# happyReduction_19
  899 happyReduction_19 (happy_x_4 `HappyStk`
  900         happy_x_3 `HappyStk`
  901         happy_x_2 `HappyStk`
  902         happy_x_1 `HappyStk`
  903         happyRest)
  904          = case happyOut14 happy_x_1 of { (HappyWrap14 happy_var_1) -> 
  905         case happyOut12 happy_x_2 of { (HappyWrap12 happy_var_2) -> 
  906         case happyOut52 happy_x_3 of { (HappyWrap52 happy_var_3) -> 
  907         case happyOut13 happy_x_4 of { (HappyWrap13 happy_var_4) -> 
  908         happyIn11
  909                  (do ((entry_ret_label, info, stk_formals, formals), agraph) <-
  910                        getCodeScoped $ loopDecls $ do {
  911                          (entry_ret_label, info, stk_formals) <- happy_var_1;
  912                          dflags <- getDynFlags;
  913                          platform <- getPlatform;
  914                          formals <- sequence (fromMaybe [] happy_var_3);
  915                          withName (showSDoc dflags (pdoc platform entry_ret_label))
  916                            happy_var_4;
  917                          return (entry_ret_label, info, stk_formals, formals) }
  918                      let do_layout = isJust happy_var_3
  919                      code (emitProcWithStackFrame happy_var_2 info
  920                                 entry_ret_label stk_formals formals agraph
  921                                 do_layout )
  922         ) `HappyStk` happyRest}}}}
  923 
  924 happyReduce_20 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
  925 happyReduce_20 = happySpecReduce_0  8# happyReduction_20
  926 happyReduction_20  =  happyIn12
  927                  (NativeNodeCall
  928         )
  929 
  930 happyReduce_21 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
  931 happyReduce_21 = happySpecReduce_1  8# happyReduction_21
  932 happyReduction_21 happy_x_1
  933          =  happyIn12
  934                  (NativeReturn
  935         )
  936 
  937 happyReduce_22 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
  938 happyReduce_22 = happySpecReduce_1  9# happyReduction_22
  939 happyReduction_22 happy_x_1
  940          =  happyIn13
  941                  (return ()
  942         )
  943 
  944 happyReduce_23 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
  945 happyReduce_23 = happySpecReduce_3  9# happyReduction_23
  946 happyReduction_23 happy_x_3
  947         happy_x_2
  948         happy_x_1
  949          =  case happyOutTok happy_x_1 of { happy_var_1 -> 
  950         case happyOut15 happy_x_2 of { (HappyWrap15 happy_var_2) -> 
  951         case happyOutTok happy_x_3 of { happy_var_3 -> 
  952         happyIn13
  953                  (withSourceNote happy_var_1 happy_var_3 happy_var_2
  954         )}}}
  955 
  956 happyReduce_24 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
  957 happyReduce_24 = happyMonadReduce 1# 10# happyReduction_24
  958 happyReduction_24 (happy_x_1 `HappyStk`
  959         happyRest) tk
  960          = happyThen ((case happyOutTok happy_x_1 of { (L _ (CmmT_Name        happy_var_1)) -> 
  961         ( do
  962                      home_unit_id <- getHomeUnitId
  963                      liftP $ pure $ do
  964                        newFunctionName happy_var_1 home_unit_id
  965                        return (mkCmmCodeLabel home_unit_id happy_var_1, Nothing, []))})
  966         ) (\r -> happyReturn (happyIn14 r))
  967 
  968 happyReduce_25 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
  969 happyReduce_25 = happyMonadReduce 14# 10# happyReduction_25
  970 happyReduction_25 (happy_x_14 `HappyStk`
  971         happy_x_13 `HappyStk`
  972         happy_x_12 `HappyStk`
  973         happy_x_11 `HappyStk`
  974         happy_x_10 `HappyStk`
  975         happy_x_9 `HappyStk`
  976         happy_x_8 `HappyStk`
  977         happy_x_7 `HappyStk`
  978         happy_x_6 `HappyStk`
  979         happy_x_5 `HappyStk`
  980         happy_x_4 `HappyStk`
  981         happy_x_3 `HappyStk`
  982         happy_x_2 `HappyStk`
  983         happy_x_1 `HappyStk`
  984         happyRest) tk
  985          = happyThen ((case happyOutTok happy_x_3 of { (L _ (CmmT_Name        happy_var_3)) -> 
  986         case happyOutTok happy_x_5 of { (L _ (CmmT_Int         happy_var_5)) -> 
  987         case happyOutTok happy_x_7 of { (L _ (CmmT_Int         happy_var_7)) -> 
  988         case happyOutTok happy_x_9 of { (L _ (CmmT_Int         happy_var_9)) -> 
  989         case happyOutTok happy_x_11 of { (L _ (CmmT_String      happy_var_11)) -> 
  990         case happyOutTok happy_x_13 of { (L _ (CmmT_String      happy_var_13)) -> 
  991         ( do
  992                       home_unit_id <- getHomeUnitId
  993                       liftP $ pure $ do
  994                         profile <- getProfile
  995                         let prof = profilingInfo profile happy_var_11 happy_var_13
  996                             rep  = mkRTSRep (fromIntegral happy_var_9) $
  997                                      mkHeapRep profile False (fromIntegral happy_var_5)
  998                                                      (fromIntegral happy_var_7) Thunk
  999                                 -- not really Thunk, but that makes the info table
 1000                                 -- we want.
 1001                         return (mkCmmEntryLabel home_unit_id happy_var_3,
 1002                                 Just $ CmmInfoTable { cit_lbl = mkCmmInfoLabel home_unit_id happy_var_3
 1003                                              , cit_rep = rep
 1004                                              , cit_prof = prof, cit_srt = Nothing, cit_clo = Nothing },
 1005                                 []))}}}}}})
 1006         ) (\r -> happyReturn (happyIn14 r))
 1007 
 1008 happyReduce_26 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1009 happyReduce_26 = happyMonadReduce 16# 10# happyReduction_26
 1010 happyReduction_26 (happy_x_16 `HappyStk`
 1011         happy_x_15 `HappyStk`
 1012         happy_x_14 `HappyStk`
 1013         happy_x_13 `HappyStk`
 1014         happy_x_12 `HappyStk`
 1015         happy_x_11 `HappyStk`
 1016         happy_x_10 `HappyStk`
 1017         happy_x_9 `HappyStk`
 1018         happy_x_8 `HappyStk`
 1019         happy_x_7 `HappyStk`
 1020         happy_x_6 `HappyStk`
 1021         happy_x_5 `HappyStk`
 1022         happy_x_4 `HappyStk`
 1023         happy_x_3 `HappyStk`
 1024         happy_x_2 `HappyStk`
 1025         happy_x_1 `HappyStk`
 1026         happyRest) tk
 1027          = happyThen ((case happyOutTok happy_x_3 of { (L _ (CmmT_Name        happy_var_3)) -> 
 1028         case happyOutTok happy_x_5 of { (L _ (CmmT_Int         happy_var_5)) -> 
 1029         case happyOutTok happy_x_7 of { (L _ (CmmT_Int         happy_var_7)) -> 
 1030         case happyOutTok happy_x_9 of { (L _ (CmmT_Int         happy_var_9)) -> 
 1031         case happyOutTok happy_x_11 of { (L _ (CmmT_String      happy_var_11)) -> 
 1032         case happyOutTok happy_x_13 of { (L _ (CmmT_String      happy_var_13)) -> 
 1033         case happyOutTok happy_x_15 of { (L _ (CmmT_Int         happy_var_15)) -> 
 1034         ( do
 1035                       home_unit_id <- getHomeUnitId
 1036                       liftP $ pure $ do
 1037                         profile <- getProfile
 1038                         let prof = profilingInfo profile happy_var_11 happy_var_13
 1039                             ty   = Fun 0 (ArgSpec (fromIntegral happy_var_15))
 1040                                   -- Arity zero, arg_type happy_var_15
 1041                             rep = mkRTSRep (fromIntegral happy_var_9) $
 1042                                       mkHeapRep profile False (fromIntegral happy_var_5)
 1043                                                       (fromIntegral happy_var_7) ty
 1044                         return (mkCmmEntryLabel home_unit_id happy_var_3,
 1045                                 Just $ CmmInfoTable { cit_lbl = mkCmmInfoLabel home_unit_id happy_var_3
 1046                                              , cit_rep = rep
 1047                                              , cit_prof = prof, cit_srt = Nothing, cit_clo = Nothing },
 1048                                 []))}}}}}}})
 1049         ) (\r -> happyReturn (happyIn14 r))
 1050 
 1051 happyReduce_27 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1052 happyReduce_27 = happyMonadReduce 16# 10# happyReduction_27
 1053 happyReduction_27 (happy_x_16 `HappyStk`
 1054         happy_x_15 `HappyStk`
 1055         happy_x_14 `HappyStk`
 1056         happy_x_13 `HappyStk`
 1057         happy_x_12 `HappyStk`
 1058         happy_x_11 `HappyStk`
 1059         happy_x_10 `HappyStk`
 1060         happy_x_9 `HappyStk`
 1061         happy_x_8 `HappyStk`
 1062         happy_x_7 `HappyStk`
 1063         happy_x_6 `HappyStk`
 1064         happy_x_5 `HappyStk`
 1065         happy_x_4 `HappyStk`
 1066         happy_x_3 `HappyStk`
 1067         happy_x_2 `HappyStk`
 1068         happy_x_1 `HappyStk`
 1069         happyRest) tk
 1070          = happyThen ((case happyOutTok happy_x_3 of { (L _ (CmmT_Name        happy_var_3)) -> 
 1071         case happyOutTok happy_x_5 of { (L _ (CmmT_Int         happy_var_5)) -> 
 1072         case happyOutTok happy_x_7 of { (L _ (CmmT_Int         happy_var_7)) -> 
 1073         case happyOutTok happy_x_9 of { (L _ (CmmT_Int         happy_var_9)) -> 
 1074         case happyOutTok happy_x_11 of { (L _ (CmmT_Int         happy_var_11)) -> 
 1075         case happyOutTok happy_x_13 of { (L _ (CmmT_String      happy_var_13)) -> 
 1076         case happyOutTok happy_x_15 of { (L _ (CmmT_String      happy_var_15)) -> 
 1077         ( do
 1078                       home_unit_id <- getHomeUnitId
 1079                       liftP $ pure $ do
 1080                         profile <- getProfile
 1081                         let prof = profilingInfo profile happy_var_13 happy_var_15
 1082                             ty  = Constr (fromIntegral happy_var_9)  -- Tag
 1083                                          (BS8.pack happy_var_13)
 1084                             rep = mkRTSRep (fromIntegral happy_var_11) $
 1085                                     mkHeapRep profile False (fromIntegral happy_var_5)
 1086                                                     (fromIntegral happy_var_7) ty
 1087                         return (mkCmmEntryLabel home_unit_id happy_var_3,
 1088                                 Just $ CmmInfoTable { cit_lbl = mkCmmInfoLabel home_unit_id happy_var_3
 1089                                              , cit_rep = rep
 1090                                              , cit_prof = prof, cit_srt = Nothing,cit_clo = Nothing },
 1091                                 []))}}}}}}})
 1092         ) (\r -> happyReturn (happyIn14 r))
 1093 
 1094 happyReduce_28 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1095 happyReduce_28 = happyMonadReduce 12# 10# happyReduction_28
 1096 happyReduction_28 (happy_x_12 `HappyStk`
 1097         happy_x_11 `HappyStk`
 1098         happy_x_10 `HappyStk`
 1099         happy_x_9 `HappyStk`
 1100         happy_x_8 `HappyStk`
 1101         happy_x_7 `HappyStk`
 1102         happy_x_6 `HappyStk`
 1103         happy_x_5 `HappyStk`
 1104         happy_x_4 `HappyStk`
 1105         happy_x_3 `HappyStk`
 1106         happy_x_2 `HappyStk`
 1107         happy_x_1 `HappyStk`
 1108         happyRest) tk
 1109          = happyThen ((case happyOutTok happy_x_3 of { (L _ (CmmT_Name        happy_var_3)) -> 
 1110         case happyOutTok happy_x_5 of { (L _ (CmmT_Int         happy_var_5)) -> 
 1111         case happyOutTok happy_x_7 of { (L _ (CmmT_Int         happy_var_7)) -> 
 1112         case happyOutTok happy_x_9 of { (L _ (CmmT_String      happy_var_9)) -> 
 1113         case happyOutTok happy_x_11 of { (L _ (CmmT_String      happy_var_11)) -> 
 1114         ( do
 1115                       home_unit_id <- getHomeUnitId
 1116                       liftP $ pure $ do
 1117                         profile <- getProfile
 1118                         let prof = profilingInfo profile happy_var_9 happy_var_11
 1119                             ty  = ThunkSelector (fromIntegral happy_var_5)
 1120                             rep = mkRTSRep (fromIntegral happy_var_7) $
 1121                                      mkHeapRep profile False 0 0 ty
 1122                         return (mkCmmEntryLabel home_unit_id happy_var_3,
 1123                                 Just $ CmmInfoTable { cit_lbl = mkCmmInfoLabel home_unit_id happy_var_3
 1124                                              , cit_rep = rep
 1125                                              , cit_prof = prof, cit_srt = Nothing, cit_clo = Nothing },
 1126                                 []))}}}}})
 1127         ) (\r -> happyReturn (happyIn14 r))
 1128 
 1129 happyReduce_29 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1130 happyReduce_29 = happyMonadReduce 6# 10# happyReduction_29
 1131 happyReduction_29 (happy_x_6 `HappyStk`
 1132         happy_x_5 `HappyStk`
 1133         happy_x_4 `HappyStk`
 1134         happy_x_3 `HappyStk`
 1135         happy_x_2 `HappyStk`
 1136         happy_x_1 `HappyStk`
 1137         happyRest) tk
 1138          = happyThen ((case happyOutTok happy_x_3 of { (L _ (CmmT_Name        happy_var_3)) -> 
 1139         case happyOutTok happy_x_5 of { (L _ (CmmT_Int         happy_var_5)) -> 
 1140         ( do
 1141                       home_unit_id <- getHomeUnitId
 1142                       liftP $ pure $ do
 1143                         let prof = NoProfilingInfo
 1144                             rep  = mkRTSRep (fromIntegral happy_var_5) $ mkStackRep []
 1145                         return (mkCmmRetLabel home_unit_id happy_var_3,
 1146                                 Just $ CmmInfoTable { cit_lbl = mkCmmRetInfoLabel home_unit_id happy_var_3
 1147                                              , cit_rep = rep
 1148                                              , cit_prof = prof, cit_srt = Nothing, cit_clo = Nothing },
 1149                                 []))}})
 1150         ) (\r -> happyReturn (happyIn14 r))
 1151 
 1152 happyReduce_30 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1153 happyReduce_30 = happyMonadReduce 8# 10# happyReduction_30
 1154 happyReduction_30 (happy_x_8 `HappyStk`
 1155         happy_x_7 `HappyStk`
 1156         happy_x_6 `HappyStk`
 1157         happy_x_5 `HappyStk`
 1158         happy_x_4 `HappyStk`
 1159         happy_x_3 `HappyStk`
 1160         happy_x_2 `HappyStk`
 1161         happy_x_1 `HappyStk`
 1162         happyRest) tk
 1163          = happyThen ((case happyOutTok happy_x_3 of { (L _ (CmmT_Name        happy_var_3)) -> 
 1164         case happyOutTok happy_x_5 of { (L _ (CmmT_Int         happy_var_5)) -> 
 1165         case happyOut53 happy_x_7 of { (HappyWrap53 happy_var_7) -> 
 1166         ( do
 1167                       home_unit_id <- getHomeUnitId
 1168                       liftP $ pure $ do
 1169                         platform <- getPlatform
 1170                         live <- sequence happy_var_7
 1171                         let prof = NoProfilingInfo
 1172                             -- drop one for the info pointer
 1173                             bitmap = mkLiveness platform (drop 1 live)
 1174                             rep  = mkRTSRep (fromIntegral happy_var_5) $ mkStackRep bitmap
 1175                         return (mkCmmRetLabel home_unit_id happy_var_3,
 1176                                 Just $ CmmInfoTable { cit_lbl = mkCmmRetInfoLabel home_unit_id happy_var_3
 1177                                              , cit_rep = rep
 1178                                              , cit_prof = prof, cit_srt = Nothing, cit_clo = Nothing },
 1179                                 live))}}})
 1180         ) (\r -> happyReturn (happyIn14 r))
 1181 
 1182 happyReduce_31 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1183 happyReduce_31 = happySpecReduce_0  11# happyReduction_31
 1184 happyReduction_31  =  happyIn15
 1185                  (return ()
 1186         )
 1187 
 1188 happyReduce_32 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1189 happyReduce_32 = happySpecReduce_2  11# happyReduction_32
 1190 happyReduction_32 happy_x_2
 1191         happy_x_1
 1192          =  case happyOut16 happy_x_1 of { (HappyWrap16 happy_var_1) -> 
 1193         case happyOut15 happy_x_2 of { (HappyWrap15 happy_var_2) -> 
 1194         happyIn15
 1195                  (do happy_var_1; happy_var_2
 1196         )}}
 1197 
 1198 happyReduce_33 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1199 happyReduce_33 = happySpecReduce_2  11# happyReduction_33
 1200 happyReduction_33 happy_x_2
 1201         happy_x_1
 1202          =  case happyOut20 happy_x_1 of { (HappyWrap20 happy_var_1) -> 
 1203         case happyOut15 happy_x_2 of { (HappyWrap15 happy_var_2) -> 
 1204         happyIn15
 1205                  (do happy_var_1; happy_var_2
 1206         )}}
 1207 
 1208 happyReduce_34 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1209 happyReduce_34 = happySpecReduce_3  12# happyReduction_34
 1210 happyReduction_34 happy_x_3
 1211         happy_x_2
 1212         happy_x_1
 1213          =  case happyOut56 happy_x_1 of { (HappyWrap56 happy_var_1) -> 
 1214         case happyOut19 happy_x_2 of { (HappyWrap19 happy_var_2) -> 
 1215         happyIn16
 1216                  (mapM_ (newLocal happy_var_1) happy_var_2
 1217         )}}
 1218 
 1219 happyReduce_35 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1220 happyReduce_35 = happySpecReduce_3  12# happyReduction_35
 1221 happyReduction_35 happy_x_3
 1222         happy_x_2
 1223         happy_x_1
 1224          =  case happyOut17 happy_x_2 of { (HappyWrap17 happy_var_2) -> 
 1225         happyIn16
 1226                  (mapM_ newImport happy_var_2
 1227         )}
 1228 
 1229 happyReduce_36 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1230 happyReduce_36 = happySpecReduce_3  12# happyReduction_36
 1231 happyReduction_36 happy_x_3
 1232         happy_x_2
 1233         happy_x_1
 1234          =  happyIn16
 1235                  (return ()
 1236         )
 1237 
 1238 happyReduce_37 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1239 happyReduce_37 = happySpecReduce_1  13# happyReduction_37
 1240 happyReduction_37 happy_x_1
 1241          =  case happyOut18 happy_x_1 of { (HappyWrap18 happy_var_1) -> 
 1242         happyIn17
 1243                  ([happy_var_1]
 1244         )}
 1245 
 1246 happyReduce_38 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1247 happyReduce_38 = happySpecReduce_3  13# happyReduction_38
 1248 happyReduction_38 happy_x_3
 1249         happy_x_2
 1250         happy_x_1
 1251          =  case happyOut18 happy_x_1 of { (HappyWrap18 happy_var_1) -> 
 1252         case happyOut17 happy_x_3 of { (HappyWrap17 happy_var_3) -> 
 1253         happyIn17
 1254                  (happy_var_1 : happy_var_3
 1255         )}}
 1256 
 1257 happyReduce_39 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1258 happyReduce_39 = happySpecReduce_1  14# happyReduction_39
 1259 happyReduction_39 happy_x_1
 1260          =  case happyOutTok happy_x_1 of { (L _ (CmmT_Name        happy_var_1)) -> 
 1261         happyIn18
 1262                  ((happy_var_1, mkForeignLabel happy_var_1 Nothing ForeignLabelInExternalPackage IsFunction)
 1263         )}
 1264 
 1265 happyReduce_40 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1266 happyReduce_40 = happySpecReduce_2  14# happyReduction_40
 1267 happyReduction_40 happy_x_2
 1268         happy_x_1
 1269          =  case happyOutTok happy_x_2 of { (L _ (CmmT_Name        happy_var_2)) -> 
 1270         happyIn18
 1271                  ((happy_var_2, mkForeignLabel happy_var_2 Nothing ForeignLabelInExternalPackage IsData)
 1272         )}
 1273 
 1274 happyReduce_41 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1275 happyReduce_41 = happySpecReduce_2  14# happyReduction_41
 1276 happyReduction_41 happy_x_2
 1277         happy_x_1
 1278          =  case happyOutTok happy_x_1 of { (L _ (CmmT_String      happy_var_1)) -> 
 1279         case happyOutTok happy_x_2 of { (L _ (CmmT_Name        happy_var_2)) -> 
 1280         happyIn18
 1281                  ((happy_var_2, mkCmmCodeLabel (UnitId (mkFastString happy_var_1)) happy_var_2)
 1282         )}}
 1283 
 1284 happyReduce_42 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1285 happyReduce_42 = happySpecReduce_1  15# happyReduction_42
 1286 happyReduction_42 happy_x_1
 1287          =  case happyOutTok happy_x_1 of { (L _ (CmmT_Name        happy_var_1)) -> 
 1288         happyIn19
 1289                  ([happy_var_1]
 1290         )}
 1291 
 1292 happyReduce_43 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1293 happyReduce_43 = happySpecReduce_3  15# happyReduction_43
 1294 happyReduction_43 happy_x_3
 1295         happy_x_2
 1296         happy_x_1
 1297          =  case happyOutTok happy_x_1 of { (L _ (CmmT_Name        happy_var_1)) -> 
 1298         case happyOut19 happy_x_3 of { (HappyWrap19 happy_var_3) -> 
 1299         happyIn19
 1300                  (happy_var_1 : happy_var_3
 1301         )}}
 1302 
 1303 happyReduce_44 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1304 happyReduce_44 = happySpecReduce_1  16# happyReduction_44
 1305 happyReduction_44 happy_x_1
 1306          =  happyIn20
 1307                  (return ()
 1308         )
 1309 
 1310 happyReduce_45 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1311 happyReduce_45 = happySpecReduce_2  16# happyReduction_45
 1312 happyReduction_45 happy_x_2
 1313         happy_x_1
 1314          =  case happyOutTok happy_x_1 of { (L _ (CmmT_Name        happy_var_1)) -> 
 1315         happyIn20
 1316                  (do l <- newLabel happy_var_1; emitLabel l
 1317         )}
 1318 
 1319 happyReduce_46 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1320 happyReduce_46 = happyReduce 4# 16# happyReduction_46
 1321 happyReduction_46 (happy_x_4 `HappyStk`
 1322         happy_x_3 `HappyStk`
 1323         happy_x_2 `HappyStk`
 1324         happy_x_1 `HappyStk`
 1325         happyRest)
 1326          = case happyOut51 happy_x_1 of { (HappyWrap51 happy_var_1) -> 
 1327         case happyOutTok happy_x_2 of { happy_var_2 -> 
 1328         case happyOut38 happy_x_3 of { (HappyWrap38 happy_var_3) -> 
 1329         case happyOutTok happy_x_4 of { happy_var_4 -> 
 1330         happyIn20
 1331                  (do reg <- happy_var_1; e <- happy_var_3; withSourceNote happy_var_2 happy_var_4 (emitAssign reg e)
 1332         ) `HappyStk` happyRest}}}}
 1333 
 1334 happyReduce_47 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1335 happyReduce_47 = happyReduce 7# 16# happyReduction_47
 1336 happyReduction_47 (happy_x_7 `HappyStk`
 1337         happy_x_6 `HappyStk`
 1338         happy_x_5 `HappyStk`
 1339         happy_x_4 `HappyStk`
 1340         happy_x_3 `HappyStk`
 1341         happy_x_2 `HappyStk`
 1342         happy_x_1 `HappyStk`
 1343         happyRest)
 1344          = case happyOut56 happy_x_1 of { (HappyWrap56 happy_var_1) -> 
 1345         case happyOutTok happy_x_2 of { happy_var_2 -> 
 1346         case happyOut38 happy_x_3 of { (HappyWrap38 happy_var_3) -> 
 1347         case happyOut38 happy_x_6 of { (HappyWrap38 happy_var_6) -> 
 1348         case happyOutTok happy_x_7 of { happy_var_7 -> 
 1349         happyIn20
 1350                  (withSourceNote happy_var_2 happy_var_7 (doStore happy_var_1 happy_var_3 happy_var_6)
 1351         ) `HappyStk` happyRest}}}}}
 1352 
 1353 happyReduce_48 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1354 happyReduce_48 = happyMonadReduce 10# 16# happyReduction_48
 1355 happyReduction_48 (happy_x_10 `HappyStk`
 1356         happy_x_9 `HappyStk`
 1357         happy_x_8 `HappyStk`
 1358         happy_x_7 `HappyStk`
 1359         happy_x_6 `HappyStk`
 1360         happy_x_5 `HappyStk`
 1361         happy_x_4 `HappyStk`
 1362         happy_x_3 `HappyStk`
 1363         happy_x_2 `HappyStk`
 1364         happy_x_1 `HappyStk`
 1365         happyRest) tk
 1366          = happyThen ((case happyOut47 happy_x_1 of { (HappyWrap47 happy_var_1) -> 
 1367         case happyOutTok happy_x_3 of { (L _ (CmmT_String      happy_var_3)) -> 
 1368         case happyOut23 happy_x_4 of { (HappyWrap23 happy_var_4) -> 
 1369         case happyOut41 happy_x_6 of { (HappyWrap41 happy_var_6) -> 
 1370         case happyOut27 happy_x_8 of { (HappyWrap27 happy_var_8) -> 
 1371         case happyOut24 happy_x_9 of { (HappyWrap24 happy_var_9) -> 
 1372         ( foreignCall happy_var_3 happy_var_1 happy_var_4 happy_var_6 happy_var_8 happy_var_9)}}}}}})
 1373         ) (\r -> happyReturn (happyIn20 r))
 1374 
 1375 happyReduce_49 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1376 happyReduce_49 = happyMonadReduce 8# 16# happyReduction_49
 1377 happyReduction_49 (happy_x_8 `HappyStk`
 1378         happy_x_7 `HappyStk`
 1379         happy_x_6 `HappyStk`
 1380         happy_x_5 `HappyStk`
 1381         happy_x_4 `HappyStk`
 1382         happy_x_3 `HappyStk`
 1383         happy_x_2 `HappyStk`
 1384         happy_x_1 `HappyStk`
 1385         happyRest) tk
 1386          = happyThen ((case happyOut47 happy_x_1 of { (HappyWrap47 happy_var_1) -> 
 1387         case happyOutTok happy_x_4 of { (L _ (CmmT_Name        happy_var_4)) -> 
 1388         case happyOut44 happy_x_6 of { (HappyWrap44 happy_var_6) -> 
 1389         ( primCall happy_var_1 happy_var_4 happy_var_6)}}})
 1390         ) (\r -> happyReturn (happyIn20 r))
 1391 
 1392 happyReduce_50 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1393 happyReduce_50 = happyMonadReduce 5# 16# happyReduction_50
 1394 happyReduction_50 (happy_x_5 `HappyStk`
 1395         happy_x_4 `HappyStk`
 1396         happy_x_3 `HappyStk`
 1397         happy_x_2 `HappyStk`
 1398         happy_x_1 `HappyStk`
 1399         happyRest) tk
 1400          = happyThen ((case happyOutTok happy_x_1 of { (L _ (CmmT_Name        happy_var_1)) -> 
 1401         case happyOut44 happy_x_3 of { (HappyWrap44 happy_var_3) -> 
 1402         ( stmtMacro happy_var_1 happy_var_3)}})
 1403         ) (\r -> happyReturn (happyIn20 r))
 1404 
 1405 happyReduce_51 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1406 happyReduce_51 = happyReduce 7# 16# happyReduction_51
 1407 happyReduction_51 (happy_x_7 `HappyStk`
 1408         happy_x_6 `HappyStk`
 1409         happy_x_5 `HappyStk`
 1410         happy_x_4 `HappyStk`
 1411         happy_x_3 `HappyStk`
 1412         happy_x_2 `HappyStk`
 1413         happy_x_1 `HappyStk`
 1414         happyRest)
 1415          = case happyOut30 happy_x_2 of { (HappyWrap30 happy_var_2) -> 
 1416         case happyOut38 happy_x_3 of { (HappyWrap38 happy_var_3) -> 
 1417         case happyOut31 happy_x_5 of { (HappyWrap31 happy_var_5) -> 
 1418         case happyOut35 happy_x_6 of { (HappyWrap35 happy_var_6) -> 
 1419         happyIn20
 1420                  (do as <- sequence happy_var_5; doSwitch happy_var_2 happy_var_3 as happy_var_6
 1421         ) `HappyStk` happyRest}}}}
 1422 
 1423 happyReduce_52 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1424 happyReduce_52 = happySpecReduce_3  16# happyReduction_52
 1425 happyReduction_52 happy_x_3
 1426         happy_x_2
 1427         happy_x_1
 1428          =  case happyOutTok happy_x_2 of { (L _ (CmmT_Name        happy_var_2)) -> 
 1429         happyIn20
 1430                  (do l <- lookupLabel happy_var_2; emit (mkBranch l)
 1431         )}
 1432 
 1433 happyReduce_53 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1434 happyReduce_53 = happyReduce 5# 16# happyReduction_53
 1435 happyReduction_53 (happy_x_5 `HappyStk`
 1436         happy_x_4 `HappyStk`
 1437         happy_x_3 `HappyStk`
 1438         happy_x_2 `HappyStk`
 1439         happy_x_1 `HappyStk`
 1440         happyRest)
 1441          = case happyOut44 happy_x_3 of { (HappyWrap44 happy_var_3) -> 
 1442         happyIn20
 1443                  (doReturn happy_var_3
 1444         ) `HappyStk` happyRest}
 1445 
 1446 happyReduce_54 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1447 happyReduce_54 = happyReduce 4# 16# happyReduction_54
 1448 happyReduction_54 (happy_x_4 `HappyStk`
 1449         happy_x_3 `HappyStk`
 1450         happy_x_2 `HappyStk`
 1451         happy_x_1 `HappyStk`
 1452         happyRest)
 1453          = case happyOut38 happy_x_2 of { (HappyWrap38 happy_var_2) -> 
 1454         case happyOut28 happy_x_3 of { (HappyWrap28 happy_var_3) -> 
 1455         happyIn20
 1456                  (doRawJump happy_var_2 happy_var_3
 1457         ) `HappyStk` happyRest}}
 1458 
 1459 happyReduce_55 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1460 happyReduce_55 = happyReduce 6# 16# happyReduction_55
 1461 happyReduction_55 (happy_x_6 `HappyStk`
 1462         happy_x_5 `HappyStk`
 1463         happy_x_4 `HappyStk`
 1464         happy_x_3 `HappyStk`
 1465         happy_x_2 `HappyStk`
 1466         happy_x_1 `HappyStk`
 1467         happyRest)
 1468          = case happyOut38 happy_x_2 of { (HappyWrap38 happy_var_2) -> 
 1469         case happyOut44 happy_x_4 of { (HappyWrap44 happy_var_4) -> 
 1470         happyIn20
 1471                  (doJumpWithStack happy_var_2 [] happy_var_4
 1472         ) `HappyStk` happyRest}}
 1473 
 1474 happyReduce_56 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1475 happyReduce_56 = happyReduce 9# 16# happyReduction_56
 1476 happyReduction_56 (happy_x_9 `HappyStk`
 1477         happy_x_8 `HappyStk`
 1478         happy_x_7 `HappyStk`
 1479         happy_x_6 `HappyStk`
 1480         happy_x_5 `HappyStk`
 1481         happy_x_4 `HappyStk`
 1482         happy_x_3 `HappyStk`
 1483         happy_x_2 `HappyStk`
 1484         happy_x_1 `HappyStk`
 1485         happyRest)
 1486          = case happyOut38 happy_x_2 of { (HappyWrap38 happy_var_2) -> 
 1487         case happyOut44 happy_x_4 of { (HappyWrap44 happy_var_4) -> 
 1488         case happyOut44 happy_x_7 of { (HappyWrap44 happy_var_7) -> 
 1489         happyIn20
 1490                  (doJumpWithStack happy_var_2 happy_var_4 happy_var_7
 1491         ) `HappyStk` happyRest}}}
 1492 
 1493 happyReduce_57 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1494 happyReduce_57 = happyReduce 6# 16# happyReduction_57
 1495 happyReduction_57 (happy_x_6 `HappyStk`
 1496         happy_x_5 `HappyStk`
 1497         happy_x_4 `HappyStk`
 1498         happy_x_3 `HappyStk`
 1499         happy_x_2 `HappyStk`
 1500         happy_x_1 `HappyStk`
 1501         happyRest)
 1502          = case happyOut38 happy_x_2 of { (HappyWrap38 happy_var_2) -> 
 1503         case happyOut44 happy_x_4 of { (HappyWrap44 happy_var_4) -> 
 1504         happyIn20
 1505                  (doCall happy_var_2 [] happy_var_4
 1506         ) `HappyStk` happyRest}}
 1507 
 1508 happyReduce_58 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1509 happyReduce_58 = happyReduce 10# 16# happyReduction_58
 1510 happyReduction_58 (happy_x_10 `HappyStk`
 1511         happy_x_9 `HappyStk`
 1512         happy_x_8 `HappyStk`
 1513         happy_x_7 `HappyStk`
 1514         happy_x_6 `HappyStk`
 1515         happy_x_5 `HappyStk`
 1516         happy_x_4 `HappyStk`
 1517         happy_x_3 `HappyStk`
 1518         happy_x_2 `HappyStk`
 1519         happy_x_1 `HappyStk`
 1520         happyRest)
 1521          = case happyOut54 happy_x_2 of { (HappyWrap54 happy_var_2) -> 
 1522         case happyOut38 happy_x_6 of { (HappyWrap38 happy_var_6) -> 
 1523         case happyOut44 happy_x_8 of { (HappyWrap44 happy_var_8) -> 
 1524         happyIn20
 1525                  (doCall happy_var_6 happy_var_2 happy_var_8
 1526         ) `HappyStk` happyRest}}}
 1527 
 1528 happyReduce_59 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1529 happyReduce_59 = happyReduce 5# 16# happyReduction_59
 1530 happyReduction_59 (happy_x_5 `HappyStk`
 1531         happy_x_4 `HappyStk`
 1532         happy_x_3 `HappyStk`
 1533         happy_x_2 `HappyStk`
 1534         happy_x_1 `HappyStk`
 1535         happyRest)
 1536          = case happyOut25 happy_x_2 of { (HappyWrap25 happy_var_2) -> 
 1537         case happyOut37 happy_x_3 of { (HappyWrap37 happy_var_3) -> 
 1538         case happyOutTok happy_x_5 of { (L _ (CmmT_Name        happy_var_5)) -> 
 1539         happyIn20
 1540                  (do l <- lookupLabel happy_var_5; cmmRawIf happy_var_2 l happy_var_3
 1541         ) `HappyStk` happyRest}}}
 1542 
 1543 happyReduce_60 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1544 happyReduce_60 = happyReduce 7# 16# happyReduction_60
 1545 happyReduction_60 (happy_x_7 `HappyStk`
 1546         happy_x_6 `HappyStk`
 1547         happy_x_5 `HappyStk`
 1548         happy_x_4 `HappyStk`
 1549         happy_x_3 `HappyStk`
 1550         happy_x_2 `HappyStk`
 1551         happy_x_1 `HappyStk`
 1552         happyRest)
 1553          = case happyOut25 happy_x_2 of { (HappyWrap25 happy_var_2) -> 
 1554         case happyOut37 happy_x_3 of { (HappyWrap37 happy_var_3) -> 
 1555         case happyOutTok happy_x_4 of { happy_var_4 -> 
 1556         case happyOut15 happy_x_5 of { (HappyWrap15 happy_var_5) -> 
 1557         case happyOutTok happy_x_6 of { happy_var_6 -> 
 1558         case happyOut36 happy_x_7 of { (HappyWrap36 happy_var_7) -> 
 1559         happyIn20
 1560                  (cmmIfThenElse happy_var_2 (withSourceNote happy_var_4 happy_var_6 happy_var_5) happy_var_7 happy_var_3
 1561         ) `HappyStk` happyRest}}}}}}
 1562 
 1563 happyReduce_61 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1564 happyReduce_61 = happyReduce 5# 16# happyReduction_61
 1565 happyReduction_61 (happy_x_5 `HappyStk`
 1566         happy_x_4 `HappyStk`
 1567         happy_x_3 `HappyStk`
 1568         happy_x_2 `HappyStk`
 1569         happy_x_1 `HappyStk`
 1570         happyRest)
 1571          = case happyOut44 happy_x_3 of { (HappyWrap44 happy_var_3) -> 
 1572         case happyOut13 happy_x_5 of { (HappyWrap13 happy_var_5) -> 
 1573         happyIn20
 1574                  (pushStackFrame happy_var_3 happy_var_5
 1575         ) `HappyStk` happyRest}}
 1576 
 1577 happyReduce_62 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1578 happyReduce_62 = happyReduce 5# 16# happyReduction_62
 1579 happyReduction_62 (happy_x_5 `HappyStk`
 1580         happy_x_4 `HappyStk`
 1581         happy_x_3 `HappyStk`
 1582         happy_x_2 `HappyStk`
 1583         happy_x_1 `HappyStk`
 1584         happyRest)
 1585          = case happyOut38 happy_x_2 of { (HappyWrap38 happy_var_2) -> 
 1586         case happyOut51 happy_x_4 of { (HappyWrap51 happy_var_4) -> 
 1587         case happyOut13 happy_x_5 of { (HappyWrap13 happy_var_5) -> 
 1588         happyIn20
 1589                  (reserveStackFrame happy_var_2 happy_var_4 happy_var_5
 1590         ) `HappyStk` happyRest}}}
 1591 
 1592 happyReduce_63 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1593 happyReduce_63 = happySpecReduce_3  16# happyReduction_63
 1594 happyReduction_63 happy_x_3
 1595         happy_x_2
 1596         happy_x_1
 1597          =  case happyOut21 happy_x_2 of { (HappyWrap21 happy_var_2) -> 
 1598         happyIn20
 1599                  (happy_var_2 >>= code . emitUnwind
 1600         )}
 1601 
 1602 happyReduce_64 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1603 happyReduce_64 = happyReduce 5# 17# happyReduction_64
 1604 happyReduction_64 (happy_x_5 `HappyStk`
 1605         happy_x_4 `HappyStk`
 1606         happy_x_3 `HappyStk`
 1607         happy_x_2 `HappyStk`
 1608         happy_x_1 `HappyStk`
 1609         happyRest)
 1610          = case happyOutTok happy_x_1 of { (L _ (CmmT_GlobalReg   happy_var_1)) -> 
 1611         case happyOut22 happy_x_3 of { (HappyWrap22 happy_var_3) -> 
 1612         case happyOut21 happy_x_5 of { (HappyWrap21 happy_var_5) -> 
 1613         happyIn21
 1614                  (do e <- happy_var_3; rest <- happy_var_5; return ((happy_var_1, e) : rest)
 1615         ) `HappyStk` happyRest}}}
 1616 
 1617 happyReduce_65 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1618 happyReduce_65 = happySpecReduce_3  17# happyReduction_65
 1619 happyReduction_65 happy_x_3
 1620         happy_x_2
 1621         happy_x_1
 1622          =  case happyOutTok happy_x_1 of { (L _ (CmmT_GlobalReg   happy_var_1)) -> 
 1623         case happyOut22 happy_x_3 of { (HappyWrap22 happy_var_3) -> 
 1624         happyIn21
 1625                  (do e <- happy_var_3; return [(happy_var_1, e)]
 1626         )}}
 1627 
 1628 happyReduce_66 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1629 happyReduce_66 = happySpecReduce_1  18# happyReduction_66
 1630 happyReduction_66 happy_x_1
 1631          =  happyIn22
 1632                  (do return Nothing
 1633         )
 1634 
 1635 happyReduce_67 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1636 happyReduce_67 = happySpecReduce_1  18# happyReduction_67
 1637 happyReduction_67 happy_x_1
 1638          =  case happyOut38 happy_x_1 of { (HappyWrap38 happy_var_1) -> 
 1639         happyIn22
 1640                  (do e <- happy_var_1; return (Just e)
 1641         )}
 1642 
 1643 happyReduce_68 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1644 happyReduce_68 = happySpecReduce_1  19# happyReduction_68
 1645 happyReduction_68 happy_x_1
 1646          =  case happyOutTok happy_x_1 of { (L _ (CmmT_Name        happy_var_1)) -> 
 1647         happyIn23
 1648                  (return (CmmLit (CmmLabel (mkForeignLabel happy_var_1 Nothing ForeignLabelInThisPackage IsFunction)))
 1649         )}
 1650 
 1651 happyReduce_69 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1652 happyReduce_69 = happySpecReduce_0  20# happyReduction_69
 1653 happyReduction_69  =  happyIn24
 1654                  (CmmMayReturn
 1655         )
 1656 
 1657 happyReduce_70 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1658 happyReduce_70 = happySpecReduce_2  20# happyReduction_70
 1659 happyReduction_70 happy_x_2
 1660         happy_x_1
 1661          =  happyIn24
 1662                  (CmmNeverReturns
 1663         )
 1664 
 1665 happyReduce_71 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1666 happyReduce_71 = happySpecReduce_1  21# happyReduction_71
 1667 happyReduction_71 happy_x_1
 1668          =  case happyOut26 happy_x_1 of { (HappyWrap26 happy_var_1) -> 
 1669         happyIn25
 1670                  (happy_var_1
 1671         )}
 1672 
 1673 happyReduce_72 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1674 happyReduce_72 = happySpecReduce_1  21# happyReduction_72
 1675 happyReduction_72 happy_x_1
 1676          =  case happyOut38 happy_x_1 of { (HappyWrap38 happy_var_1) -> 
 1677         happyIn25
 1678                  (do e <- happy_var_1; return (BoolTest e)
 1679         )}
 1680 
 1681 happyReduce_73 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1682 happyReduce_73 = happySpecReduce_3  22# happyReduction_73
 1683 happyReduction_73 happy_x_3
 1684         happy_x_2
 1685         happy_x_1
 1686          =  case happyOut25 happy_x_1 of { (HappyWrap25 happy_var_1) -> 
 1687         case happyOut25 happy_x_3 of { (HappyWrap25 happy_var_3) -> 
 1688         happyIn26
 1689                  (do e1 <- happy_var_1; e2 <- happy_var_3;
 1690                                           return (BoolAnd e1 e2)
 1691         )}}
 1692 
 1693 happyReduce_74 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1694 happyReduce_74 = happySpecReduce_3  22# happyReduction_74
 1695 happyReduction_74 happy_x_3
 1696         happy_x_2
 1697         happy_x_1
 1698          =  case happyOut25 happy_x_1 of { (HappyWrap25 happy_var_1) -> 
 1699         case happyOut25 happy_x_3 of { (HappyWrap25 happy_var_3) -> 
 1700         happyIn26
 1701                  (do e1 <- happy_var_1; e2 <- happy_var_3;
 1702                                           return (BoolOr e1 e2)
 1703         )}}
 1704 
 1705 happyReduce_75 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1706 happyReduce_75 = happySpecReduce_2  22# happyReduction_75
 1707 happyReduction_75 happy_x_2
 1708         happy_x_1
 1709          =  case happyOut25 happy_x_2 of { (HappyWrap25 happy_var_2) -> 
 1710         happyIn26
 1711                  (do e <- happy_var_2; return (BoolNot e)
 1712         )}
 1713 
 1714 happyReduce_76 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1715 happyReduce_76 = happySpecReduce_3  22# happyReduction_76
 1716 happyReduction_76 happy_x_3
 1717         happy_x_2
 1718         happy_x_1
 1719          =  case happyOut26 happy_x_2 of { (HappyWrap26 happy_var_2) -> 
 1720         happyIn26
 1721                  (happy_var_2
 1722         )}
 1723 
 1724 happyReduce_77 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1725 happyReduce_77 = happySpecReduce_0  23# happyReduction_77
 1726 happyReduction_77  =  happyIn27
 1727                  (PlayRisky
 1728         )
 1729 
 1730 happyReduce_78 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1731 happyReduce_78 = happyMonadReduce 1# 23# happyReduction_78
 1732 happyReduction_78 (happy_x_1 `HappyStk`
 1733         happyRest) tk
 1734          = happyThen ((case happyOutTok happy_x_1 of { (L _ (CmmT_String      happy_var_1)) -> 
 1735         ( parseSafety happy_var_1)})
 1736         ) (\r -> happyReturn (happyIn27 r))
 1737 
 1738 happyReduce_79 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1739 happyReduce_79 = happySpecReduce_2  24# happyReduction_79
 1740 happyReduction_79 happy_x_2
 1741         happy_x_1
 1742          =  happyIn28
 1743                  ([]
 1744         )
 1745 
 1746 happyReduce_80 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1747 happyReduce_80 = happyMonadReduce 3# 24# happyReduction_80
 1748 happyReduction_80 (happy_x_3 `HappyStk`
 1749         happy_x_2 `HappyStk`
 1750         happy_x_1 `HappyStk`
 1751         happyRest) tk
 1752          = happyThen ((( do platform <- PD.getPlatform
 1753                                          ; return (realArgRegsCover platform)))
 1754         ) (\r -> happyReturn (happyIn28 r))
 1755 
 1756 happyReduce_81 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1757 happyReduce_81 = happySpecReduce_3  24# happyReduction_81
 1758 happyReduction_81 happy_x_3
 1759         happy_x_2
 1760         happy_x_1
 1761          =  case happyOut29 happy_x_2 of { (HappyWrap29 happy_var_2) -> 
 1762         happyIn28
 1763                  (happy_var_2
 1764         )}
 1765 
 1766 happyReduce_82 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1767 happyReduce_82 = happySpecReduce_1  25# happyReduction_82
 1768 happyReduction_82 happy_x_1
 1769          =  case happyOutTok happy_x_1 of { (L _ (CmmT_GlobalReg   happy_var_1)) -> 
 1770         happyIn29
 1771                  ([happy_var_1]
 1772         )}
 1773 
 1774 happyReduce_83 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1775 happyReduce_83 = happySpecReduce_3  25# happyReduction_83
 1776 happyReduction_83 happy_x_3
 1777         happy_x_2
 1778         happy_x_1
 1779          =  case happyOutTok happy_x_1 of { (L _ (CmmT_GlobalReg   happy_var_1)) -> 
 1780         case happyOut29 happy_x_3 of { (HappyWrap29 happy_var_3) -> 
 1781         happyIn29
 1782                  (happy_var_1 : happy_var_3
 1783         )}}
 1784 
 1785 happyReduce_84 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1786 happyReduce_84 = happyReduce 5# 26# happyReduction_84
 1787 happyReduction_84 (happy_x_5 `HappyStk`
 1788         happy_x_4 `HappyStk`
 1789         happy_x_3 `HappyStk`
 1790         happy_x_2 `HappyStk`
 1791         happy_x_1 `HappyStk`
 1792         happyRest)
 1793          = case happyOutTok happy_x_2 of { (L _ (CmmT_Int         happy_var_2)) -> 
 1794         case happyOutTok happy_x_4 of { (L _ (CmmT_Int         happy_var_4)) -> 
 1795         happyIn30
 1796                  (Just (happy_var_2, happy_var_4)
 1797         ) `HappyStk` happyRest}}
 1798 
 1799 happyReduce_85 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1800 happyReduce_85 = happySpecReduce_0  26# happyReduction_85
 1801 happyReduction_85  =  happyIn30
 1802                  (Nothing
 1803         )
 1804 
 1805 happyReduce_86 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1806 happyReduce_86 = happySpecReduce_0  27# happyReduction_86
 1807 happyReduction_86  =  happyIn31
 1808                  ([]
 1809         )
 1810 
 1811 happyReduce_87 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1812 happyReduce_87 = happySpecReduce_2  27# happyReduction_87
 1813 happyReduction_87 happy_x_2
 1814         happy_x_1
 1815          =  case happyOut32 happy_x_1 of { (HappyWrap32 happy_var_1) -> 
 1816         case happyOut31 happy_x_2 of { (HappyWrap31 happy_var_2) -> 
 1817         happyIn31
 1818                  (happy_var_1 : happy_var_2
 1819         )}}
 1820 
 1821 happyReduce_88 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1822 happyReduce_88 = happyReduce 4# 28# happyReduction_88
 1823 happyReduction_88 (happy_x_4 `HappyStk`
 1824         happy_x_3 `HappyStk`
 1825         happy_x_2 `HappyStk`
 1826         happy_x_1 `HappyStk`
 1827         happyRest)
 1828          = case happyOut34 happy_x_2 of { (HappyWrap34 happy_var_2) -> 
 1829         case happyOut33 happy_x_4 of { (HappyWrap33 happy_var_4) -> 
 1830         happyIn32
 1831                  (do b <- happy_var_4; return (happy_var_2, b)
 1832         ) `HappyStk` happyRest}}
 1833 
 1834 happyReduce_89 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1835 happyReduce_89 = happySpecReduce_3  29# happyReduction_89
 1836 happyReduction_89 happy_x_3
 1837         happy_x_2
 1838         happy_x_1
 1839          =  case happyOutTok happy_x_1 of { happy_var_1 -> 
 1840         case happyOut15 happy_x_2 of { (HappyWrap15 happy_var_2) -> 
 1841         case happyOutTok happy_x_3 of { happy_var_3 -> 
 1842         happyIn33
 1843                  (return (Right (withSourceNote happy_var_1 happy_var_3 happy_var_2))
 1844         )}}}
 1845 
 1846 happyReduce_90 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1847 happyReduce_90 = happySpecReduce_3  29# happyReduction_90
 1848 happyReduction_90 happy_x_3
 1849         happy_x_2
 1850         happy_x_1
 1851          =  case happyOutTok happy_x_2 of { (L _ (CmmT_Name        happy_var_2)) -> 
 1852         happyIn33
 1853                  (do l <- lookupLabel happy_var_2; return (Left l)
 1854         )}
 1855 
 1856 happyReduce_91 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1857 happyReduce_91 = happySpecReduce_1  30# happyReduction_91
 1858 happyReduction_91 happy_x_1
 1859          =  case happyOutTok happy_x_1 of { (L _ (CmmT_Int         happy_var_1)) -> 
 1860         happyIn34
 1861                  ([ happy_var_1 ]
 1862         )}
 1863 
 1864 happyReduce_92 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1865 happyReduce_92 = happySpecReduce_3  30# happyReduction_92
 1866 happyReduction_92 happy_x_3
 1867         happy_x_2
 1868         happy_x_1
 1869          =  case happyOutTok happy_x_1 of { (L _ (CmmT_Int         happy_var_1)) -> 
 1870         case happyOut34 happy_x_3 of { (HappyWrap34 happy_var_3) -> 
 1871         happyIn34
 1872                  (happy_var_1 : happy_var_3
 1873         )}}
 1874 
 1875 happyReduce_93 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1876 happyReduce_93 = happyReduce 5# 31# happyReduction_93
 1877 happyReduction_93 (happy_x_5 `HappyStk`
 1878         happy_x_4 `HappyStk`
 1879         happy_x_3 `HappyStk`
 1880         happy_x_2 `HappyStk`
 1881         happy_x_1 `HappyStk`
 1882         happyRest)
 1883          = case happyOutTok happy_x_3 of { happy_var_3 -> 
 1884         case happyOut15 happy_x_4 of { (HappyWrap15 happy_var_4) -> 
 1885         case happyOutTok happy_x_5 of { happy_var_5 -> 
 1886         happyIn35
 1887                  (Just (withSourceNote happy_var_3 happy_var_5 happy_var_4)
 1888         ) `HappyStk` happyRest}}}
 1889 
 1890 happyReduce_94 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1891 happyReduce_94 = happySpecReduce_0  31# happyReduction_94
 1892 happyReduction_94  =  happyIn35
 1893                  (Nothing
 1894         )
 1895 
 1896 happyReduce_95 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1897 happyReduce_95 = happySpecReduce_0  32# happyReduction_95
 1898 happyReduction_95  =  happyIn36
 1899                  (return ()
 1900         )
 1901 
 1902 happyReduce_96 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1903 happyReduce_96 = happyReduce 4# 32# happyReduction_96
 1904 happyReduction_96 (happy_x_4 `HappyStk`
 1905         happy_x_3 `HappyStk`
 1906         happy_x_2 `HappyStk`
 1907         happy_x_1 `HappyStk`
 1908         happyRest)
 1909          = case happyOutTok happy_x_2 of { happy_var_2 -> 
 1910         case happyOut15 happy_x_3 of { (HappyWrap15 happy_var_3) -> 
 1911         case happyOutTok happy_x_4 of { happy_var_4 -> 
 1912         happyIn36
 1913                  (withSourceNote happy_var_2 happy_var_4 happy_var_3
 1914         ) `HappyStk` happyRest}}}
 1915 
 1916 happyReduce_97 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1917 happyReduce_97 = happyReduce 5# 33# happyReduction_97
 1918 happyReduction_97 (happy_x_5 `HappyStk`
 1919         happy_x_4 `HappyStk`
 1920         happy_x_3 `HappyStk`
 1921         happy_x_2 `HappyStk`
 1922         happy_x_1 `HappyStk`
 1923         happyRest)
 1924          = happyIn37
 1925                  (Just True
 1926         ) `HappyStk` happyRest
 1927 
 1928 happyReduce_98 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1929 happyReduce_98 = happyReduce 5# 33# happyReduction_98
 1930 happyReduction_98 (happy_x_5 `HappyStk`
 1931         happy_x_4 `HappyStk`
 1932         happy_x_3 `HappyStk`
 1933         happy_x_2 `HappyStk`
 1934         happy_x_1 `HappyStk`
 1935         happyRest)
 1936          = happyIn37
 1937                  (Just False
 1938         ) `HappyStk` happyRest
 1939 
 1940 happyReduce_99 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1941 happyReduce_99 = happySpecReduce_0  33# happyReduction_99
 1942 happyReduction_99  =  happyIn37
 1943                  (Nothing
 1944         )
 1945 
 1946 happyReduce_100 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1947 happyReduce_100 = happySpecReduce_3  34# happyReduction_100
 1948 happyReduction_100 happy_x_3
 1949         happy_x_2
 1950         happy_x_1
 1951          =  case happyOut38 happy_x_1 of { (HappyWrap38 happy_var_1) -> 
 1952         case happyOut38 happy_x_3 of { (HappyWrap38 happy_var_3) -> 
 1953         happyIn38
 1954                  (mkMachOp MO_U_Quot [happy_var_1,happy_var_3]
 1955         )}}
 1956 
 1957 happyReduce_101 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1958 happyReduce_101 = happySpecReduce_3  34# happyReduction_101
 1959 happyReduction_101 happy_x_3
 1960         happy_x_2
 1961         happy_x_1
 1962          =  case happyOut38 happy_x_1 of { (HappyWrap38 happy_var_1) -> 
 1963         case happyOut38 happy_x_3 of { (HappyWrap38 happy_var_3) -> 
 1964         happyIn38
 1965                  (mkMachOp MO_Mul [happy_var_1,happy_var_3]
 1966         )}}
 1967 
 1968 happyReduce_102 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1969 happyReduce_102 = happySpecReduce_3  34# happyReduction_102
 1970 happyReduction_102 happy_x_3
 1971         happy_x_2
 1972         happy_x_1
 1973          =  case happyOut38 happy_x_1 of { (HappyWrap38 happy_var_1) -> 
 1974         case happyOut38 happy_x_3 of { (HappyWrap38 happy_var_3) -> 
 1975         happyIn38
 1976                  (mkMachOp MO_U_Rem [happy_var_1,happy_var_3]
 1977         )}}
 1978 
 1979 happyReduce_103 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1980 happyReduce_103 = happySpecReduce_3  34# happyReduction_103
 1981 happyReduction_103 happy_x_3
 1982         happy_x_2
 1983         happy_x_1
 1984          =  case happyOut38 happy_x_1 of { (HappyWrap38 happy_var_1) -> 
 1985         case happyOut38 happy_x_3 of { (HappyWrap38 happy_var_3) -> 
 1986         happyIn38
 1987                  (mkMachOp MO_Sub [happy_var_1,happy_var_3]
 1988         )}}
 1989 
 1990 happyReduce_104 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 1991 happyReduce_104 = happySpecReduce_3  34# happyReduction_104
 1992 happyReduction_104 happy_x_3
 1993         happy_x_2
 1994         happy_x_1
 1995          =  case happyOut38 happy_x_1 of { (HappyWrap38 happy_var_1) -> 
 1996         case happyOut38 happy_x_3 of { (HappyWrap38 happy_var_3) -> 
 1997         happyIn38
 1998                  (mkMachOp MO_Add [happy_var_1,happy_var_3]
 1999         )}}
 2000 
 2001 happyReduce_105 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2002 happyReduce_105 = happySpecReduce_3  34# happyReduction_105
 2003 happyReduction_105 happy_x_3
 2004         happy_x_2
 2005         happy_x_1
 2006          =  case happyOut38 happy_x_1 of { (HappyWrap38 happy_var_1) -> 
 2007         case happyOut38 happy_x_3 of { (HappyWrap38 happy_var_3) -> 
 2008         happyIn38
 2009                  (mkMachOp MO_U_Shr [happy_var_1,happy_var_3]
 2010         )}}
 2011 
 2012 happyReduce_106 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2013 happyReduce_106 = happySpecReduce_3  34# happyReduction_106
 2014 happyReduction_106 happy_x_3
 2015         happy_x_2
 2016         happy_x_1
 2017          =  case happyOut38 happy_x_1 of { (HappyWrap38 happy_var_1) -> 
 2018         case happyOut38 happy_x_3 of { (HappyWrap38 happy_var_3) -> 
 2019         happyIn38
 2020                  (mkMachOp MO_Shl [happy_var_1,happy_var_3]
 2021         )}}
 2022 
 2023 happyReduce_107 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2024 happyReduce_107 = happySpecReduce_3  34# happyReduction_107
 2025 happyReduction_107 happy_x_3
 2026         happy_x_2
 2027         happy_x_1
 2028          =  case happyOut38 happy_x_1 of { (HappyWrap38 happy_var_1) -> 
 2029         case happyOut38 happy_x_3 of { (HappyWrap38 happy_var_3) -> 
 2030         happyIn38
 2031                  (mkMachOp MO_And [happy_var_1,happy_var_3]
 2032         )}}
 2033 
 2034 happyReduce_108 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2035 happyReduce_108 = happySpecReduce_3  34# happyReduction_108
 2036 happyReduction_108 happy_x_3
 2037         happy_x_2
 2038         happy_x_1
 2039          =  case happyOut38 happy_x_1 of { (HappyWrap38 happy_var_1) -> 
 2040         case happyOut38 happy_x_3 of { (HappyWrap38 happy_var_3) -> 
 2041         happyIn38
 2042                  (mkMachOp MO_Xor [happy_var_1,happy_var_3]
 2043         )}}
 2044 
 2045 happyReduce_109 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2046 happyReduce_109 = happySpecReduce_3  34# happyReduction_109
 2047 happyReduction_109 happy_x_3
 2048         happy_x_2
 2049         happy_x_1
 2050          =  case happyOut38 happy_x_1 of { (HappyWrap38 happy_var_1) -> 
 2051         case happyOut38 happy_x_3 of { (HappyWrap38 happy_var_3) -> 
 2052         happyIn38
 2053                  (mkMachOp MO_Or [happy_var_1,happy_var_3]
 2054         )}}
 2055 
 2056 happyReduce_110 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2057 happyReduce_110 = happySpecReduce_3  34# happyReduction_110
 2058 happyReduction_110 happy_x_3
 2059         happy_x_2
 2060         happy_x_1
 2061          =  case happyOut38 happy_x_1 of { (HappyWrap38 happy_var_1) -> 
 2062         case happyOut38 happy_x_3 of { (HappyWrap38 happy_var_3) -> 
 2063         happyIn38
 2064                  (mkMachOp MO_U_Ge [happy_var_1,happy_var_3]
 2065         )}}
 2066 
 2067 happyReduce_111 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2068 happyReduce_111 = happySpecReduce_3  34# happyReduction_111
 2069 happyReduction_111 happy_x_3
 2070         happy_x_2
 2071         happy_x_1
 2072          =  case happyOut38 happy_x_1 of { (HappyWrap38 happy_var_1) -> 
 2073         case happyOut38 happy_x_3 of { (HappyWrap38 happy_var_3) -> 
 2074         happyIn38
 2075                  (mkMachOp MO_U_Gt [happy_var_1,happy_var_3]
 2076         )}}
 2077 
 2078 happyReduce_112 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2079 happyReduce_112 = happySpecReduce_3  34# happyReduction_112
 2080 happyReduction_112 happy_x_3
 2081         happy_x_2
 2082         happy_x_1
 2083          =  case happyOut38 happy_x_1 of { (HappyWrap38 happy_var_1) -> 
 2084         case happyOut38 happy_x_3 of { (HappyWrap38 happy_var_3) -> 
 2085         happyIn38
 2086                  (mkMachOp MO_U_Le [happy_var_1,happy_var_3]
 2087         )}}
 2088 
 2089 happyReduce_113 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2090 happyReduce_113 = happySpecReduce_3  34# happyReduction_113
 2091 happyReduction_113 happy_x_3
 2092         happy_x_2
 2093         happy_x_1
 2094          =  case happyOut38 happy_x_1 of { (HappyWrap38 happy_var_1) -> 
 2095         case happyOut38 happy_x_3 of { (HappyWrap38 happy_var_3) -> 
 2096         happyIn38
 2097                  (mkMachOp MO_U_Lt [happy_var_1,happy_var_3]
 2098         )}}
 2099 
 2100 happyReduce_114 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2101 happyReduce_114 = happySpecReduce_3  34# happyReduction_114
 2102 happyReduction_114 happy_x_3
 2103         happy_x_2
 2104         happy_x_1
 2105          =  case happyOut38 happy_x_1 of { (HappyWrap38 happy_var_1) -> 
 2106         case happyOut38 happy_x_3 of { (HappyWrap38 happy_var_3) -> 
 2107         happyIn38
 2108                  (mkMachOp MO_Ne [happy_var_1,happy_var_3]
 2109         )}}
 2110 
 2111 happyReduce_115 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2112 happyReduce_115 = happySpecReduce_3  34# happyReduction_115
 2113 happyReduction_115 happy_x_3
 2114         happy_x_2
 2115         happy_x_1
 2116          =  case happyOut38 happy_x_1 of { (HappyWrap38 happy_var_1) -> 
 2117         case happyOut38 happy_x_3 of { (HappyWrap38 happy_var_3) -> 
 2118         happyIn38
 2119                  (mkMachOp MO_Eq [happy_var_1,happy_var_3]
 2120         )}}
 2121 
 2122 happyReduce_116 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2123 happyReduce_116 = happySpecReduce_2  34# happyReduction_116
 2124 happyReduction_116 happy_x_2
 2125         happy_x_1
 2126          =  case happyOut38 happy_x_2 of { (HappyWrap38 happy_var_2) -> 
 2127         happyIn38
 2128                  (mkMachOp MO_Not [happy_var_2]
 2129         )}
 2130 
 2131 happyReduce_117 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2132 happyReduce_117 = happySpecReduce_2  34# happyReduction_117
 2133 happyReduction_117 happy_x_2
 2134         happy_x_1
 2135          =  case happyOut38 happy_x_2 of { (HappyWrap38 happy_var_2) -> 
 2136         happyIn38
 2137                  (mkMachOp MO_S_Neg [happy_var_2]
 2138         )}
 2139 
 2140 happyReduce_118 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2141 happyReduce_118 = happyMonadReduce 5# 34# happyReduction_118
 2142 happyReduction_118 (happy_x_5 `HappyStk`
 2143         happy_x_4 `HappyStk`
 2144         happy_x_3 `HappyStk`
 2145         happy_x_2 `HappyStk`
 2146         happy_x_1 `HappyStk`
 2147         happyRest) tk
 2148          = happyThen ((case happyOut39 happy_x_1 of { (HappyWrap39 happy_var_1) -> 
 2149         case happyOutTok happy_x_3 of { (L _ (CmmT_Name        happy_var_3)) -> 
 2150         case happyOut39 happy_x_5 of { (HappyWrap39 happy_var_5) -> 
 2151         ( do { mo <- nameToMachOp happy_var_3 ;
 2152                                                 return (mkMachOp mo [happy_var_1,happy_var_5]) })}}})
 2153         ) (\r -> happyReturn (happyIn38 r))
 2154 
 2155 happyReduce_119 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2156 happyReduce_119 = happySpecReduce_1  34# happyReduction_119
 2157 happyReduction_119 happy_x_1
 2158          =  case happyOut39 happy_x_1 of { (HappyWrap39 happy_var_1) -> 
 2159         happyIn38
 2160                  (happy_var_1
 2161         )}
 2162 
 2163 happyReduce_120 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2164 happyReduce_120 = happySpecReduce_2  35# happyReduction_120
 2165 happyReduction_120 happy_x_2
 2166         happy_x_1
 2167          =  case happyOutTok happy_x_1 of { (L _ (CmmT_Int         happy_var_1)) -> 
 2168         case happyOut40 happy_x_2 of { (HappyWrap40 happy_var_2) -> 
 2169         happyIn39
 2170                  (return (CmmLit (CmmInt happy_var_1 (typeWidth happy_var_2)))
 2171         )}}
 2172 
 2173 happyReduce_121 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2174 happyReduce_121 = happySpecReduce_2  35# happyReduction_121
 2175 happyReduction_121 happy_x_2
 2176         happy_x_1
 2177          =  case happyOutTok happy_x_1 of { (L _ (CmmT_Float       happy_var_1)) -> 
 2178         case happyOut40 happy_x_2 of { (HappyWrap40 happy_var_2) -> 
 2179         happyIn39
 2180                  (return (CmmLit (CmmFloat happy_var_1 (typeWidth happy_var_2)))
 2181         )}}
 2182 
 2183 happyReduce_122 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2184 happyReduce_122 = happySpecReduce_1  35# happyReduction_122
 2185 happyReduction_122 happy_x_1
 2186          =  case happyOutTok happy_x_1 of { (L _ (CmmT_String      happy_var_1)) -> 
 2187         happyIn39
 2188                  (do s <- code (newStringCLit happy_var_1);
 2189                                       return (CmmLit s)
 2190         )}
 2191 
 2192 happyReduce_123 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2193 happyReduce_123 = happySpecReduce_1  35# happyReduction_123
 2194 happyReduction_123 happy_x_1
 2195          =  case happyOut46 happy_x_1 of { (HappyWrap46 happy_var_1) -> 
 2196         happyIn39
 2197                  (happy_var_1
 2198         )}
 2199 
 2200 happyReduce_124 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2201 happyReduce_124 = happyReduce 4# 35# happyReduction_124
 2202 happyReduction_124 (happy_x_4 `HappyStk`
 2203         happy_x_3 `HappyStk`
 2204         happy_x_2 `HappyStk`
 2205         happy_x_1 `HappyStk`
 2206         happyRest)
 2207          = case happyOut56 happy_x_1 of { (HappyWrap56 happy_var_1) -> 
 2208         case happyOut38 happy_x_3 of { (HappyWrap38 happy_var_3) -> 
 2209         happyIn39
 2210                  (do e <- happy_var_3; return (CmmLoad e happy_var_1)
 2211         ) `HappyStk` happyRest}}
 2212 
 2213 happyReduce_125 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2214 happyReduce_125 = happyMonadReduce 5# 35# happyReduction_125
 2215 happyReduction_125 (happy_x_5 `HappyStk`
 2216         happy_x_4 `HappyStk`
 2217         happy_x_3 `HappyStk`
 2218         happy_x_2 `HappyStk`
 2219         happy_x_1 `HappyStk`
 2220         happyRest) tk
 2221          = happyThen ((case happyOutTok happy_x_2 of { (L _ (CmmT_Name        happy_var_2)) -> 
 2222         case happyOut44 happy_x_4 of { (HappyWrap44 happy_var_4) -> 
 2223         ( exprOp happy_var_2 happy_var_4)}})
 2224         ) (\r -> happyReturn (happyIn39 r))
 2225 
 2226 happyReduce_126 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2227 happyReduce_126 = happySpecReduce_3  35# happyReduction_126
 2228 happyReduction_126 happy_x_3
 2229         happy_x_2
 2230         happy_x_1
 2231          =  case happyOut38 happy_x_2 of { (HappyWrap38 happy_var_2) -> 
 2232         happyIn39
 2233                  (happy_var_2
 2234         )}
 2235 
 2236 happyReduce_127 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2237 happyReduce_127 = happyMonadReduce 0# 36# happyReduction_127
 2238 happyReduction_127 (happyRest) tk
 2239          = happyThen ((( do platform <- PD.getPlatform; return $ bWord platform))
 2240         ) (\r -> happyReturn (happyIn40 r))
 2241 
 2242 happyReduce_128 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2243 happyReduce_128 = happySpecReduce_2  36# happyReduction_128
 2244 happyReduction_128 happy_x_2
 2245         happy_x_1
 2246          =  case happyOut56 happy_x_2 of { (HappyWrap56 happy_var_2) -> 
 2247         happyIn40
 2248                  (happy_var_2
 2249         )}
 2250 
 2251 happyReduce_129 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2252 happyReduce_129 = happySpecReduce_0  37# happyReduction_129
 2253 happyReduction_129  =  happyIn41
 2254                  ([]
 2255         )
 2256 
 2257 happyReduce_130 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2258 happyReduce_130 = happySpecReduce_1  37# happyReduction_130
 2259 happyReduction_130 happy_x_1
 2260          =  case happyOut42 happy_x_1 of { (HappyWrap42 happy_var_1) -> 
 2261         happyIn41
 2262                  (happy_var_1
 2263         )}
 2264 
 2265 happyReduce_131 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2266 happyReduce_131 = happySpecReduce_1  38# happyReduction_131
 2267 happyReduction_131 happy_x_1
 2268          =  case happyOut43 happy_x_1 of { (HappyWrap43 happy_var_1) -> 
 2269         happyIn42
 2270                  ([happy_var_1]
 2271         )}
 2272 
 2273 happyReduce_132 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2274 happyReduce_132 = happySpecReduce_3  38# happyReduction_132
 2275 happyReduction_132 happy_x_3
 2276         happy_x_2
 2277         happy_x_1
 2278          =  case happyOut43 happy_x_1 of { (HappyWrap43 happy_var_1) -> 
 2279         case happyOut42 happy_x_3 of { (HappyWrap42 happy_var_3) -> 
 2280         happyIn42
 2281                  (happy_var_1 : happy_var_3
 2282         )}}
 2283 
 2284 happyReduce_133 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2285 happyReduce_133 = happySpecReduce_1  39# happyReduction_133
 2286 happyReduction_133 happy_x_1
 2287          =  case happyOut38 happy_x_1 of { (HappyWrap38 happy_var_1) -> 
 2288         happyIn43
 2289                  (do e <- happy_var_1;
 2290                                              return (e, inferCmmHint e)
 2291         )}
 2292 
 2293 happyReduce_134 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2294 happyReduce_134 = happyMonadReduce 2# 39# happyReduction_134
 2295 happyReduction_134 (happy_x_2 `HappyStk`
 2296         happy_x_1 `HappyStk`
 2297         happyRest) tk
 2298          = happyThen ((case happyOut38 happy_x_1 of { (HappyWrap38 happy_var_1) -> 
 2299         case happyOutTok happy_x_2 of { (L _ (CmmT_String      happy_var_2)) -> 
 2300         ( do h <- parseCmmHint happy_var_2;
 2301                                               return $ do
 2302                                                 e <- happy_var_1; return (e, h))}})
 2303         ) (\r -> happyReturn (happyIn43 r))
 2304 
 2305 happyReduce_135 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2306 happyReduce_135 = happySpecReduce_0  40# happyReduction_135
 2307 happyReduction_135  =  happyIn44
 2308                  ([]
 2309         )
 2310 
 2311 happyReduce_136 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2312 happyReduce_136 = happySpecReduce_1  40# happyReduction_136
 2313 happyReduction_136 happy_x_1
 2314          =  case happyOut45 happy_x_1 of { (HappyWrap45 happy_var_1) -> 
 2315         happyIn44
 2316                  (happy_var_1
 2317         )}
 2318 
 2319 happyReduce_137 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2320 happyReduce_137 = happySpecReduce_1  41# happyReduction_137
 2321 happyReduction_137 happy_x_1
 2322          =  case happyOut38 happy_x_1 of { (HappyWrap38 happy_var_1) -> 
 2323         happyIn45
 2324                  ([ happy_var_1 ]
 2325         )}
 2326 
 2327 happyReduce_138 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2328 happyReduce_138 = happySpecReduce_3  41# happyReduction_138
 2329 happyReduction_138 happy_x_3
 2330         happy_x_2
 2331         happy_x_1
 2332          =  case happyOut38 happy_x_1 of { (HappyWrap38 happy_var_1) -> 
 2333         case happyOut45 happy_x_3 of { (HappyWrap45 happy_var_3) -> 
 2334         happyIn45
 2335                  (happy_var_1 : happy_var_3
 2336         )}}
 2337 
 2338 happyReduce_139 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2339 happyReduce_139 = happySpecReduce_1  42# happyReduction_139
 2340 happyReduction_139 happy_x_1
 2341          =  case happyOutTok happy_x_1 of { (L _ (CmmT_Name        happy_var_1)) -> 
 2342         happyIn46
 2343                  (lookupName happy_var_1
 2344         )}
 2345 
 2346 happyReduce_140 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2347 happyReduce_140 = happySpecReduce_1  42# happyReduction_140
 2348 happyReduction_140 happy_x_1
 2349          =  case happyOutTok happy_x_1 of { (L _ (CmmT_GlobalReg   happy_var_1)) -> 
 2350         happyIn46
 2351                  (return (CmmReg (CmmGlobal happy_var_1))
 2352         )}
 2353 
 2354 happyReduce_141 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2355 happyReduce_141 = happySpecReduce_0  43# happyReduction_141
 2356 happyReduction_141  =  happyIn47
 2357                  ([]
 2358         )
 2359 
 2360 happyReduce_142 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2361 happyReduce_142 = happyReduce 4# 43# happyReduction_142
 2362 happyReduction_142 (happy_x_4 `HappyStk`
 2363         happy_x_3 `HappyStk`
 2364         happy_x_2 `HappyStk`
 2365         happy_x_1 `HappyStk`
 2366         happyRest)
 2367          = case happyOut48 happy_x_2 of { (HappyWrap48 happy_var_2) -> 
 2368         happyIn47
 2369                  (happy_var_2
 2370         ) `HappyStk` happyRest}
 2371 
 2372 happyReduce_143 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2373 happyReduce_143 = happySpecReduce_1  44# happyReduction_143
 2374 happyReduction_143 happy_x_1
 2375          =  case happyOut49 happy_x_1 of { (HappyWrap49 happy_var_1) -> 
 2376         happyIn48
 2377                  ([happy_var_1]
 2378         )}
 2379 
 2380 happyReduce_144 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2381 happyReduce_144 = happySpecReduce_2  44# happyReduction_144
 2382 happyReduction_144 happy_x_2
 2383         happy_x_1
 2384          =  case happyOut49 happy_x_1 of { (HappyWrap49 happy_var_1) -> 
 2385         happyIn48
 2386                  ([happy_var_1]
 2387         )}
 2388 
 2389 happyReduce_145 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2390 happyReduce_145 = happySpecReduce_3  44# happyReduction_145
 2391 happyReduction_145 happy_x_3
 2392         happy_x_2
 2393         happy_x_1
 2394          =  case happyOut49 happy_x_1 of { (HappyWrap49 happy_var_1) -> 
 2395         case happyOut48 happy_x_3 of { (HappyWrap48 happy_var_3) -> 
 2396         happyIn48
 2397                  (happy_var_1 : happy_var_3
 2398         )}}
 2399 
 2400 happyReduce_146 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2401 happyReduce_146 = happySpecReduce_1  45# happyReduction_146
 2402 happyReduction_146 happy_x_1
 2403          =  case happyOut50 happy_x_1 of { (HappyWrap50 happy_var_1) -> 
 2404         happyIn49
 2405                  (do e <- happy_var_1; return (e, inferCmmHint (CmmReg (CmmLocal e)))
 2406         )}
 2407 
 2408 happyReduce_147 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2409 happyReduce_147 = happyMonadReduce 2# 45# happyReduction_147
 2410 happyReduction_147 (happy_x_2 `HappyStk`
 2411         happy_x_1 `HappyStk`
 2412         happyRest) tk
 2413          = happyThen ((case happyOutTok happy_x_1 of { (L _ (CmmT_String      happy_var_1)) -> 
 2414         case happyOut50 happy_x_2 of { (HappyWrap50 happy_var_2) -> 
 2415         ( do h <- parseCmmHint happy_var_1;
 2416                                       return $ do
 2417                                          e <- happy_var_2; return (e,h))}})
 2418         ) (\r -> happyReturn (happyIn49 r))
 2419 
 2420 happyReduce_148 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2421 happyReduce_148 = happySpecReduce_1  46# happyReduction_148
 2422 happyReduction_148 happy_x_1
 2423          =  case happyOutTok happy_x_1 of { (L _ (CmmT_Name        happy_var_1)) -> 
 2424         happyIn50
 2425                  (do e <- lookupName happy_var_1;
 2426                                      return $
 2427                                        case e of
 2428                                         CmmReg (CmmLocal r) -> r
 2429                                         other -> pprPanic "CmmParse:" (ftext happy_var_1 <> text " not a local register")
 2430         )}
 2431 
 2432 happyReduce_149 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2433 happyReduce_149 = happySpecReduce_1  47# happyReduction_149
 2434 happyReduction_149 happy_x_1
 2435          =  case happyOutTok happy_x_1 of { (L _ (CmmT_Name        happy_var_1)) -> 
 2436         happyIn51
 2437                  (do e <- lookupName happy_var_1;
 2438                                      return $
 2439                                        case e of
 2440                                         CmmReg r -> r
 2441                                         other -> pprPanic "CmmParse:" (ftext happy_var_1 <> text " not a register")
 2442         )}
 2443 
 2444 happyReduce_150 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2445 happyReduce_150 = happySpecReduce_1  47# happyReduction_150
 2446 happyReduction_150 happy_x_1
 2447          =  case happyOutTok happy_x_1 of { (L _ (CmmT_GlobalReg   happy_var_1)) -> 
 2448         happyIn51
 2449                  (return (CmmGlobal happy_var_1)
 2450         )}
 2451 
 2452 happyReduce_151 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2453 happyReduce_151 = happySpecReduce_0  48# happyReduction_151
 2454 happyReduction_151  =  happyIn52
 2455                  (Nothing
 2456         )
 2457 
 2458 happyReduce_152 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2459 happyReduce_152 = happySpecReduce_3  48# happyReduction_152
 2460 happyReduction_152 happy_x_3
 2461         happy_x_2
 2462         happy_x_1
 2463          =  case happyOut53 happy_x_2 of { (HappyWrap53 happy_var_2) -> 
 2464         happyIn52
 2465                  (Just happy_var_2
 2466         )}
 2467 
 2468 happyReduce_153 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2469 happyReduce_153 = happySpecReduce_0  49# happyReduction_153
 2470 happyReduction_153  =  happyIn53
 2471                  ([]
 2472         )
 2473 
 2474 happyReduce_154 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2475 happyReduce_154 = happySpecReduce_1  49# happyReduction_154
 2476 happyReduction_154 happy_x_1
 2477          =  case happyOut54 happy_x_1 of { (HappyWrap54 happy_var_1) -> 
 2478         happyIn53
 2479                  (happy_var_1
 2480         )}
 2481 
 2482 happyReduce_155 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2483 happyReduce_155 = happySpecReduce_2  50# happyReduction_155
 2484 happyReduction_155 happy_x_2
 2485         happy_x_1
 2486          =  case happyOut55 happy_x_1 of { (HappyWrap55 happy_var_1) -> 
 2487         happyIn54
 2488                  ([happy_var_1]
 2489         )}
 2490 
 2491 happyReduce_156 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2492 happyReduce_156 = happySpecReduce_1  50# happyReduction_156
 2493 happyReduction_156 happy_x_1
 2494          =  case happyOut55 happy_x_1 of { (HappyWrap55 happy_var_1) -> 
 2495         happyIn54
 2496                  ([happy_var_1]
 2497         )}
 2498 
 2499 happyReduce_157 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2500 happyReduce_157 = happySpecReduce_3  50# happyReduction_157
 2501 happyReduction_157 happy_x_3
 2502         happy_x_2
 2503         happy_x_1
 2504          =  case happyOut55 happy_x_1 of { (HappyWrap55 happy_var_1) -> 
 2505         case happyOut54 happy_x_3 of { (HappyWrap54 happy_var_3) -> 
 2506         happyIn54
 2507                  (happy_var_1 : happy_var_3
 2508         )}}
 2509 
 2510 happyReduce_158 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2511 happyReduce_158 = happySpecReduce_2  51# happyReduction_158
 2512 happyReduction_158 happy_x_2
 2513         happy_x_1
 2514          =  case happyOut56 happy_x_1 of { (HappyWrap56 happy_var_1) -> 
 2515         case happyOutTok happy_x_2 of { (L _ (CmmT_Name        happy_var_2)) -> 
 2516         happyIn55
 2517                  (newLocal happy_var_1 happy_var_2
 2518         )}}
 2519 
 2520 happyReduce_159 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2521 happyReduce_159 = happySpecReduce_1  52# happyReduction_159
 2522 happyReduction_159 happy_x_1
 2523          =  happyIn56
 2524                  (b8
 2525         )
 2526 
 2527 happyReduce_160 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2528 happyReduce_160 = happySpecReduce_1  52# happyReduction_160
 2529 happyReduction_160 happy_x_1
 2530          =  case happyOut57 happy_x_1 of { (HappyWrap57 happy_var_1) -> 
 2531         happyIn56
 2532                  (happy_var_1
 2533         )}
 2534 
 2535 happyReduce_161 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2536 happyReduce_161 = happySpecReduce_1  53# happyReduction_161
 2537 happyReduction_161 happy_x_1
 2538          =  happyIn57
 2539                  (b16
 2540         )
 2541 
 2542 happyReduce_162 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2543 happyReduce_162 = happySpecReduce_1  53# happyReduction_162
 2544 happyReduction_162 happy_x_1
 2545          =  happyIn57
 2546                  (b32
 2547         )
 2548 
 2549 happyReduce_163 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2550 happyReduce_163 = happySpecReduce_1  53# happyReduction_163
 2551 happyReduction_163 happy_x_1
 2552          =  happyIn57
 2553                  (b64
 2554         )
 2555 
 2556 happyReduce_164 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2557 happyReduce_164 = happySpecReduce_1  53# happyReduction_164
 2558 happyReduction_164 happy_x_1
 2559          =  happyIn57
 2560                  (b128
 2561         )
 2562 
 2563 happyReduce_165 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2564 happyReduce_165 = happySpecReduce_1  53# happyReduction_165
 2565 happyReduction_165 happy_x_1
 2566          =  happyIn57
 2567                  (b256
 2568         )
 2569 
 2570 happyReduce_166 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2571 happyReduce_166 = happySpecReduce_1  53# happyReduction_166
 2572 happyReduction_166 happy_x_1
 2573          =  happyIn57
 2574                  (b512
 2575         )
 2576 
 2577 happyReduce_167 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2578 happyReduce_167 = happySpecReduce_1  53# happyReduction_167
 2579 happyReduction_167 happy_x_1
 2580          =  happyIn57
 2581                  (f32
 2582         )
 2583 
 2584 happyReduce_168 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2585 happyReduce_168 = happySpecReduce_1  53# happyReduction_168
 2586 happyReduction_168 happy_x_1
 2587          =  happyIn57
 2588                  (f64
 2589         )
 2590 
 2591 happyReduce_169 :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2592 happyReduce_169 = happyMonadReduce 1# 53# happyReduction_169
 2593 happyReduction_169 (happy_x_1 `HappyStk`
 2594         happyRest) tk
 2595          = happyThen ((( do platform <- PD.getPlatform; return $ gcWord platform))
 2596         ) (\r -> happyReturn (happyIn57 r))
 2597 
 2598 happyNewToken action sts stk
 2599         = cmmlex(\tk -> 
 2600         let cont i = happyDoAction i tk action sts stk in
 2601         case tk of {
 2602         L _ CmmT_EOF -> happyDoAction 77# tk action sts stk;
 2603         L _ (CmmT_SpecChar ':') -> cont 1#;
 2604         L _ (CmmT_SpecChar ';') -> cont 2#;
 2605         L _ (CmmT_SpecChar '{') -> cont 3#;
 2606         L _ (CmmT_SpecChar '}') -> cont 4#;
 2607         L _ (CmmT_SpecChar '[') -> cont 5#;
 2608         L _ (CmmT_SpecChar ']') -> cont 6#;
 2609         L _ (CmmT_SpecChar '(') -> cont 7#;
 2610         L _ (CmmT_SpecChar ')') -> cont 8#;
 2611         L _ (CmmT_SpecChar '=') -> cont 9#;
 2612         L _ (CmmT_SpecChar '`') -> cont 10#;
 2613         L _ (CmmT_SpecChar '~') -> cont 11#;
 2614         L _ (CmmT_SpecChar '/') -> cont 12#;
 2615         L _ (CmmT_SpecChar '*') -> cont 13#;
 2616         L _ (CmmT_SpecChar '%') -> cont 14#;
 2617         L _ (CmmT_SpecChar '-') -> cont 15#;
 2618         L _ (CmmT_SpecChar '+') -> cont 16#;
 2619         L _ (CmmT_SpecChar '&') -> cont 17#;
 2620         L _ (CmmT_SpecChar '^') -> cont 18#;
 2621         L _ (CmmT_SpecChar '|') -> cont 19#;
 2622         L _ (CmmT_SpecChar '>') -> cont 20#;
 2623         L _ (CmmT_SpecChar '<') -> cont 21#;
 2624         L _ (CmmT_SpecChar ',') -> cont 22#;
 2625         L _ (CmmT_SpecChar '!') -> cont 23#;
 2626         L _ (CmmT_DotDot) -> cont 24#;
 2627         L _ (CmmT_DoubleColon) -> cont 25#;
 2628         L _ (CmmT_Shr) -> cont 26#;
 2629         L _ (CmmT_Shl) -> cont 27#;
 2630         L _ (CmmT_Ge) -> cont 28#;
 2631         L _ (CmmT_Le) -> cont 29#;
 2632         L _ (CmmT_Eq) -> cont 30#;
 2633         L _ (CmmT_Ne) -> cont 31#;
 2634         L _ (CmmT_BoolAnd) -> cont 32#;
 2635         L _ (CmmT_BoolOr) -> cont 33#;
 2636         L _ (CmmT_True ) -> cont 34#;
 2637         L _ (CmmT_False) -> cont 35#;
 2638         L _ (CmmT_likely) -> cont 36#;
 2639         L _ (CmmT_CLOSURE) -> cont 37#;
 2640         L _ (CmmT_INFO_TABLE) -> cont 38#;
 2641         L _ (CmmT_INFO_TABLE_RET) -> cont 39#;
 2642         L _ (CmmT_INFO_TABLE_FUN) -> cont 40#;
 2643         L _ (CmmT_INFO_TABLE_CONSTR) -> cont 41#;
 2644         L _ (CmmT_INFO_TABLE_SELECTOR) -> cont 42#;
 2645         L _ (CmmT_else) -> cont 43#;
 2646         L _ (CmmT_export) -> cont 44#;
 2647         L _ (CmmT_section) -> cont 45#;
 2648         L _ (CmmT_goto) -> cont 46#;
 2649         L _ (CmmT_if) -> cont 47#;
 2650         L _ (CmmT_call) -> cont 48#;
 2651         L _ (CmmT_jump) -> cont 49#;
 2652         L _ (CmmT_foreign) -> cont 50#;
 2653         L _ (CmmT_never) -> cont 51#;
 2654         L _ (CmmT_prim) -> cont 52#;
 2655         L _ (CmmT_reserve) -> cont 53#;
 2656         L _ (CmmT_return) -> cont 54#;
 2657         L _ (CmmT_returns) -> cont 55#;
 2658         L _ (CmmT_import) -> cont 56#;
 2659         L _ (CmmT_switch) -> cont 57#;
 2660         L _ (CmmT_case) -> cont 58#;
 2661         L _ (CmmT_default) -> cont 59#;
 2662         L _ (CmmT_push) -> cont 60#;
 2663         L _ (CmmT_unwind) -> cont 61#;
 2664         L _ (CmmT_bits8) -> cont 62#;
 2665         L _ (CmmT_bits16) -> cont 63#;
 2666         L _ (CmmT_bits32) -> cont 64#;
 2667         L _ (CmmT_bits64) -> cont 65#;
 2668         L _ (CmmT_bits128) -> cont 66#;
 2669         L _ (CmmT_bits256) -> cont 67#;
 2670         L _ (CmmT_bits512) -> cont 68#;
 2671         L _ (CmmT_float32) -> cont 69#;
 2672         L _ (CmmT_float64) -> cont 70#;
 2673         L _ (CmmT_gcptr) -> cont 71#;
 2674         L _ (CmmT_GlobalReg   happy_dollar_dollar) -> cont 72#;
 2675         L _ (CmmT_Name        happy_dollar_dollar) -> cont 73#;
 2676         L _ (CmmT_String      happy_dollar_dollar) -> cont 74#;
 2677         L _ (CmmT_Int         happy_dollar_dollar) -> cont 75#;
 2678         L _ (CmmT_Float       happy_dollar_dollar) -> cont 76#;
 2679         _ -> happyError' (tk, [])
 2680         })
 2681 
 2682 happyError_ explist 77# tk = happyError' (tk, explist)
 2683 happyError_ explist _ tk = happyError' (tk, explist)
 2684 
 2685 happyThen :: () => PD a -> (a -> PD b) -> PD b
 2686 happyThen = (>>=)
 2687 happyReturn :: () => a -> PD a
 2688 happyReturn = (return)
 2689 happyParse :: () => Happy_GHC_Exts.Int# -> PD (HappyAbsSyn )
 2690 
 2691 happyNewToken :: () => Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2692 
 2693 happyDoAction :: () => Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn )
 2694 
 2695 happyReduceArr :: () => Happy_Data_Array.Array Prelude.Int (Happy_GHC_Exts.Int# -> Located CmmToken -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> PD (HappyAbsSyn ))
 2696 
 2697 happyThen1 :: () => PD a -> (a -> PD b) -> PD b
 2698 happyThen1 = happyThen
 2699 happyReturn1 :: () => a -> PD a
 2700 happyReturn1 = happyReturn
 2701 happyError' :: () => ((Located CmmToken), [Prelude.String]) -> PD a
 2702 happyError' tk = (\(tokens, explist) -> happyError) tk
 2703 cmmParse = happySomeParser where
 2704  happySomeParser = happyThen (happyParse 0#) (\x -> happyReturn (let {(HappyWrap4 x') = happyOut4 x} in x'))
 2705 
 2706 happySeq = happyDoSeq
 2707 
 2708 
 2709 section :: String -> SectionType
 2710 section "text"      = Text
 2711 section "data"      = Data
 2712 section "rodata"    = ReadOnlyData
 2713 section "relrodata" = RelocatableReadOnlyData
 2714 section "bss"       = UninitialisedData
 2715 section s           = OtherSection s
 2716 
 2717 mkString :: String -> CmmStatic
 2718 mkString s = CmmString (BS8.pack s)
 2719 
 2720 -- mkMachOp infers the type of the MachOp from the type of its first
 2721 -- argument.  We assume that this is correct: for MachOps that don't have
 2722 -- symmetrical args (e.g. shift ops), the first arg determines the type of
 2723 -- the op.
 2724 mkMachOp :: (Width -> MachOp) -> [CmmParse CmmExpr] -> CmmParse CmmExpr
 2725 mkMachOp fn args = do
 2726   platform <- getPlatform
 2727   arg_exprs <- sequence args
 2728   return (CmmMachOp (fn (typeWidth (cmmExprType platform (head arg_exprs)))) arg_exprs)
 2729 
 2730 getLit :: CmmExpr -> CmmLit
 2731 getLit (CmmLit l) = l
 2732 getLit (CmmMachOp (MO_S_Neg _) [CmmLit (CmmInt i r)])  = CmmInt (negate i) r
 2733 getLit _ = panic "invalid literal" -- TODO messy failure
 2734 
 2735 nameToMachOp :: FastString -> PD (Width -> MachOp)
 2736 nameToMachOp name =
 2737   case lookupUFM machOps name of
 2738         Nothing -> failMsgPD $ \span -> mkPlainErrorMsgEnvelope span $ PsErrCmmParser (CmmUnknownPrimitive name)
 2739         Just m  -> return m
 2740 
 2741 exprOp :: FastString -> [CmmParse CmmExpr] -> PD (CmmParse CmmExpr)
 2742 exprOp name args_code = do
 2743   ptr_opts <- PD.getPtrOpts
 2744   case lookupUFM (exprMacros ptr_opts) name of
 2745      Just f  -> return $ do
 2746         args <- sequence args_code
 2747         return (f args)
 2748      Nothing -> do
 2749         mo <- nameToMachOp name
 2750         return $ mkMachOp mo args_code
 2751 
 2752 exprMacros :: PtrOpts -> UniqFM FastString ([CmmExpr] -> CmmExpr)
 2753 exprMacros ptr_opts = listToUFM [
 2754   ( fsLit "ENTRY_CODE",   \ [x] -> entryCode platform x ),
 2755   ( fsLit "INFO_PTR",     \ [x] -> closureInfoPtr ptr_opts x ),
 2756   ( fsLit "STD_INFO",     \ [x] -> infoTable profile x ),
 2757   ( fsLit "FUN_INFO",     \ [x] -> funInfoTable profile x ),
 2758   ( fsLit "GET_ENTRY",    \ [x] -> entryCode platform (closureInfoPtr ptr_opts x) ),
 2759   ( fsLit "GET_STD_INFO", \ [x] -> infoTable profile (closureInfoPtr ptr_opts x) ),
 2760   ( fsLit "GET_FUN_INFO", \ [x] -> funInfoTable profile (closureInfoPtr ptr_opts x) ),
 2761   ( fsLit "INFO_TYPE",    \ [x] -> infoTableClosureType profile x ),
 2762   ( fsLit "INFO_PTRS",    \ [x] -> infoTablePtrs profile x ),
 2763   ( fsLit "INFO_NPTRS",   \ [x] -> infoTableNonPtrs profile x )
 2764   ]
 2765   where
 2766     profile  = po_profile ptr_opts
 2767     platform = profilePlatform profile
 2768 
 2769 -- we understand a subset of C-- primitives:
 2770 machOps = listToUFM $
 2771         map (\(x, y) -> (mkFastString x, y)) [
 2772         ( "add",        MO_Add ),
 2773         ( "sub",        MO_Sub ),
 2774         ( "eq",         MO_Eq ),
 2775         ( "ne",         MO_Ne ),
 2776         ( "mul",        MO_Mul ),
 2777         ( "neg",        MO_S_Neg ),
 2778         ( "quot",       MO_S_Quot ),
 2779         ( "rem",        MO_S_Rem ),
 2780         ( "divu",       MO_U_Quot ),
 2781         ( "modu",       MO_U_Rem ),
 2782 
 2783         ( "ge",         MO_S_Ge ),
 2784         ( "le",         MO_S_Le ),
 2785         ( "gt",         MO_S_Gt ),
 2786         ( "lt",         MO_S_Lt ),
 2787 
 2788         ( "geu",        MO_U_Ge ),
 2789         ( "leu",        MO_U_Le ),
 2790         ( "gtu",        MO_U_Gt ),
 2791         ( "ltu",        MO_U_Lt ),
 2792 
 2793         ( "and",        MO_And ),
 2794         ( "or",         MO_Or ),
 2795         ( "xor",        MO_Xor ),
 2796         ( "com",        MO_Not ),
 2797         ( "shl",        MO_Shl ),
 2798         ( "shrl",       MO_U_Shr ),
 2799         ( "shra",       MO_S_Shr ),
 2800 
 2801         ( "fadd",       MO_F_Add ),
 2802         ( "fsub",       MO_F_Sub ),
 2803         ( "fneg",       MO_F_Neg ),
 2804         ( "fmul",       MO_F_Mul ),
 2805         ( "fquot",      MO_F_Quot ),
 2806 
 2807         ( "feq",        MO_F_Eq ),
 2808         ( "fne",        MO_F_Ne ),
 2809         ( "fge",        MO_F_Ge ),
 2810         ( "fle",        MO_F_Le ),
 2811         ( "fgt",        MO_F_Gt ),
 2812         ( "flt",        MO_F_Lt ),
 2813 
 2814         ( "lobits8",  flip MO_UU_Conv W8  ),
 2815         ( "lobits16", flip MO_UU_Conv W16 ),
 2816         ( "lobits32", flip MO_UU_Conv W32 ),
 2817         ( "lobits64", flip MO_UU_Conv W64 ),
 2818 
 2819         ( "zx16",     flip MO_UU_Conv W16 ),
 2820         ( "zx32",     flip MO_UU_Conv W32 ),
 2821         ( "zx64",     flip MO_UU_Conv W64 ),
 2822 
 2823         ( "sx16",     flip MO_SS_Conv W16 ),
 2824         ( "sx32",     flip MO_SS_Conv W32 ),
 2825         ( "sx64",     flip MO_SS_Conv W64 ),
 2826 
 2827         ( "f2f32",    flip MO_FF_Conv W32 ),  -- TODO; rounding mode
 2828         ( "f2f64",    flip MO_FF_Conv W64 ),  -- TODO; rounding mode
 2829         ( "f2i8",     flip MO_FS_Conv W8 ),
 2830         ( "f2i16",    flip MO_FS_Conv W16 ),
 2831         ( "f2i32",    flip MO_FS_Conv W32 ),
 2832         ( "f2i64",    flip MO_FS_Conv W64 ),
 2833         ( "i2f32",    flip MO_SF_Conv W32 ),
 2834         ( "i2f64",    flip MO_SF_Conv W64 )
 2835         ]
 2836 
 2837 callishMachOps :: Platform -> UniqFM FastString ([CmmExpr] -> (CallishMachOp, [CmmExpr]))
 2838 callishMachOps platform = listToUFM $
 2839         map (\(x, y) -> (mkFastString x, y)) [
 2840 
 2841         ( "pow64f", (MO_F64_Pwr,) ),
 2842         ( "sin64f", (MO_F64_Sin,) ),
 2843         ( "cos64f", (MO_F64_Cos,) ),
 2844         ( "tan64f", (MO_F64_Tan,) ),
 2845         ( "sinh64f", (MO_F64_Sinh,) ),
 2846         ( "cosh64f", (MO_F64_Cosh,) ),
 2847         ( "tanh64f", (MO_F64_Tanh,) ),
 2848         ( "asin64f", (MO_F64_Asin,) ),
 2849         ( "acos64f", (MO_F64_Acos,) ),
 2850         ( "atan64f", (MO_F64_Atan,) ),
 2851         ( "asinh64f", (MO_F64_Asinh,) ),
 2852         ( "acosh64f", (MO_F64_Acosh,) ),
 2853         ( "log64f", (MO_F64_Log,) ),
 2854         ( "log1p64f", (MO_F64_Log1P,) ),
 2855         ( "exp64f", (MO_F64_Exp,) ),
 2856         ( "expM164f", (MO_F64_ExpM1,) ),
 2857         ( "fabs64f", (MO_F64_Fabs,) ),
 2858         ( "sqrt64f", (MO_F64_Sqrt,) ),
 2859 
 2860         ( "pow32f", (MO_F32_Pwr,) ),
 2861         ( "sin32f", (MO_F32_Sin,) ),
 2862         ( "cos32f", (MO_F32_Cos,) ),
 2863         ( "tan32f", (MO_F32_Tan,) ),
 2864         ( "sinh32f", (MO_F32_Sinh,) ),
 2865         ( "cosh32f", (MO_F32_Cosh,) ),
 2866         ( "tanh32f", (MO_F32_Tanh,) ),
 2867         ( "asin32f", (MO_F32_Asin,) ),
 2868         ( "acos32f", (MO_F32_Acos,) ),
 2869         ( "atan32f", (MO_F32_Atan,) ),
 2870         ( "asinh32f", (MO_F32_Asinh,) ),
 2871         ( "acosh32f", (MO_F32_Acosh,) ),
 2872         ( "log32f", (MO_F32_Log,) ),
 2873         ( "log1p32f", (MO_F32_Log1P,) ),
 2874         ( "exp32f", (MO_F32_Exp,) ),
 2875         ( "expM132f", (MO_F32_ExpM1,) ),
 2876         ( "fabs32f", (MO_F32_Fabs,) ),
 2877         ( "sqrt32f", (MO_F32_Sqrt,) ),
 2878 
 2879         ( "read_barrier", (MO_ReadBarrier,)),
 2880         ( "write_barrier", (MO_WriteBarrier,)),
 2881         ( "memcpy", memcpyLikeTweakArgs MO_Memcpy ),
 2882         ( "memset", memcpyLikeTweakArgs MO_Memset ),
 2883         ( "memmove", memcpyLikeTweakArgs MO_Memmove ),
 2884         ( "memcmp", memcpyLikeTweakArgs MO_Memcmp ),
 2885 
 2886         ( "suspendThread", (MO_SuspendThread,) ),
 2887         ( "resumeThread",  (MO_ResumeThread,) ),
 2888 
 2889         ("prefetch0", (MO_Prefetch_Data 0,)),
 2890         ("prefetch1", (MO_Prefetch_Data 1,)),
 2891         ("prefetch2", (MO_Prefetch_Data 2,)),
 2892         ("prefetch3", (MO_Prefetch_Data 3,)),
 2893 
 2894         ( "popcnt8",  (MO_PopCnt W8,)),
 2895         ( "popcnt16", (MO_PopCnt W16,)),
 2896         ( "popcnt32", (MO_PopCnt W32,)),
 2897         ( "popcnt64", (MO_PopCnt W64,)),
 2898 
 2899         ( "pdep8",  (MO_Pdep W8,)),
 2900         ( "pdep16", (MO_Pdep W16,)),
 2901         ( "pdep32", (MO_Pdep W32,)),
 2902         ( "pdep64", (MO_Pdep W64,)),
 2903 
 2904         ( "pext8",  (MO_Pext W8,)),
 2905         ( "pext16", (MO_Pext W16,)),
 2906         ( "pext32", (MO_Pext W32,)),
 2907         ( "pext64", (MO_Pext W64,)),
 2908 
 2909         ( "cmpxchg8",  (MO_Cmpxchg W8,)),
 2910         ( "cmpxchg16", (MO_Cmpxchg W16,)),
 2911         ( "cmpxchg32", (MO_Cmpxchg W32,)),
 2912         ( "cmpxchg64", (MO_Cmpxchg W64,)),
 2913 
 2914         ( "xchg8",  (MO_Xchg W8,)),
 2915         ( "xchg16", (MO_Xchg W16,)),
 2916         ( "xchg32", (MO_Xchg W32,)),
 2917         ( "xchg64", (MO_Xchg W64,))
 2918     ]
 2919   where
 2920     memcpyLikeTweakArgs :: (Int -> CallishMachOp) -> [CmmExpr] -> (CallishMachOp, [CmmExpr])
 2921     memcpyLikeTweakArgs op [] = pgmError "memcpy-like function requires at least one argument"
 2922     memcpyLikeTweakArgs op args@(_:_) =
 2923         (op align, args')
 2924       where
 2925         args' = init args
 2926         align = case last args of
 2927           CmmLit (CmmInt alignInteger _) -> fromInteger alignInteger
 2928           e -> pgmErrorDoc "Non-constant alignment in memcpy-like function:" (pdoc platform e)
 2929         -- The alignment of memcpy-ish operations must be a
 2930         -- compile-time constant. We verify this here, passing it around
 2931         -- in the MO_* constructor. In order to do this, however, we
 2932         -- must intercept the arguments in primCall.
 2933 
 2934 parseSafety :: String -> PD Safety
 2935 parseSafety "safe"   = return PlaySafe
 2936 parseSafety "unsafe" = return PlayRisky
 2937 parseSafety "interruptible" = return PlayInterruptible
 2938 parseSafety str      = failMsgPD $ \span -> mkPlainErrorMsgEnvelope span $
 2939                                               PsErrCmmParser (CmmUnrecognisedSafety str)
 2940 
 2941 parseCmmHint :: String -> PD ForeignHint
 2942 parseCmmHint "ptr"    = return AddrHint
 2943 parseCmmHint "signed" = return SignedHint
 2944 parseCmmHint str      = failMsgPD $ \span -> mkPlainErrorMsgEnvelope span $
 2945                                                PsErrCmmParser (CmmUnrecognisedHint str)
 2946 
 2947 -- labels are always pointers, so we might as well infer the hint
 2948 inferCmmHint :: CmmExpr -> ForeignHint
 2949 inferCmmHint (CmmLit (CmmLabel _)) = AddrHint
 2950 inferCmmHint (CmmReg (CmmGlobal g)) | isPtrGlobalReg g = AddrHint
 2951 inferCmmHint _ = NoHint
 2952 
 2953 isPtrGlobalReg Sp                    = True
 2954 isPtrGlobalReg SpLim                 = True
 2955 isPtrGlobalReg Hp                    = True
 2956 isPtrGlobalReg HpLim                 = True
 2957 isPtrGlobalReg CCCS                  = True
 2958 isPtrGlobalReg CurrentTSO            = True
 2959 isPtrGlobalReg CurrentNursery        = True
 2960 isPtrGlobalReg (VanillaReg _ VGcPtr) = True
 2961 isPtrGlobalReg _                     = False
 2962 
 2963 happyError :: PD a
 2964 happyError = PD $ \_ _ s -> unP srcParseFail s
 2965 
 2966 -- -----------------------------------------------------------------------------
 2967 -- Statement-level macros
 2968 
 2969 stmtMacro :: FastString -> [CmmParse CmmExpr] -> PD (CmmParse ())
 2970 stmtMacro fun args_code = do
 2971   case lookupUFM stmtMacros fun of
 2972     Nothing -> failMsgPD $ \span -> mkPlainErrorMsgEnvelope span $ PsErrCmmParser (CmmUnknownMacro fun)
 2973     Just fcode -> return $ do
 2974         args <- sequence args_code
 2975         code (fcode args)
 2976 
 2977 stmtMacros :: UniqFM FastString ([CmmExpr] -> FCode ())
 2978 stmtMacros = listToUFM [
 2979   ( fsLit "CCS_ALLOC",             \[words,ccs]  -> profAlloc words ccs ),
 2980   ( fsLit "ENTER_CCS_THUNK",       \[e] -> enterCostCentreThunk e ),
 2981 
 2982   ( fsLit "CLOSE_NURSERY",         \[]  -> emitCloseNursery ),
 2983   ( fsLit "OPEN_NURSERY",          \[]  -> emitOpenNursery ),
 2984 
 2985   -- completely generic heap and stack checks, for use in high-level cmm.
 2986   ( fsLit "HP_CHK_GEN",            \[bytes] ->
 2987                                       heapStackCheckGen Nothing (Just bytes) ),
 2988   ( fsLit "STK_CHK_GEN",           \[] ->
 2989                                       heapStackCheckGen (Just (CmmLit CmmHighStackMark)) Nothing ),
 2990 
 2991   -- A stack check for a fixed amount of stack.  Sounds a bit strange, but
 2992   -- we use the stack for a bit of temporary storage in a couple of primops
 2993   ( fsLit "STK_CHK_GEN_N",         \[bytes] ->
 2994                                       heapStackCheckGen (Just bytes) Nothing ),
 2995 
 2996   -- A stack check on entry to a thunk, where the argument is the thunk pointer.
 2997   ( fsLit "STK_CHK_NP"   ,         \[node] -> entryHeapCheck' False node 0 [] (return ())),
 2998 
 2999   ( fsLit "LOAD_THREAD_STATE",     \[] -> emitLoadThreadState ),
 3000   ( fsLit "SAVE_THREAD_STATE",     \[] -> emitSaveThreadState ),
 3001 
 3002   ( fsLit "SAVE_REGS",             \[] -> emitSaveRegs ),
 3003   ( fsLit "RESTORE_REGS",          \[] -> emitRestoreRegs ),
 3004 
 3005   ( fsLit "PUSH_TUPLE_REGS",      \[live_regs] -> emitPushTupleRegs live_regs ),
 3006   ( fsLit "POP_TUPLE_REGS",       \[live_regs] -> emitPopTupleRegs live_regs ),
 3007 
 3008   ( fsLit "LDV_ENTER",             \[e] -> ldvEnter e ),
 3009   ( fsLit "LDV_RECORD_CREATE",     \[e] -> ldvRecordCreate e ),
 3010 
 3011   ( fsLit "PUSH_UPD_FRAME",        \[sp,e] -> emitPushUpdateFrame sp e ),
 3012   ( fsLit "SET_HDR",               \[ptr,info,ccs] ->
 3013                                         emitSetDynHdr ptr info ccs ),
 3014   ( fsLit "TICK_ALLOC_PRIM",       \[hdr,goods,slop] ->
 3015                                         tickyAllocPrim hdr goods slop ),
 3016   ( fsLit "TICK_ALLOC_PAP",        \[goods,slop] ->
 3017                                         tickyAllocPAP goods slop ),
 3018   ( fsLit "TICK_ALLOC_UP_THK",     \[goods,slop] ->
 3019                                         tickyAllocThunk goods slop ),
 3020   ( fsLit "UPD_BH_UPDATABLE",      \[reg] -> emitBlackHoleCode reg )
 3021  ]
 3022 
 3023 emitPushUpdateFrame :: CmmExpr -> CmmExpr -> FCode ()
 3024 emitPushUpdateFrame sp e = do
 3025   emitUpdateFrame sp mkUpdInfoLabel e
 3026 
 3027 pushStackFrame :: [CmmParse CmmExpr] -> CmmParse () -> CmmParse ()
 3028 pushStackFrame fields body = do
 3029   profile <- getProfile
 3030   exprs <- sequence fields
 3031   updfr_off <- getUpdFrameOff
 3032   let (new_updfr_off, _, g) = copyOutOflow profile NativeReturn Ret Old
 3033                                            [] updfr_off exprs
 3034   emit g
 3035   withUpdFrameOff new_updfr_off body
 3036 
 3037 reserveStackFrame
 3038   :: CmmParse CmmExpr
 3039   -> CmmParse CmmReg
 3040   -> CmmParse ()
 3041   -> CmmParse ()
 3042 reserveStackFrame psize preg body = do
 3043   platform <- getPlatform
 3044   old_updfr_off <- getUpdFrameOff
 3045   reg <- preg
 3046   esize <- psize
 3047   let size = case constantFoldExpr platform esize of
 3048                CmmLit (CmmInt n _) -> n
 3049                _other -> pprPanic "CmmParse: not a compile-time integer: "
 3050                             (pdoc platform esize)
 3051   let frame = old_updfr_off + platformWordSizeInBytes platform * fromIntegral size
 3052   emitAssign reg (CmmStackSlot Old frame)
 3053   withUpdFrameOff frame body
 3054 
 3055 profilingInfo profile desc_str ty_str
 3056   = if not (profileIsProfiling profile)
 3057     then NoProfilingInfo
 3058     else ProfilingInfo (BS8.pack desc_str) (BS8.pack ty_str)
 3059 
 3060 staticClosure :: UnitId -> FastString -> FastString -> [CmmLit] -> CmmParse ()
 3061 staticClosure pkg cl_label info payload
 3062   = do profile <- getProfile
 3063        let lits = mkStaticClosure profile (mkCmmInfoLabel pkg info) dontCareCCS payload [] [] []
 3064        code $ emitDataLits (mkCmmDataLabel pkg (NeedExternDecl True) cl_label) lits
 3065 
 3066 foreignCall
 3067         :: String
 3068         -> [CmmParse (LocalReg, ForeignHint)]
 3069         -> CmmParse CmmExpr
 3070         -> [CmmParse (CmmExpr, ForeignHint)]
 3071         -> Safety
 3072         -> CmmReturnInfo
 3073         -> PD (CmmParse ())
 3074 foreignCall conv_string results_code expr_code args_code safety ret
 3075   = do  conv <- case conv_string of
 3076           "C"       -> return CCallConv
 3077           "stdcall" -> return StdCallConv
 3078           _         -> failMsgPD $ \span -> mkPlainErrorMsgEnvelope span $
 3079                                               PsErrCmmParser (CmmUnknownCConv conv_string)
 3080         return $ do
 3081           platform <- getPlatform
 3082           results <- sequence results_code
 3083           expr <- expr_code
 3084           args <- sequence args_code
 3085           let
 3086                   expr' = adjCallTarget platform conv expr args
 3087                   (arg_exprs, arg_hints) = unzip args
 3088                   (res_regs,  res_hints) = unzip results
 3089                   fc = ForeignConvention conv arg_hints res_hints ret
 3090                   target = ForeignTarget expr' fc
 3091           _ <- code $ emitForeignCall safety res_regs target arg_exprs
 3092           return ()
 3093 
 3094 
 3095 doReturn :: [CmmParse CmmExpr] -> CmmParse ()
 3096 doReturn exprs_code = do
 3097   profile <- getProfile
 3098   exprs <- sequence exprs_code
 3099   updfr_off <- getUpdFrameOff
 3100   emit (mkReturnSimple profile exprs updfr_off)
 3101 
 3102 mkReturnSimple  :: Profile -> [CmmActual] -> UpdFrameOffset -> CmmAGraph
 3103 mkReturnSimple profile actuals updfr_off =
 3104   mkReturn profile e actuals updfr_off
 3105   where e = entryCode platform (CmmLoad (CmmStackSlot Old updfr_off)
 3106                              (gcWord platform))
 3107         platform = profilePlatform profile
 3108 
 3109 doRawJump :: CmmParse CmmExpr -> [GlobalReg] -> CmmParse ()
 3110 doRawJump expr_code vols = do
 3111   profile <- getProfile
 3112   expr <- expr_code
 3113   updfr_off <- getUpdFrameOff
 3114   emit (mkRawJump profile expr updfr_off vols)
 3115 
 3116 doJumpWithStack :: CmmParse CmmExpr -> [CmmParse CmmExpr]
 3117                 -> [CmmParse CmmExpr] -> CmmParse ()
 3118 doJumpWithStack expr_code stk_code args_code = do
 3119   profile <- getProfile
 3120   expr <- expr_code
 3121   stk_args <- sequence stk_code
 3122   args <- sequence args_code
 3123   updfr_off <- getUpdFrameOff
 3124   emit (mkJumpExtra profile NativeNodeCall expr args updfr_off stk_args)
 3125 
 3126 doCall :: CmmParse CmmExpr -> [CmmParse LocalReg] -> [CmmParse CmmExpr]
 3127        -> CmmParse ()
 3128 doCall expr_code res_code args_code = do
 3129   expr <- expr_code
 3130   args <- sequence args_code
 3131   ress <- sequence res_code
 3132   updfr_off <- getUpdFrameOff
 3133   c <- code $ mkCall expr (NativeNodeCall,NativeReturn) ress args updfr_off []
 3134   emit c
 3135 
 3136 adjCallTarget :: Platform -> CCallConv -> CmmExpr -> [(CmmExpr, ForeignHint) ]
 3137               -> CmmExpr
 3138 -- On Windows, we have to add the '@N' suffix to the label when making
 3139 -- a call with the stdcall calling convention.
 3140 adjCallTarget platform StdCallConv (CmmLit (CmmLabel lbl)) args
 3141  | platformOS platform == OSMinGW32
 3142   = CmmLit (CmmLabel (addLabelSize lbl (sum (map size args))))
 3143   where size (e, _) = max (platformWordSizeInBytes platform) (widthInBytes (typeWidth (cmmExprType platform e)))
 3144                  -- c.f. CgForeignCall.emitForeignCall
 3145 adjCallTarget _ _ expr _
 3146   = expr
 3147 
 3148 primCall
 3149         :: [CmmParse (CmmFormal, ForeignHint)]
 3150         -> FastString
 3151         -> [CmmParse CmmExpr]
 3152         -> PD (CmmParse ())
 3153 primCall results_code name args_code
 3154   = do
 3155     platform <- PD.getPlatform
 3156     case lookupUFM (callishMachOps platform) name of
 3157         Nothing -> failMsgPD $ \span -> mkPlainErrorMsgEnvelope span $ PsErrCmmParser (CmmUnknownPrimitive name)
 3158         Just f  -> return $ do
 3159                 results <- sequence results_code
 3160                 args <- sequence args_code
 3161                 let (p, args') = f args
 3162                 code (emitPrimCall (map fst results) p args')
 3163 
 3164 doStore :: CmmType -> CmmParse CmmExpr  -> CmmParse CmmExpr -> CmmParse ()
 3165 doStore rep addr_code val_code
 3166   = do platform <- getPlatform
 3167        addr <- addr_code
 3168        val <- val_code
 3169         -- if the specified store type does not match the type of the expr
 3170         -- on the rhs, then we insert a coercion that will cause the type
 3171         -- mismatch to be flagged by cmm-lint.  If we don't do this, then
 3172         -- the store will happen at the wrong type, and the error will not
 3173         -- be noticed.
 3174        let val_width = typeWidth (cmmExprType platform val)
 3175            rep_width = typeWidth rep
 3176        let coerce_val
 3177                 | val_width /= rep_width = CmmMachOp (MO_UU_Conv val_width rep_width) [val]
 3178                 | otherwise              = val
 3179        emitStore addr coerce_val
 3180 
 3181 -- -----------------------------------------------------------------------------
 3182 -- If-then-else and boolean expressions
 3183 
 3184 data BoolExpr
 3185   = BoolExpr `BoolAnd` BoolExpr
 3186   | BoolExpr `BoolOr`  BoolExpr
 3187   | BoolNot BoolExpr
 3188   | BoolTest CmmExpr
 3189 
 3190 -- ToDo: smart constructors which simplify the boolean expression.
 3191 
 3192 cmmIfThenElse cond then_part else_part likely = do
 3193      then_id <- newBlockId
 3194      join_id <- newBlockId
 3195      c <- cond
 3196      emitCond c then_id likely
 3197      else_part
 3198      emit (mkBranch join_id)
 3199      emitLabel then_id
 3200      then_part
 3201      -- fall through to join
 3202      emitLabel join_id
 3203 
 3204 cmmRawIf cond then_id likely = do
 3205     c <- cond
 3206     emitCond c then_id likely
 3207 
 3208 -- 'emitCond cond true_id'  emits code to test whether the cond is true,
 3209 -- branching to true_id if so, and falling through otherwise.
 3210 emitCond (BoolTest e) then_id likely = do
 3211   else_id <- newBlockId
 3212   emit (mkCbranch e then_id else_id likely)
 3213   emitLabel else_id
 3214 emitCond (BoolNot (BoolTest (CmmMachOp op args))) then_id likely
 3215   | Just op' <- maybeInvertComparison op
 3216   = emitCond (BoolTest (CmmMachOp op' args)) then_id (not <$> likely)
 3217 emitCond (BoolNot e) then_id likely = do
 3218   else_id <- newBlockId
 3219   emitCond e else_id likely
 3220   emit (mkBranch then_id)
 3221   emitLabel else_id
 3222 emitCond (e1 `BoolOr` e2) then_id likely = do
 3223   emitCond e1 then_id likely
 3224   emitCond e2 then_id likely
 3225 emitCond (e1 `BoolAnd` e2) then_id likely = do
 3226         -- we'd like to invert one of the conditionals here to avoid an
 3227         -- extra branch instruction, but we can't use maybeInvertComparison
 3228         -- here because we can't look too closely at the expression since
 3229         -- we're in a loop.
 3230   and_id <- newBlockId
 3231   else_id <- newBlockId
 3232   emitCond e1 and_id likely
 3233   emit (mkBranch else_id)
 3234   emitLabel and_id
 3235   emitCond e2 then_id likely
 3236   emitLabel else_id
 3237 
 3238 -- -----------------------------------------------------------------------------
 3239 -- Source code notes
 3240 
 3241 -- | Generate a source note spanning from "a" to "b" (inclusive), then
 3242 -- proceed with parsing. This allows debugging tools to reason about
 3243 -- locations in Cmm code.
 3244 withSourceNote :: Located a -> Located b -> CmmParse c -> CmmParse c
 3245 withSourceNote a b parse = do
 3246   name <- getName
 3247   case combineSrcSpans (getLoc a) (getLoc b) of
 3248     RealSrcSpan span _ -> code (emitTick (SourceNote span name)) >> parse
 3249     _other           -> parse
 3250 
 3251 -- -----------------------------------------------------------------------------
 3252 -- Table jumps
 3253 
 3254 -- We use a simplified form of C-- switch statements for now.  A
 3255 -- switch statement always compiles to a table jump.  Each arm can
 3256 -- specify a list of values (not ranges), and there can be a single
 3257 -- default branch.  The range of the table is given either by the
 3258 -- optional range on the switch (eg. switch [0..7] {...}), or by
 3259 -- the minimum/maximum values from the branches.
 3260 
 3261 doSwitch :: Maybe (Integer,Integer)
 3262          -> CmmParse CmmExpr
 3263          -> [([Integer],Either BlockId (CmmParse ()))]
 3264          -> Maybe (CmmParse ()) -> CmmParse ()
 3265 doSwitch mb_range scrut arms deflt
 3266    = do
 3267         -- Compile code for the default branch
 3268         dflt_entry <-
 3269                 case deflt of
 3270                   Nothing -> return Nothing
 3271                   Just e  -> do b <- forkLabelledCode e; return (Just b)
 3272 
 3273         -- Compile each case branch
 3274         table_entries <- mapM emitArm arms
 3275         let table = M.fromList (concat table_entries)
 3276 
 3277         platform <- getPlatform
 3278         let range = fromMaybe (0, platformMaxWord platform) mb_range
 3279 
 3280         expr <- scrut
 3281         -- ToDo: check for out of range and jump to default if necessary
 3282         emit $ mkSwitch expr (mkSwitchTargets False range dflt_entry table)
 3283    where
 3284         emitArm :: ([Integer],Either BlockId (CmmParse ())) -> CmmParse [(Integer,BlockId)]
 3285         emitArm (ints,Left blockid) = return [ (i,blockid) | i <- ints ]
 3286         emitArm (ints,Right code) = do
 3287            blockid <- forkLabelledCode code
 3288            return [ (i,blockid) | i <- ints ]
 3289 
 3290 forkLabelledCode :: CmmParse () -> CmmParse BlockId
 3291 forkLabelledCode p = do
 3292   (_,ag) <- getCodeScoped p
 3293   l <- newBlockId
 3294   emitOutOfLine l ag
 3295   return l
 3296 
 3297 -- -----------------------------------------------------------------------------
 3298 -- Putting it all together
 3299 
 3300 -- The initial environment: we define some constants that the compiler
 3301 -- knows about here.
 3302 initEnv :: Profile -> Env
 3303 initEnv profile = listToUFM [
 3304   ( fsLit "SIZEOF_StgHeader",
 3305     VarN (CmmLit (CmmInt (fromIntegral (fixedHdrSize profile)) (wordWidth platform)) )),
 3306   ( fsLit "SIZEOF_StgInfoTable",
 3307     VarN (CmmLit (CmmInt (fromIntegral (stdInfoTableSizeB profile)) (wordWidth platform)) ))
 3308   ]
 3309   where platform = profilePlatform profile
 3310 
 3311 
 3312 parseCmmFile :: DynFlags
 3313              -> Module
 3314              -> HomeUnit
 3315              -> FilePath
 3316              -> IO (Messages PsMessage, Messages PsMessage, Maybe (CmmGroup, [InfoProvEnt]))
 3317 parseCmmFile dflags this_mod home_unit filename = do
 3318   buf <- hGetStringBuffer filename
 3319   let
 3320         init_loc = mkRealSrcLoc (mkFastString filename) 1 1
 3321         opts       = initParserOpts dflags
 3322         init_state = (initParserState opts buf init_loc) { lex_state = [0] }
 3323                 -- reset the lex_state: the Lexer monad leaves some stuff
 3324                 -- in there we don't want.
 3325   case unPD cmmParse dflags home_unit init_state of
 3326     PFailed pst -> do
 3327         let (warnings,errors) = getPsMessages pst
 3328         return (warnings, errors, Nothing)
 3329     POk pst code -> do
 3330         st <- initC
 3331         let fcode = do
 3332               ((), cmm) <- getCmm $ unEC code "global" (initEnv (targetProfile dflags)) [] >> return ()
 3333               let used_info = map (cmmInfoTableToInfoProvEnt this_mod)
 3334                                               (mapMaybe topInfoTable cmm)
 3335               ((), cmm2) <- getCmm $ mapM_ emitInfoTableProv used_info
 3336               return (cmm ++ cmm2, used_info)
 3337             (cmm, _) = runC dflags no_module st fcode
 3338             (warnings,errors) = getPsMessages pst
 3339         if not (isEmptyMessages errors)
 3340          then return (warnings, errors, Nothing)
 3341          else return (warnings, errors, Just cmm)
 3342   where
 3343         no_module = panic "parseCmmFile: no module"
 3344 {-# LINE 1 "templates/GenericTemplate.hs" #-}
 3345 -- $Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp $
 3346 
 3347 
 3348 
 3349 
 3350 
 3351 
 3352 
 3353 
 3354 
 3355 
 3356 
 3357 
 3358 
 3359 -- Do not remove this comment. Required to fix CPP parsing when using GCC and a clang-compiled alex.
 3360 #if __GLASGOW_HASKELL__ > 706
 3361 #define LT(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.<# m)) :: Prelude.Bool)
 3362 #define GTE(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.>=# m)) :: Prelude.Bool)
 3363 #define EQ(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.==# m)) :: Prelude.Bool)
 3364 #else
 3365 #define LT(n,m) (n Happy_GHC_Exts.<# m)
 3366 #define GTE(n,m) (n Happy_GHC_Exts.>=# m)
 3367 #define EQ(n,m) (n Happy_GHC_Exts.==# m)
 3368 #endif
 3369 
 3370 
 3371 
 3372 
 3373 
 3374 
 3375 
 3376 
 3377 
 3378 
 3379 
 3380 
 3381 
 3382 
 3383 
 3384 
 3385 
 3386 
 3387 
 3388 data Happy_IntList = HappyCons Happy_GHC_Exts.Int# Happy_IntList
 3389 
 3390 
 3391 
 3392 
 3393 
 3394 
 3395 
 3396 
 3397 
 3398 
 3399 
 3400 
 3401 
 3402 
 3403 
 3404 
 3405 
 3406 
 3407 
 3408 
 3409 
 3410 
 3411 
 3412 
 3413 
 3414 
 3415 
 3416 
 3417 
 3418 
 3419 
 3420 
 3421 
 3422 
 3423 
 3424 
 3425 
 3426 
 3427 
 3428 
 3429 infixr 9 `HappyStk`
 3430 data HappyStk a = HappyStk a (HappyStk a)
 3431 
 3432 -----------------------------------------------------------------------------
 3433 -- starting the parse
 3434 
 3435 happyParse start_state = happyNewToken start_state notHappyAtAll notHappyAtAll
 3436 
 3437 -----------------------------------------------------------------------------
 3438 -- Accepting the parse
 3439 
 3440 -- If the current token is ERROR_TOK, it means we've just accepted a partial
 3441 -- parse (a %partial parser).  We must ignore the saved token on the top of
 3442 -- the stack in this case.
 3443 happyAccept 0# tk st sts (_ `HappyStk` ans `HappyStk` _) =
 3444         happyReturn1 ans
 3445 happyAccept j tk st sts (HappyStk ans _) = 
 3446         (happyTcHack j (happyTcHack st)) (happyReturn1 ans)
 3447 
 3448 -----------------------------------------------------------------------------
 3449 -- Arrays only: do the next action
 3450 
 3451 
 3452 
 3453 happyDoAction i tk st
 3454         = {- nothing -}
 3455           case action of
 3456                 0#           -> {- nothing -}
 3457                                      happyFail (happyExpListPerState ((Happy_GHC_Exts.I# (st)) :: Prelude.Int)) i tk st
 3458                 -1#          -> {- nothing -}
 3459                                      happyAccept i tk st
 3460                 n | LT(n,(0# :: Happy_GHC_Exts.Int#)) -> {- nothing -}
 3461                                                    (happyReduceArr Happy_Data_Array.! rule) i tk st
 3462                                                    where rule = (Happy_GHC_Exts.I# ((Happy_GHC_Exts.negateInt# ((n Happy_GHC_Exts.+# (1# :: Happy_GHC_Exts.Int#))))))
 3463                 n                 -> {- nothing -}
 3464                                      happyShift new_state i tk st
 3465                                      where new_state = (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#))
 3466    where off    = happyAdjustOffset (indexShortOffAddr happyActOffsets st)
 3467          off_i  = (off Happy_GHC_Exts.+# i)
 3468          check  = if GTE(off_i,(0# :: Happy_GHC_Exts.Int#))
 3469                   then EQ(indexShortOffAddr happyCheck off_i, i)
 3470                   else Prelude.False
 3471          action
 3472           | check     = indexShortOffAddr happyTable off_i
 3473           | Prelude.otherwise = indexShortOffAddr happyDefActions st
 3474 
 3475 
 3476 
 3477 
 3478 indexShortOffAddr (HappyA# arr) off =
 3479         Happy_GHC_Exts.narrow16Int# i
 3480   where
 3481         i = Happy_GHC_Exts.word2Int# (Happy_GHC_Exts.or# (Happy_GHC_Exts.uncheckedShiftL# high 8#) low)
 3482         high = Happy_GHC_Exts.int2Word# (Happy_GHC_Exts.ord# (Happy_GHC_Exts.indexCharOffAddr# arr (off' Happy_GHC_Exts.+# 1#)))
 3483         low  = Happy_GHC_Exts.int2Word# (Happy_GHC_Exts.ord# (Happy_GHC_Exts.indexCharOffAddr# arr off'))
 3484         off' = off Happy_GHC_Exts.*# 2#
 3485 
 3486 
 3487 
 3488 
 3489 {-# INLINE happyLt #-}
 3490 happyLt x y = LT(x,y)                                                             
 3491 
 3492 
 3493 readArrayBit arr bit =
 3494     Bits.testBit (Happy_GHC_Exts.I# (indexShortOffAddr arr ((unbox_int bit) `Happy_GHC_Exts.iShiftRA#` 4#))) (bit `Prelude.mod` 16)
 3495   where unbox_int (Happy_GHC_Exts.I# x) = x
 3496 
 3497 
 3498 
 3499 
 3500 
 3501 
 3502 data HappyAddr = HappyA# Happy_GHC_Exts.Addr#
 3503 
 3504 
 3505 -----------------------------------------------------------------------------
 3506 -- HappyState data type (not arrays)
 3507 
 3508 
 3509 
 3510 
 3511 
 3512 
 3513 
 3514 
 3515 
 3516 
 3517 
 3518 
 3519 
 3520 -----------------------------------------------------------------------------
 3521 -- Shifting a token
 3522 
 3523 happyShift new_state 0# tk st sts stk@(x `HappyStk` _) =
 3524      let i = (case Happy_GHC_Exts.unsafeCoerce# x of { (Happy_GHC_Exts.I# (i)) -> i }) in
 3525 --     trace "shifting the error token" $
 3526      happyDoAction i tk new_state (HappyCons (st) (sts)) (stk)
 3527 
 3528 happyShift new_state i tk st sts stk =
 3529      happyNewToken new_state (HappyCons (st) (sts)) ((happyInTok (tk))`HappyStk`stk)
 3530 
 3531 -- happyReduce is specialised for the common cases.
 3532 
 3533 happySpecReduce_0 i fn 0# tk st sts stk
 3534      = happyFail [] 0# tk st sts stk
 3535 happySpecReduce_0 nt fn j tk st@((action)) sts stk
 3536      = happyGoto nt j tk st (HappyCons (st) (sts)) (fn `HappyStk` stk)
 3537 
 3538 happySpecReduce_1 i fn 0# tk st sts stk
 3539      = happyFail [] 0# tk st sts stk
 3540 happySpecReduce_1 nt fn j tk _ sts@((HappyCons (st@(action)) (_))) (v1`HappyStk`stk')
 3541      = let r = fn v1 in
 3542        happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))
 3543 
 3544 happySpecReduce_2 i fn 0# tk st sts stk
 3545      = happyFail [] 0# tk st sts stk
 3546 happySpecReduce_2 nt fn j tk _ (HappyCons (_) (sts@((HappyCons (st@(action)) (_))))) (v1`HappyStk`v2`HappyStk`stk')
 3547      = let r = fn v1 v2 in
 3548        happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))
 3549 
 3550 happySpecReduce_3 i fn 0# tk st sts stk
 3551      = happyFail [] 0# tk st sts stk
 3552 happySpecReduce_3 nt fn j tk _ (HappyCons (_) ((HappyCons (_) (sts@((HappyCons (st@(action)) (_))))))) (v1`HappyStk`v2`HappyStk`v3`HappyStk`stk')
 3553      = let r = fn v1 v2 v3 in
 3554        happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))
 3555 
 3556 happyReduce k i fn 0# tk st sts stk
 3557      = happyFail [] 0# tk st sts stk
 3558 happyReduce k nt fn j tk st sts stk
 3559      = case happyDrop (k Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) sts of
 3560          sts1@((HappyCons (st1@(action)) (_))) ->
 3561                 let r = fn stk in  -- it doesn't hurt to always seq here...
 3562                 happyDoSeq r (happyGoto nt j tk st1 sts1 r)
 3563 
 3564 happyMonadReduce k nt fn 0# tk st sts stk
 3565      = happyFail [] 0# tk st sts stk
 3566 happyMonadReduce k nt fn j tk st sts stk =
 3567       case happyDrop k (HappyCons (st) (sts)) of
 3568         sts1@((HappyCons (st1@(action)) (_))) ->
 3569           let drop_stk = happyDropStk k stk in
 3570           happyThen1 (fn stk tk) (\r -> happyGoto nt j tk st1 sts1 (r `HappyStk` drop_stk))
 3571 
 3572 happyMonad2Reduce k nt fn 0# tk st sts stk
 3573      = happyFail [] 0# tk st sts stk
 3574 happyMonad2Reduce k nt fn j tk st sts stk =
 3575       case happyDrop k (HappyCons (st) (sts)) of
 3576         sts1@((HappyCons (st1@(action)) (_))) ->
 3577          let drop_stk = happyDropStk k stk
 3578 
 3579              off = happyAdjustOffset (indexShortOffAddr happyGotoOffsets st1)
 3580              off_i = (off Happy_GHC_Exts.+# nt)
 3581              new_state = indexShortOffAddr happyTable off_i
 3582 
 3583 
 3584 
 3585 
 3586           in
 3587           happyThen1 (fn stk tk) (\r -> happyNewToken new_state sts1 (r `HappyStk` drop_stk))
 3588 
 3589 happyDrop 0# l = l
 3590 happyDrop n (HappyCons (_) (t)) = happyDrop (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) t
 3591 
 3592 happyDropStk 0# l = l
 3593 happyDropStk n (x `HappyStk` xs) = happyDropStk (n Happy_GHC_Exts.-# (1#::Happy_GHC_Exts.Int#)) xs
 3594 
 3595 -----------------------------------------------------------------------------
 3596 -- Moving to a new state after a reduction
 3597 
 3598 
 3599 happyGoto nt j tk st = 
 3600    {- nothing -}
 3601    happyDoAction j tk new_state
 3602    where off = happyAdjustOffset (indexShortOffAddr happyGotoOffsets st)
 3603          off_i = (off Happy_GHC_Exts.+# nt)
 3604          new_state = indexShortOffAddr happyTable off_i
 3605 
 3606 
 3607 
 3608 
 3609 -----------------------------------------------------------------------------
 3610 -- Error recovery (ERROR_TOK is the error token)
 3611 
 3612 -- parse error if we are in recovery and we fail again
 3613 happyFail explist 0# tk old_st _ stk@(x `HappyStk` _) =
 3614      let i = (case Happy_GHC_Exts.unsafeCoerce# x of { (Happy_GHC_Exts.I# (i)) -> i }) in
 3615 --      trace "failing" $ 
 3616         happyError_ explist i tk
 3617 
 3618 {-  We don't need state discarding for our restricted implementation of
 3619     "error".  In fact, it can cause some bogus parses, so I've disabled it
 3620     for now --SDM
 3621 
 3622 -- discard a state
 3623 happyFail  ERROR_TOK tk old_st CONS(HAPPYSTATE(action),sts) 
 3624                                                 (saved_tok `HappyStk` _ `HappyStk` stk) =
 3625 --      trace ("discarding state, depth " ++ show (length stk))  $
 3626         DO_ACTION(action,ERROR_TOK,tk,sts,(saved_tok`HappyStk`stk))
 3627 -}
 3628 
 3629 -- Enter error recovery: generate an error token,
 3630 --                       save the old token and carry on.
 3631 happyFail explist i tk (action) sts stk =
 3632 --      trace "entering error recovery" $
 3633         happyDoAction 0# tk action sts ((Happy_GHC_Exts.unsafeCoerce# (Happy_GHC_Exts.I# (i))) `HappyStk` stk)
 3634 
 3635 -- Internal happy errors:
 3636 
 3637 notHappyAtAll :: a
 3638 notHappyAtAll = Prelude.error "Internal Happy error\n"
 3639 
 3640 -----------------------------------------------------------------------------
 3641 -- Hack to get the typechecker to accept our action functions
 3642 
 3643 
 3644 happyTcHack :: Happy_GHC_Exts.Int# -> a -> a
 3645 happyTcHack x y = y
 3646 {-# INLINE happyTcHack #-}
 3647 
 3648 
 3649 -----------------------------------------------------------------------------
 3650 -- Seq-ing.  If the --strict flag is given, then Happy emits 
 3651 --      happySeq = happyDoSeq
 3652 -- otherwise it emits
 3653 --      happySeq = happyDontSeq
 3654 
 3655 happyDoSeq, happyDontSeq :: a -> b -> b
 3656 happyDoSeq   a b = a `Prelude.seq` b
 3657 happyDontSeq a b = b
 3658 
 3659 -----------------------------------------------------------------------------
 3660 -- Don't inline any functions from the template.  GHC has a nasty habit
 3661 -- of deciding to inline happyGoto everywhere, which increases the size of
 3662 -- the generated parser quite a bit.
 3663 
 3664 
 3665 {-# NOINLINE happyDoAction #-}
 3666 {-# NOINLINE happyTable #-}
 3667 {-# NOINLINE happyCheck #-}
 3668 {-# NOINLINE happyActOffsets #-}
 3669 {-# NOINLINE happyGotoOffsets #-}
 3670 {-# NOINLINE happyDefActions #-}
 3671 
 3672 {-# NOINLINE happyShift #-}
 3673 {-# NOINLINE happySpecReduce_0 #-}
 3674 {-# NOINLINE happySpecReduce_1 #-}
 3675 {-# NOINLINE happySpecReduce_2 #-}
 3676 {-# NOINLINE happySpecReduce_3 #-}
 3677 {-# NOINLINE happyReduce #-}
 3678 {-# NOINLINE happyMonadReduce #-}
 3679 {-# NOINLINE happyGoto #-}
 3680 {-# NOINLINE happyFail #-}
 3681 
 3682 -- end of Happy Template.