bcc ((FOREIGNCALL l rty (FStr fn) (x:xs)):zs) | fn == "%dynamic"
      = do
          i <- get
          tell $ indent (level i) ++ c_irts (toFType rty) (creg l ++ " = ")
            ("(*(" ++ cFnSig "" rty xs ++ ") GETPTR(" ++ creg (snd x) ++ "))" ++
             "(" ++ showSep "," (map fcall xs) ++ ")") ++ ";\n"
          bcc zs
bcc ((FOREIGNCALL l rty (FStr fn) (x:xs)):zs) | fn == "%dynamic"
      = do
          i <- get
          tell $ indent (level i) ++ c_irts (toFType rty) (creg l ++ " = ")
            ("(*(" ++ cFnSig "" rty xs ++ ") GETPTR(" ++ creg (snd x) ++ "))" ++
             "(" ++ showSep "," (map fcall xs) ++ ")") ++ ";\n"
          bcc zs
bcc ((FOREIGNCALL l rty (FStr fn) (x:xs)):zs) | fn == "%dynamic"
      = do
          i <- get
          tell $ indent (level i) ++ c_irts (toFType rty) (creg l ++ " = ")
            ("(*(" ++ cFnSig "" rty xs ++ ") GETPTR(" ++ creg (snd x) ++ "))" ++
             "(" ++ showSep "," (map fcall xs) ++ ")") ++ ";\n"
          bcc zs