Merge mozilla-central and inbound
authorEd Morley <emorley@mozilla.com>
Tue, 10 Sep 2013 15:23:21 +0100
changeset 146415 9aa9c1113d5e671c44db5675d33d6ac1b7b84566
parent 146349 225eb3f0434917485a84874148a5a2cb9063fc95 (current diff)
parent 146414 e112a8245e294e13071e95d8fd06e29620f49c52 (diff)
child 146416 074ec56640f6e1c213ce432831fd56fe1ef29b1c
push id25260
push userryanvm@gmail.com
push dateWed, 11 Sep 2013 00:29:30 +0000
treeherdermozilla-central@f73bed2856a8 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
milestone26.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Merge mozilla-central and inbound
--- a/content/base/src/Element.cpp
+++ b/content/base/src/Element.cpp
@@ -2446,16 +2446,21 @@ Element::MozRequestFullScreen()
   OwnerDoc()->AsyncRequestFullScreen(this);
 
   return;
 }
 
 // Try to keep the size of StringBuilder close to a jemalloc bucket size.
 #define STRING_BUFFER_UNITS 1020
 
+namespace {
+
+// We put StringBuilder in the anonymous namespace to prevent anything outside
+// this file from accidentally being linked against it.
+
 class StringBuilder
 {
 private:
   class Unit
   {
   public:
     Unit() : mAtom(nullptr), mType(eUnknown), mLength(0)
     {
@@ -2709,16 +2714,18 @@ private:
 
   nsAutoTArray<Unit, STRING_BUFFER_UNITS> mUnits;
   nsAutoPtr<StringBuilder>                mNext;
   StringBuilder*                          mLast;
   // mLength is used only in the first StringBuilder object in the linked list.
   uint32_t                                mLength;
 };
 
+} // anonymous namespace
+
 static void
 AppendEncodedCharacters(const nsTextFragment* aText, StringBuilder& aBuilder)
 {
   uint32_t extraSpaceNeeded = 0;
   uint32_t len = aText->GetLength();
   if (aText->Is2b()) {
     const PRUnichar* data = aText->Get2b();
     for (uint32_t i = 0; i < len; ++i) {
--- a/content/html/content/src/HTMLInputElement.cpp
+++ b/content/html/content/src/HTMLInputElement.cpp
@@ -19,16 +19,17 @@
 
 #include "nsIControllers.h"
 #include "nsIStringBundle.h"
 #include "nsFocusManager.h"
 #include "nsPIDOMWindow.h"
 #include "nsContentCID.h"
 #include "nsIComponentManager.h"
 #include "nsIDOMHTMLFormElement.h"
+#include "nsIDOMProgressEvent.h"
 #include "nsGkAtoms.h"
 #include "nsStyleConsts.h"
 #include "nsPresContext.h"
 #include "nsMappedAttributes.h"
 #include "nsIFormControl.h"
 #include "nsIForm.h"
 #include "nsFormSubmission.h"
 #include "nsFormSubmissionConstants.h"
@@ -209,16 +210,19 @@ const Decimal HTMLInputElement::kStepAny
 #define NS_INPUT_ELEMENT_STATE_IID                 \
 { /* dc3b3d14-23e2-4479-b513-7b369343e3a0 */       \
   0xdc3b3d14,                                      \
   0x23e2,                                          \
   0x4479,                                          \
   {0xb5, 0x13, 0x7b, 0x36, 0x93, 0x43, 0xe3, 0xa0} \
 }
 
+#define PROGRESS_STR "progress"
+static const uint32_t kProgressEventInterval = 50; // ms
+
 class HTMLInputElementState MOZ_FINAL : public nsISupports
 {
   public:
     NS_DECLARE_STATIC_IID_ACCESSOR(NS_INPUT_ELEMENT_STATE_IID)
     NS_DECL_ISUPPORTS
 
     bool IsCheckedSet() {
       return mCheckedSet;
@@ -478,28 +482,30 @@ public:
         new DirPickerRecursiveFileEnumerator(mTopDir);
       bool hasMore = true;
       nsCOMPtr<nsISupports> tmp;
       while (NS_SUCCEEDED(iter->HasMoreElements(&hasMore)) && hasMore) {
         iter->GetNext(getter_AddRefs(tmp));
         nsCOMPtr<nsIDOMFile> domFile = do_QueryInterface(tmp);
         MOZ_ASSERT(domFile);
         mFileList.AppendElement(domFile);
+        mInput->SetFileListProgress(mFileList.Length());
       }
       return NS_DispatchToMainThread(this);
     }
 
     // Now back on the main thread, set the list on our HTMLInputElement:
     if (mFileList.IsEmpty()) {
       return NS_OK;
     }
     // The text control frame (if there is one) isn't going to send a change
     // event because it will think this is done by a script.
     // So, we can safely send one by ourself.
     mInput->SetFiles(mFileList, true);
+    mInput->MaybeDispatchProgressEvent(true); // last progress event
     nsresult rv =
       nsContentUtils::DispatchTrustedEvent(mInput->OwnerDoc(),
                                            static_cast<nsIDOMHTMLInputElement*>(mInput.get()),
                                            NS_LITERAL_STRING("change"), true,
                                            false);
     // Clear mInput to make sure that it can't lose its last strong ref off the
     // main thread (which may happen if our dtor runs off the main thread)!
     mInput = nullptr;
@@ -562,16 +568,19 @@ HTMLInputElement::nsFilePickerShownCallb
 
     HTMLInputElement::gUploadLastDir->StoreLastUsedDirectory(
       mInput->OwnerDoc(), pickedDir);
 
     nsCOMPtr<nsIEventTarget> target
       = do_GetService(NS_STREAMTRANSPORTSERVICE_CONTRACTID);
     NS_ASSERTION(target, "Must have stream transport service");
 
+    mInput->ResetProgressCounters();
+    mInput->StartProgressEventTimer();
+
     // DirPickerBuildFileListTask takes care of calling SetFiles() and
     // dispatching the "change" event.
     nsRefPtr<DirPickerBuildFileListTask> event =
       new DirPickerBuildFileListTask(mInput.get(), pickedDir.get());
     return target->Dispatch(event, NS_DISPATCH_NORMAL);
   }
 
   // Collect new selected filenames
@@ -987,32 +996,35 @@ static nsresult FireEventForAccessibilit
 
 //
 // construction, destruction
 //
 
 HTMLInputElement::HTMLInputElement(already_AddRefed<nsINodeInfo> aNodeInfo,
                                    FromParser aFromParser)
   : nsGenericHTMLFormElementWithState(aNodeInfo)
+  , mFileListProgress(0)
+  , mLastFileListProgress(0)
   , mType(kInputDefaultType->value)
   , mDisabledChanged(false)
   , mValueChanged(false)
   , mCheckedChanged(false)
   , mChecked(false)
   , mHandlingSelectEvent(false)
   , mShouldInitChecked(false)
   , mParserCreating(aFromParser != NOT_FROM_PARSER)
   , mInInternalActivate(false)
   , mCheckedIsToggled(false)
   , mIndeterminate(false)
   , mInhibitRestoration(aFromParser & FROM_PARSER_FRAGMENT)
   , mCanShowValidUI(true)
   , mCanShowInvalidUI(true)
   , mHasRange(false)
   , mIsDraggingRange(false)
+  , mProgressTimerIsActive(false)
 {
   // We are in a type=text so we now we currenty need a nsTextEditorState.
   mInputData.mState = new nsTextEditorState(this);
 
   if (!gUploadLastDir)
     HTMLInputElement::InitUploadLastDir();
 
   // Set up our default state.  By default we're enabled (since we're
@@ -1091,24 +1103,25 @@ NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_IN
   //XXX should unlink more?
 NS_IMPL_CYCLE_COLLECTION_UNLINK_END
 
 NS_IMPL_ADDREF_INHERITED(HTMLInputElement, Element)
 NS_IMPL_RELEASE_INHERITED(HTMLInputElement, Element)
 
 // QueryInterface implementation for HTMLInputElement
 NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION_INHERITED(HTMLInputElement)
-  NS_INTERFACE_TABLE_INHERITED8(HTMLInputElement,
+  NS_INTERFACE_TABLE_INHERITED9(HTMLInputElement,
                                 nsIDOMHTMLInputElement,
                                 nsITextControlElement,
                                 nsIPhonetic,
                                 imgINotificationObserver,
                                 nsIImageLoadingContent,
                                 imgIOnloadBlocker,
                                 nsIDOMNSEditableElement,
+                                nsITimerCallback,
                                 nsIConstraintValidation)
 NS_INTERFACE_TABLE_TAIL_INHERITING(nsGenericHTMLFormElementWithState)
 
 // nsIConstraintValidation
 NS_IMPL_NSICONSTRAINTVALIDATION_EXCEPT_SETCUSTOMVALIDITY(HTMLInputElement)
 
 // nsIDOMNode
 
@@ -2426,16 +2439,103 @@ void
 HTMLInputElement::OpenDirectoryPicker(ErrorResult& aRv)
 {
   if (mType != NS_FORM_INPUT_FILE) {
     aRv.Throw(NS_ERROR_DOM_INVALID_STATE_ERR);
   }
   InitFilePicker(FILE_PICKER_DIRECTORY);
 }
 
+void
+HTMLInputElement::StartProgressEventTimer()
+{
+  if (!mProgressTimer) {
+    mProgressTimer = do_CreateInstance(NS_TIMER_CONTRACTID);
+  }
+  if (mProgressTimer) {
+    mProgressTimerIsActive = true;
+    mProgressTimer->Cancel();
+    mProgressTimer->InitWithCallback(this, kProgressEventInterval,
+                                           nsITimer::TYPE_ONE_SHOT);
+  }
+}
+
+// nsITimerCallback's only method
+NS_IMETHODIMP
+HTMLInputElement::Notify(nsITimer* aTimer)
+{
+  if (mProgressTimer == aTimer) {
+    mProgressTimerIsActive = false;
+    MaybeDispatchProgressEvent(false);
+    return NS_OK;
+  }
+
+  // Just in case some JS user wants to QI to nsITimerCallback and play with us...
+  NS_WARNING("Unexpected timer!");
+  return NS_ERROR_INVALID_POINTER;
+}
+
+void
+HTMLInputElement::MaybeDispatchProgressEvent(bool aFinalProgress)
+{
+  nsRefPtr<HTMLInputElement> kungFuDeathGrip;
+
+  if (aFinalProgress && mProgressTimerIsActive) {
+    // mProgressTimer may hold the last reference to us, so take another strong
+    // ref to make sure we don't die under Cancel() and leave this method
+    // running on deleted memory.
+    kungFuDeathGrip = this;
+
+    mProgressTimerIsActive = false;
+    mProgressTimer->Cancel();
+  }
+
+  if (mProgressTimerIsActive ||
+      mFileListProgress == mLastFileListProgress) {
+    return;
+  }
+
+  if (!aFinalProgress) {
+    StartProgressEventTimer();
+  }
+
+  mLastFileListProgress = mFileListProgress;
+
+  DispatchProgressEvent(NS_LITERAL_STRING(PROGRESS_STR),
+                        false, mLastFileListProgress,
+                        0);
+}
+
+void
+HTMLInputElement::DispatchProgressEvent(const nsAString& aType,
+                                        bool aLengthComputable,
+                                        uint64_t aLoaded, uint64_t aTotal)
+{
+  NS_ASSERTION(!aType.IsEmpty(), "missing event type");
+
+  nsCOMPtr<nsIDOMEvent> event;
+  nsresult rv = NS_NewDOMProgressEvent(getter_AddRefs(event), this,
+                                       nullptr, nullptr);
+  if (NS_FAILED(rv)) {
+    return;
+  }
+
+  nsCOMPtr<nsIDOMProgressEvent> progress = do_QueryInterface(event);
+  if (!progress) {
+    return;
+  }
+
+  progress->InitProgressEvent(aType, false, false, aLengthComputable,
+                              aLoaded, (aTotal == UINT64_MAX) ? 0 : aTotal);
+
+  event->SetTrusted(true);
+
+  DispatchDOMEvent(nullptr, event, nullptr, nullptr);
+}
+
 nsresult
 HTMLInputElement::UpdateFileList()
 {
   if (mFileList) {
     mFileList->Clear();
 
     const nsTArray<nsCOMPtr<nsIDOMFile> >& files = GetFilesInternal();
     for (uint32_t i = 0; i < files.Length(); ++i) {
--- a/content/html/content/src/HTMLInputElement.h
+++ b/content/html/content/src/HTMLInputElement.h
@@ -6,16 +6,17 @@
 #ifndef mozilla_dom_HTMLInputElement_h
 #define mozilla_dom_HTMLInputElement_h
 
 #include "mozilla/Attributes.h"
 #include "nsGenericHTMLElement.h"
 #include "nsImageLoadingContent.h"
 #include "nsIDOMHTMLInputElement.h"
 #include "nsITextControlElement.h"
+#include "nsITimer.h"
 #include "nsIPhonetic.h"
 #include "nsIDOMNSEditableElement.h"
 #include "nsCOMPtr.h"
 #include "nsIConstraintValidation.h"
 #include "mozilla/dom/HTMLFormElement.h" // for HasEverTriedInvalidSubmit()
 #include "nsIFilePicker.h"
 #include "nsIContentPrefService2.h"
 #include "mozilla/Decimal.h"
@@ -77,16 +78,17 @@ public:
 };
 
 class HTMLInputElement MOZ_FINAL : public nsGenericHTMLFormElementWithState,
                                    public nsImageLoadingContent,
                                    public nsIDOMHTMLInputElement,
                                    public nsITextControlElement,
                                    public nsIPhonetic,
                                    public nsIDOMNSEditableElement,
+                                   public nsITimerCallback,
                                    public nsIConstraintValidation
 {
 public:
   using nsIConstraintValidation::GetValidationMessage;
   using nsIConstraintValidation::CheckValidity;
   using nsIConstraintValidation::WillValidate;
   using nsIConstraintValidation::Validity;
   using nsGenericHTMLFormElementWithState::GetForm;
@@ -220,16 +222,24 @@ public:
   static UploadLastDir* gUploadLastDir;
   // create and destroy the static UploadLastDir object for remembering
   // which directory was last used on a site-by-site basis
   static void InitUploadLastDir();
   static void DestroyUploadLastDir();
 
   void MaybeLoadImage();
 
+  // nsITimerCallback
+  NS_DECL_NSITIMERCALLBACK
+
+  // Avoid warning about the implementation of nsITimerCallback::Notify hiding
+  // our nsImageLoadingContent base class' implementation of
+  // imgINotificationObserver::Notify:
+  using nsImageLoadingContent::Notify;
+
   // nsIConstraintValidation
   bool     IsTooLong();
   bool     IsValueMissing() const;
   bool     HasTypeMismatch() const;
   bool     HasPatternMismatch() const;
   bool     IsRangeOverflow() const;
   bool     IsRangeUnderflow() const;
   bool     HasStepMismatch() const;
@@ -387,16 +397,27 @@ public:
   }
 
   // XPCOM GetForm() is OK
 
   nsDOMFileList* GetFiles();
 
   void OpenDirectoryPicker(ErrorResult& aRv);
 
+  void ResetProgressCounters()
+  {
+    mFileListProgress = 0;
+    mLastFileListProgress = 0;
+  }
+  void StartProgressEventTimer();
+  void MaybeDispatchProgressEvent(bool aFinalProgress);
+  void DispatchProgressEvent(const nsAString& aType,
+                             bool aLengthComputable,
+                             uint64_t aLoaded, uint64_t aTotal);
+
   // XPCOM GetFormAction() is OK
   void SetFormAction(const nsAString& aValue, ErrorResult& aRv)
   {
     SetHTMLAttr(nsGkAtoms::formaction, aValue, aRv);
   }
 
   // XPCOM GetFormEnctype() is OK
   void SetFormEnctype(const nsAString& aValue, ErrorResult& aRv)
@@ -643,16 +664,23 @@ public:
   bool MozIsTextField(bool aExcludePassword);
 
   nsIEditor* GetEditor();
 
   // XPCOM SetUserInput() is OK
 
   // XPCOM GetPhonetic() is OK
 
+  void SetFileListProgress(uint32_t mFileCount)
+  {
+    MOZ_ASSERT(!NS_IsMainThread(),
+               "Why are we calling this on the main thread?");
+    mFileListProgress = mFileCount;
+  }
+
 protected:
   virtual JSObject* WrapNode(JSContext* aCx,
                              JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
 
   // Pull IsSingleLineTextControl into our scope, otherwise it'd be hidden
   // by the nsITextControlElement version.
   using nsGenericHTMLFormElementWithState::IsSingleLineTextControl;
 
@@ -1139,32 +1167,52 @@ protected:
 
   /**
    * If mIsDraggingRange is true, this is the value that the input had before
    * the drag started. Used to reset the input to its old value if the drag is
    * canceled.
    */
   Decimal mRangeThumbDragStartValue;
 
+  /**
+   * Timer that is used when mType == NS_FORM_INPUT_FILE and the user selects a
+   * directory. It is used to fire progress events while the list of files
+   * under that directory tree is built.
+   */
+  nsCOMPtr<nsITimer> mProgressTimer;
+
   // Step scale factor values, for input types that have one.
   static const Decimal kStepScaleFactorDate;
   static const Decimal kStepScaleFactorNumberRange;
   static const Decimal kStepScaleFactorTime;
 
   // Default step base value when a type do not have specific one.
   static const Decimal kDefaultStepBase;
 
   // Default step used when there is no specified step.
   static const Decimal kDefaultStep;
   static const Decimal kDefaultStepTime;
 
   // Float value returned by GetStep() when the step attribute is set to 'any'.
   static const Decimal kStepAny;
 
   /**
+   * The number of files added to the FileList being built off-main-thread when
+   * mType == NS_FORM_INPUT_FILE and the user selects a directory. This is set
+   * off the main thread, read on main thread.
+   */
+  mozilla::Atomic<uint32_t> mFileListProgress;
+
+  /**
+   * The number of files added to the FileList at the time the last progress
+   * event was fired.
+   */
+  uint32_t mLastFileListProgress;
+
+  /**
    * The type of this input (<input type=...>) as an integer.
    * @see nsIFormControl.h (specifically NS_FORM_INPUT_*)
    */
   uint8_t                  mType;
   bool                     mDisabledChanged     : 1;
   bool                     mValueChanged        : 1;
   bool                     mCheckedChanged      : 1;
   bool                     mChecked             : 1;
@@ -1174,16 +1222,17 @@ protected:
   bool                     mInInternalActivate  : 1;
   bool                     mCheckedIsToggled    : 1;
   bool                     mIndeterminate       : 1;
   bool                     mInhibitRestoration  : 1;
   bool                     mCanShowValidUI      : 1;
   bool                     mCanShowInvalidUI    : 1;
   bool                     mHasRange            : 1;
   bool                     mIsDraggingRange     : 1;
+  bool                     mProgressTimerIsActive : 1;
 
 private:
 
   /**
    * Returns true if this input's type will fire a DOM "change" event when it
    * loses focus if its value has changed since it gained focus.
    */
   bool MayFireChangeOnBlur() const {
--- a/dom/browser-element/BrowserElementParent.cpp
+++ b/dom/browser-element/BrowserElementParent.cpp
@@ -22,16 +22,17 @@
 #include "nsCxPusher.h"
 #include "GeneratedEventClasses.h"
 
 using namespace mozilla;
 using namespace mozilla::dom;
 
 namespace {
 
+using mozilla::BrowserElementParent;
 /**
  * Create an <iframe mozbrowser> owned by the same document as
  * aOpenerFrameElement.
  */
 already_AddRefed<HTMLIFrameElement>
 CreateIframe(Element* aOpenerFrameElement, const nsAString& aName, bool aRemote)
 {
   nsNodeInfoManager *nodeInfoManager =
@@ -67,17 +68,18 @@ CreateIframe(Element* aOpenerFrameElemen
                                        NS_LITERAL_STRING("false"),
                              /* aNotify = */ false);
 
   return popupFrameElement.forget();
 }
 
 bool
 DispatchCustomDOMEvent(Element* aFrameElement, const nsAString& aEventName,
-                       JSContext* cx, JS::Handle<JS::Value> aDetailValue)
+                       JSContext* cx, JS::Handle<JS::Value> aDetailValue,
+                       nsEventStatus *aStatus)
 {
   NS_ENSURE_TRUE(aFrameElement, false);
   nsIPresShell *shell = aFrameElement->OwnerDoc()->GetShell();
   nsRefPtr<nsPresContext> presContext;
   if (shell) {
     presContext = shell->GetPresContext();
   }
 
@@ -89,39 +91,44 @@ DispatchCustomDOMEvent(Element* aFrameEl
 
   nsCOMPtr<nsIDOMCustomEvent> customEvent = do_QueryInterface(domEvent);
   NS_ENSURE_TRUE(customEvent, false);
   ErrorResult res;
   CustomEvent* event = static_cast<CustomEvent*>(customEvent.get());
   event->InitCustomEvent(cx,
                          aEventName,
                          /* bubbles = */ true,
-                         /* cancelable = */ false,
+                         /* cancelable = */ true,
                          aDetailValue,
                          res);
   if (res.Failed()) {
     return false;
   }
   customEvent->SetTrusted(true);
   // Dispatch the event.
-  nsEventStatus status = nsEventStatus_eIgnore;
+  *aStatus = nsEventStatus_eConsumeNoDefault;
   nsresult rv = nsEventDispatcher::DispatchDOMEvent(aFrameElement, nullptr,
-                                                    domEvent, presContext, &status);
+                                                    domEvent, presContext, aStatus);
   return NS_SUCCEEDED(rv);
 }
 
+} // anonymous namespace
+
+namespace mozilla {
+
 /**
  * Dispatch a mozbrowseropenwindow event to the given opener frame element.
  * The "popup iframe" (event.detail.frameElement) will be |aPopupFrameElement|.
  *
  * Returns true iff there were no unexpected failures and the window.open call
  * was accepted by the embedder.
  */
-bool
-DispatchOpenWindowEvent(Element* aOpenerFrameElement,
+/*static*/
+BrowserElementParent::OpenWindowResult
+BrowserElementParent::DispatchOpenWindowEvent(Element* aOpenerFrameElement,
                         Element* aPopupFrameElement,
                         const nsAString& aURL,
                         const nsAString& aName,
                         const nsAString& aFeatures)
 {
   // Dispatch a CustomEvent at aOpenerFrameElement with a detail object
   // (OpenWindowEventDetail) containing aPopupFrameElement, aURL, aName, and
   // aFeatures.
@@ -133,83 +140,91 @@ DispatchOpenWindowEvent(Element* aOpener
   detail.mFeatures = aFeatures;
   detail.mFrameElement = aPopupFrameElement;
 
   AutoJSContext cx;
   JS::Rooted<JS::Value> val(cx);
 
   nsIGlobalObject* sgo = aPopupFrameElement->OwnerDoc()->GetScopeObject();
   if (!sgo) {
-    return false;
+    return BrowserElementParent::OPEN_WINDOW_IGNORED;
   }
 
   JS::Rooted<JSObject*> global(cx, sgo->GetGlobalJSObject());
   JSAutoCompartment ac(cx, global);
   if (!detail.ToObject(cx, global, &val)) {
     MOZ_CRASH("Failed to convert dictionary to JS::Value due to OOM.");
-    return false;
+    return BrowserElementParent::OPEN_WINDOW_IGNORED;
   }
 
+  nsEventStatus status;
   bool dispatchSucceeded =
     DispatchCustomDOMEvent(aOpenerFrameElement,
                            NS_LITERAL_STRING("mozbrowseropenwindow"),
                            cx,
-                           val);
+                           val, &status);
 
-  // If the iframe is not in some document's DOM at this point, the embedder
-  // has "blocked" the popup.
-  return (dispatchSucceeded && aPopupFrameElement->IsInDoc());
+  if (dispatchSucceeded) {
+    if (aPopupFrameElement->IsInDoc()) {
+      return BrowserElementParent::OPEN_WINDOW_ADDED;
+    } else if (status == nsEventStatus_eConsumeNoDefault) {
+      // If the frame was not added to a document, report to callers whether
+      // preventDefault was called on or not
+      return BrowserElementParent::OPEN_WINDOW_CANCELLED;
+    }
+  }
+
+  return BrowserElementParent::OPEN_WINDOW_IGNORED;
 }
 
-} // anonymous namespace
-
-namespace mozilla {
-
-/*static*/ bool
+/*static*/
+BrowserElementParent::OpenWindowResult
 BrowserElementParent::OpenWindowOOP(TabParent* aOpenerTabParent,
                                     TabParent* aPopupTabParent,
                                     const nsAString& aURL,
                                     const nsAString& aName,
                                     const nsAString& aFeatures)
 {
   // Create an iframe owned by the same document which owns openerFrameElement.
   nsCOMPtr<Element> openerFrameElement = aOpenerTabParent->GetOwnerElement();
-  NS_ENSURE_TRUE(openerFrameElement, false);
+  NS_ENSURE_TRUE(openerFrameElement,
+                 BrowserElementParent::OPEN_WINDOW_IGNORED);
   nsRefPtr<HTMLIFrameElement> popupFrameElement =
     CreateIframe(openerFrameElement, aName, /* aRemote = */ true);
 
   // Normally an <iframe> element will try to create a frameLoader when the
   // page touches iframe.contentWindow or sets iframe.src.
   //
   // But in our case, we want to delay the creation of the frameLoader until
   // we've verified that the popup has gone through successfully.  If the popup
   // is "blocked" by the embedder, we don't want to load the popup's url.
   //
   // Therefore we call DisallowCreateFrameLoader() on the element and call
   // AllowCreateFrameLoader() only after we've verified that the popup was
   // allowed.
   popupFrameElement->DisallowCreateFrameLoader();
 
-  bool dispatchSucceeded =
+  OpenWindowResult opened =
     DispatchOpenWindowEvent(openerFrameElement, popupFrameElement,
                             aURL, aName, aFeatures);
-  if (!dispatchSucceeded) {
-    return false;
+
+  if (opened != BrowserElementParent::OPEN_WINDOW_ADDED) {
+    return opened;
   }
 
   // The popup was not blocked, so hook up the frame element and the popup tab
   // parent, and return success.
   aPopupTabParent->SetOwnerElement(popupFrameElement);
   popupFrameElement->AllowCreateFrameLoader();
   popupFrameElement->CreateRemoteFrameLoader(aPopupTabParent);
-
-  return true;
+  return opened;
 }
 
-/* static */ bool
+/* static */
+BrowserElementParent::OpenWindowResult
 BrowserElementParent::OpenWindowInProcess(nsIDOMWindow* aOpenerWindow,
                                           nsIURI* aURI,
                                           const nsAString& aName,
                                           const nsACString& aFeatures,
                                           nsIDOMWindow** aReturnWindow)
 {
   *aReturnWindow = NULL;
 
@@ -221,50 +236,53 @@ BrowserElementParent::OpenWindowInProces
   // GetScriptableTop gets us the <iframe mozbrowser>'s window; we'll use its
   // frame element, rather than aOpenerWindow's frame element, as our "opener
   // frame element" below.
   nsCOMPtr<nsIDOMWindow> topWindow;
   aOpenerWindow->GetScriptableTop(getter_AddRefs(topWindow));
 
   nsCOMPtr<nsIDOMElement> openerFrameDOMElement;
   topWindow->GetFrameElement(getter_AddRefs(openerFrameDOMElement));
-  NS_ENSURE_TRUE(openerFrameDOMElement, false);
+  NS_ENSURE_TRUE(openerFrameDOMElement, BrowserElementParent::OPEN_WINDOW_IGNORED);
 
   nsCOMPtr<Element> openerFrameElement =
     do_QueryInterface(openerFrameDOMElement);
 
   nsRefPtr<HTMLIFrameElement> popupFrameElement =
     CreateIframe(openerFrameElement, aName, /* aRemote = */ false);
-  NS_ENSURE_TRUE(popupFrameElement, false);
+  NS_ENSURE_TRUE(popupFrameElement, BrowserElementParent::OPEN_WINDOW_IGNORED);
 
   nsAutoCString spec;
   if (aURI) {
     aURI->GetSpec(spec);
   }
-  bool dispatchSucceeded =
+
+  OpenWindowResult opened =
     DispatchOpenWindowEvent(openerFrameElement, popupFrameElement,
                             NS_ConvertUTF8toUTF16(spec),
                             aName,
                             NS_ConvertUTF8toUTF16(aFeatures));
-  if (!dispatchSucceeded) {
-    return false;
+
+  if (opened != BrowserElementParent::OPEN_WINDOW_ADDED) {
+    return opened;
   }
 
   // Return popupFrameElement's window.
   nsCOMPtr<nsIFrameLoader> frameLoader;
   popupFrameElement->GetFrameLoader(getter_AddRefs(frameLoader));
-  NS_ENSURE_TRUE(frameLoader, false);
+  NS_ENSURE_TRUE(frameLoader, BrowserElementParent::OPEN_WINDOW_IGNORED);
 
   nsCOMPtr<nsIDocShell> docshell;
   frameLoader->GetDocShell(getter_AddRefs(docshell));
-  NS_ENSURE_TRUE(docshell, false);
+  NS_ENSURE_TRUE(docshell, BrowserElementParent::OPEN_WINDOW_IGNORED);
 
   nsCOMPtr<nsIDOMWindow> window = do_GetInterface(docshell);
   window.forget(aReturnWindow);
-  return !!*aReturnWindow;
+
+  return !!*aReturnWindow ? opened : BrowserElementParent::OPEN_WINDOW_CANCELLED;
 }
 
 class DispatchAsyncScrollEventRunnable : public nsRunnable
 {
 public:
   DispatchAsyncScrollEventRunnable(TabParent* aTabParent,
                                    const CSSRect& aContentRect,
                                    const CSSSize& aContentSize)
@@ -297,20 +315,21 @@ NS_IMETHODIMP DispatchAsyncScrollEventRu
 
   // We can get away with a null global here because
   // AsyncScrollEventDetail only contains numeric values.
   if (!detail.ToObject(cx, JS::NullPtr(), &val)) {
     MOZ_CRASH("Failed to convert dictionary to JS::Value due to OOM.");
     return NS_ERROR_FAILURE;
   }
 
+  nsEventStatus status = nsEventStatus_eIgnore;
   DispatchCustomDOMEvent(frameElement,
                          NS_LITERAL_STRING("mozbrowserasyncscroll"),
                          cx,
-                         val);
+                         val, &status);
   return NS_OK;
 }
 
 bool
 BrowserElementParent::DispatchAsyncScrollEvent(TabParent* aTabParent,
                                                const CSSRect& aContentRect,
                                                const CSSSize& aContentSize)
 {
--- a/dom/browser-element/BrowserElementParent.h
+++ b/dom/browser-element/BrowserElementParent.h
@@ -4,16 +4,17 @@
 
 #ifndef mozilla_BrowserElementHelpers_h
 #define mozilla_BrowserElementHelpers_h
 
 #include "nsAString.h"
 #include "mozilla/gfx/Point.h"
 #include "mozilla/gfx/Rect.h"
 #include "Units.h"
+#include "mozilla/dom/Element.h"
 
 class nsIDOMWindow;
 class nsIURI;
 
 namespace mozilla {
 
 namespace dom {
 class TabParent;
@@ -28,16 +29,32 @@ class TabParent;
  * functionality which must be written in C++.
  *
  * We don't communicate with the JS code that lives in BrowserElementParent.js;
  * the JS and C++ parts are completely separate.
  */
 class BrowserElementParent
 {
 public:
+
+  /**
+   * Possible results from a window.open call.
+   * ADDED     - The frame was added to a document (i.e. handled by the embedder).
+   * IGNORED   - The frame was not added to a document and the embedder didn't
+   *             call preventDefault() to prevent the platform from handling the call.
+   * CANCELLED - The frame was not added to a document, but the embedder still
+   *             called preventDefault() to prevent the platform from handling the call.
+   */
+
+  enum OpenWindowResult {
+    OPEN_WINDOW_ADDED,
+    OPEN_WINDOW_IGNORED,
+    OPEN_WINDOW_CANCELLED
+  };
+
   /**
    * Handle a window.open call from an out-of-process <iframe mozbrowser>.
    *
    * window.open inside <iframe mozbrowser> doesn't actually open a new
    * top-level window.  Instead, the "embedder" (the document which contains
    * the <iframe mozbrowser> whose content called window.open) gets the
    * opportunity to place a new <iframe mozbrowser> in the DOM somewhere.  This
    * new "popup" iframe acts as the opened window.
@@ -56,39 +73,39 @@ public:
    *    set aPopupTabParent's frame element to event.detail.frameElement.
    *    Otherwise, we return false.
    *
    * @param aURL the URL the new window should load.  The empty string is
    *             allowed.
    * @param aOpenerTabParent the TabParent whose TabChild called window.open.
    * @param aPopupTabParent the TabParent inside which the opened window will
    *                        live.
-   * @return true on success, false otherwise.  Failure is not (necessarily)
-   *         an error; it may indicate that the embedder simply rejected the
-   *         window.open request.
+   * @return an OpenWindowresult that describes whether the embedder added the
+   *         frame to a document and whether it called preventDefault to prevent
+   *         the platform from handling the open request.
    */
-  static bool
+  static OpenWindowResult
   OpenWindowOOP(dom::TabParent* aOpenerTabParent,
                 dom::TabParent* aPopupTabParent,
                 const nsAString& aURL,
                 const nsAString& aName,
                 const nsAString& aFeatures);
 
   /**
    * Handle a window.open call from an in-process <iframe mozbrowser>.
    *
-   * As with OpenWindowOOP, we return true if the window.open request
-   * succeeded, and return false if the embedder denied the request.
-   *
    * (These parameter types are silly, but they match what our caller has in
    * hand.  Feel free to add an override, if they are inconvenient to you.)
    *
    * @param aURI the URI the new window should load.  May be null.
+   * @return an OpenWindowResult that describes whether the browser added the
+   *         frame to a document or whether they called preventDefault to prevent
+   *         the platform from handling the open request
    */
-  static bool
+  static OpenWindowResult
   OpenWindowInProcess(nsIDOMWindow* aOpenerWindow,
                       nsIURI* aURI,
                       const nsAString& aName,
                       const nsACString& aFeatures,
                       nsIDOMWindow** aReturnWindow);
 
   /**
    * Fire a mozbrowserasyncscroll CustomEvent on the given TabParent's frame element.
@@ -104,13 +121,21 @@ public:
    * page "rubber-bands" after being scrolled all the way to the bottom.
    * Similarly, aContentRect.left + aContentRect.width may be greater than
    * contentSize.width, and both left and top may be negative.
    */
   static bool
   DispatchAsyncScrollEvent(dom::TabParent* aTabParent,
                            const CSSRect& aContentRect,
                            const CSSSize& aContentSize);
+
+private:
+  static OpenWindowResult
+  DispatchOpenWindowEvent(dom::Element* aOpenerFrameElement,
+                          dom::Element* aPopupFrameElement,
+                          const nsAString& aURL,
+                          const nsAString& aName,
+                          const nsAString& aFeatures);
 };
 
 } // namespace mozilla
 
 #endif
--- a/dom/browser-element/Makefile.in
+++ b/dom/browser-element/Makefile.in
@@ -5,11 +5,12 @@
 include $(topsrcdir)/dom/dom-config.mk
 
 
 include $(topsrcdir)/config/rules.mk
 include $(topsrcdir)/ipc/chromium/chromium-config.mk
 
 INCLUDES	+= \
 		-I$(topsrcdir)/dom/base \
+		-I$(topsrcdir)/dom/ \
 		-I$(topsrcdir)/dom/ipc \
 		-I$(topsrcdir)/content/base/src \
 		$(NULL)
--- a/dom/browser-element/mochitest/browserElement_AppWindowNamespace.js
+++ b/dom/browser-element/mochitest/browserElement_AppWindowNamespace.js
@@ -27,16 +27,19 @@ function runTest() {
     SimpleTest.executeSoon(function() {
       var iframe2 = document.createElement('iframe');
       SpecialPowers.wrap(iframe2).mozbrowser = true;
       iframe2.setAttribute('mozapp', 'http://example.com/manifest.webapp');
 
       iframe2.addEventListener('mozbrowseropenwindow', function(e) {
         ok(true, "Got second mozbrowseropenwindow event.");
         SpecialPowers.removePermission("embed-apps", document);
+
+        // We're not going to open this, but we don't want the platform to either
+        e.preventDefault();
         SimpleTest.finish();
       });
 
       document.body.appendChild(iframe2);
       iframe2.src = 'http://example.com/tests/dom/browser-element/mochitest/file_browserElement_AppWindowNamespace.html';
     });
   });
 
--- a/dom/browser-element/mochitest/browserElement_OpenWindowRejected.js
+++ b/dom/browser-element/mochitest/browserElement_OpenWindowRejected.js
@@ -16,16 +16,17 @@ function runTest() {
   iframe.addEventListener('mozbrowseropenwindow', function(e) {
     ok(e.detail.url.indexOf('does_not_exist.html') != -1,
        'Opened URL; got ' + e.detail.url);
     is(e.detail.name, '');
     is(e.detail.features, '');
 
     // Don't add e.detail.frameElement to the DOM, so the window.open is
     // effectively blocked.
+    e.preventDefault();
   });
 
   iframe.addEventListener('mozbrowsershowmodalprompt', function(e) {
     var msg = e.detail.message;
     if (msg.indexOf('success:') == 0) {
       ok(true, msg);
     }
     else if (msg == 'finish') {
--- a/dom/browser-element/mochitest/browserElement_TargetBlank.js
+++ b/dom/browser-element/mochitest/browserElement_TargetBlank.js
@@ -10,16 +10,17 @@ browserElementTestHelpers.setEnabledPref
 browserElementTestHelpers.addPermission();
 
 function runTest() {
   var iframe = document.createElement('iframe');
   SpecialPowers.wrap(iframe).mozbrowser = true;
 
   iframe.addEventListener('mozbrowseropenwindow', function(e) {
     is(e.detail.url, 'http://example.com/');
+    e.preventDefault();
     SimpleTest.finish();
   });
 
   iframe.src = "file_browserElement_TargetBlank.html";
   document.body.appendChild(iframe);
 }
 
 addEventListener('testready', runTest);
--- a/dom/ipc/TabParent.cpp
+++ b/dom/ipc/TabParent.cpp
@@ -1519,19 +1519,20 @@ TabParent::MaybeForwardEventToRenderFram
 
 bool
 TabParent::RecvBrowserFrameOpenWindow(PBrowserParent* aOpener,
                                       const nsString& aURL,
                                       const nsString& aName,
                                       const nsString& aFeatures,
                                       bool* aOutWindowOpened)
 {
-  *aOutWindowOpened =
+  BrowserElementParent::OpenWindowResult opened =
     BrowserElementParent::OpenWindowOOP(static_cast<TabParent*>(aOpener),
                                         this, aURL, aName, aFeatures);
+  *aOutWindowOpened = (opened != BrowserElementParent::OPEN_WINDOW_CANCELLED);
   return true;
 }
 
 bool
 TabParent::RecvPRenderFrameConstructor(PRenderFrameParent* actor,
                                        ScrollingBehavior* scrolling,
                                        TextureFactoryIdentifier* factoryIdentifier,
                                        uint64_t* layersId)
--- a/dom/system/OSFileConstants.cpp
+++ b/dom/system/OSFileConstants.cpp
@@ -39,16 +39,17 @@
 #include "nsString.h"
 #include "nsAutoPtr.h"
 #include "nsDirectoryServiceDefs.h"
 #include "nsAppDirectoryServiceDefs.h"
 #include "mozJSComponentLoader.h"
 
 #include "OSFileConstants.h"
 #include "nsIOSFileConstantsService.h"
+#include "nsZipArchive.h"
 
 #if defined(__DragonFly__) || defined(__FreeBSD__) \
   || defined(__NetBSD__) || defined(__OpenBSD__)
 #define __dd_fd dd_fd
 #endif
 
 /**
  * This module defines the basic libc constants (error numbers, open modes,
--- a/gfx/layers/composite/CompositableHost.cpp
+++ b/gfx/layers/composite/CompositableHost.cpp
@@ -55,21 +55,28 @@ CompositableHost::AddTextureHost(Texture
   RefPtr<TextureHost> second = mFirstTexture;
   mFirstTexture = aTexture;
   aTexture->SetNextSibling(second);
 }
 
 void
 CompositableHost::RemoveTextureHost(uint64_t aTextureID)
 {
+  if (mFirstTexture && mFirstTexture->GetID() == aTextureID) {
+    RefPtr<TextureHost> toRemove = mFirstTexture;
+    mFirstTexture = mFirstTexture->GetNextSibling();
+    toRemove->SetNextSibling(nullptr);
+  }
   RefPtr<TextureHost> it = mFirstTexture;
   while (it) {
     if (it->GetNextSibling() &&
         it->GetNextSibling()->GetID() == aTextureID) {
+      RefPtr<TextureHost> toRemove = it->GetNextSibling();
       it->SetNextSibling(it->GetNextSibling()->GetNextSibling());
+      toRemove->SetNextSibling(nullptr);
     }
     it = it->GetNextSibling();
   }
 }
 
 TextureHost*
 CompositableHost::GetTextureHost(uint64_t aTextureID)
 {
--- a/gfx/layers/ipc/LayersMessages.ipdlh
+++ b/gfx/layers/ipc/LayersMessages.ipdlh
@@ -387,17 +387,17 @@ struct OpContentBufferSwap {
 struct OpTextureSwap {
   PCompositable compositable;
   uint32_t textureId;
   SurfaceDescriptor image;
 };
 
 struct ReplyTextureRemoved {
   PCompositable compositable;
-  uint32_t textureId;
+  uint64_t textureId;
 };
 
 // Unit of a "changeset reply".  This is a weird abstraction, probably
 // only to be used for buffer swapping.
 union EditReply {
   OpContentBufferSwap;
   OpTextureSwap;
 
--- a/js/src/jit/BaselineCompiler.cpp
+++ b/js/src/jit/BaselineCompiler.cpp
@@ -225,40 +225,73 @@ BaselineCompiler::emitPrologue()
     uint32_t flags = 0;
     if (script->isForEval())
         flags |= BaselineFrame::EVAL;
     masm.store32(Imm32(flags), frame.addressOfFlags());
 
     if (script->isForEval())
         masm.storePtr(ImmGCPtr(script), frame.addressOfEvalScript());
 
+    // Handle scope chain pre-initialization (in case GC gets run
+    // during stack check).  For global and eval scripts, the scope
+    // chain is in R1.  For function scripts, the scope chain is in
+    // the callee, NULL is stored for now so that GC doesn't choke on
+    // a bogus ScopeChain value in the frame.
+    if (function())
+        masm.storePtr(ImmWord((uintptr_t)0), frame.addressOfScopeChain());
+    else
+        masm.storePtr(R1.scratchReg(), frame.addressOfScopeChain());
+
+    if (!emitStackCheck())
+        return false;
+
     // Initialize locals to |undefined|. Use R0 to minimize code size.
+    // If the number of locals to push is < LOOP_UNROLL_FACTOR, then the
+    // initialization pushes are emitted directly and inline.  Otherwise,
+    // they're emitted in a partially unrolled loop.
     if (frame.nlocals() > 0) {
+        size_t LOOP_UNROLL_FACTOR = 4;
+        size_t toPushExtra = frame.nlocals() % LOOP_UNROLL_FACTOR;
+
         masm.moveValue(UndefinedValue(), R0);
-        for (size_t i = 0; i < frame.nlocals(); i++)
+
+        // Handle any extra pushes left over by the optional unrolled loop below.
+        for (size_t i = 0; i < toPushExtra; i++)
             masm.pushValue(R0);
+
+        // Partially unrolled loop of pushes.
+        if (frame.nlocals() >= LOOP_UNROLL_FACTOR) {
+            size_t toPush = frame.nlocals() - toPushExtra;
+            JS_ASSERT(toPush % LOOP_UNROLL_FACTOR == 0);
+            JS_ASSERT(toPush >= LOOP_UNROLL_FACTOR);
+            masm.move32(Imm32(toPush), R1.scratchReg());
+            // Emit unrolled loop with 4 pushes per iteration.
+            Label pushLoop;
+            masm.bind(&pushLoop);
+            for (size_t i = 0; i < LOOP_UNROLL_FACTOR; i++)
+                masm.pushValue(R0);
+            masm.sub32(Imm32(LOOP_UNROLL_FACTOR), R1.scratchReg());
+            masm.j(Assembler::NonZero, &pushLoop);
+        }
     }
 
 #if JS_TRACE_LOGGING
     masm.tracelogStart(script.get());
     masm.tracelogLog(TraceLogging::INFO_ENGINE_BASELINE);
 #endif
 
     // Record the offset of the prologue, because Ion can bailout before
     // the scope chain is initialized.
     prologueOffset_ = masm.currentOffset();
 
     // Initialize the scope chain before any operation that may
     // call into the VM and trigger a GC.
     if (!initScopeChain())
         return false;
 
-    if (!emitStackCheck())
-        return false;
-
     if (!emitDebugPrologue())
         return false;
 
     if (!emitUseCountIncrement())
         return false;
 
     if (!emitArgumentTypeChecks())
         return false;
@@ -333,16 +366,40 @@ BaselineCompiler::emitIC(ICStub *stub, b
     EmitCallIC(&patchOffset, masm);
     entry->setReturnOffset(masm.currentOffset());
     if (!addICLoadLabel(patchOffset))
         return false;
 
     return true;
 }
 
+typedef bool (*CheckOverRecursedWithExtraFn)(JSContext *, uint32_t);
+static const VMFunction CheckOverRecursedWithExtraInfo =
+    FunctionInfo<CheckOverRecursedWithExtraFn>(CheckOverRecursedWithExtra);
+
+bool
+BaselineCompiler::emitStackCheck()
+{
+    Label skipCall;
+    uintptr_t *limitAddr = &cx->runtime()->mainThread.ionStackLimit;
+    uint32_t tolerance = script->nslots * sizeof(Value);
+    masm.movePtr(BaselineStackReg, R1.scratchReg());
+    masm.subPtr(Imm32(tolerance), R1.scratchReg());
+    masm.branchPtr(Assembler::BelowOrEqual, AbsoluteAddress(limitAddr), R1.scratchReg(),
+                   &skipCall);
+
+    prepareVMCall();
+    pushArg(Imm32(tolerance));
+    if (!callVM(CheckOverRecursedWithExtraInfo, /*preInitialize=*/true))
+        return false;
+
+    masm.bind(&skipCall);
+    return true;
+}
+
 typedef bool (*DebugPrologueFn)(JSContext *, BaselineFrame *, bool *);
 static const VMFunction DebugPrologueInfo = FunctionInfo<DebugPrologueFn>(jit::DebugPrologue);
 
 bool
 BaselineCompiler::emitDebugPrologue()
 {
     if (!debugMode_)
         return true;
@@ -395,54 +452,34 @@ BaselineCompiler::initScopeChain()
 
             masm.loadBaselineFramePtr(BaselineFrameReg, R0.scratchReg());
             pushArg(R0.scratchReg());
 
             if (!callVM(HeavyweightFunPrologueInfo))
                 return false;
         }
     } else {
-        // For global and eval scripts, the scope chain is in R1.
-        masm.storePtr(R1.scratchReg(), frame.addressOfScopeChain());
+        // ScopeChain pointer in BaselineFrame has already been initialized
+        // in prologue.
 
         if (script->isForEval() && script->strict) {
             // Strict eval needs its own call object.
             prepareVMCall();
 
             masm.loadBaselineFramePtr(BaselineFrameReg, R0.scratchReg());
             pushArg(R0.scratchReg());
 
             if (!callVM(StrictEvalPrologueInfo))
                 return false;
         }
     }
 
     return true;
 }
 
-typedef bool (*ReportOverRecursedFn)(JSContext *);
-static const VMFunction CheckOverRecursedInfo =
-    FunctionInfo<ReportOverRecursedFn>(CheckOverRecursed);
-
-bool
-BaselineCompiler::emitStackCheck()
-{
-    Label skipCall;
-    uintptr_t *limitAddr = &cx->runtime()->mainThread.ionStackLimit;
-    masm.branchPtr(Assembler::BelowOrEqual, AbsoluteAddress(limitAddr), BaselineStackReg,
-                   &skipCall);
-
-    prepareVMCall();
-    if (!callVM(CheckOverRecursedInfo))
-        return false;
-
-    masm.bind(&skipCall);
-    return true;
-}
-
 typedef bool (*InterruptCheckFn)(JSContext *);
 static const VMFunction InterruptCheckInfo = FunctionInfo<InterruptCheckFn>(InterruptCheck);
 
 bool
 BaselineCompiler::emitInterruptCheck()
 {
     frame.syncStack(0);
 
--- a/js/src/jit/BaselineFrame.cpp
+++ b/js/src/jit/BaselineFrame.cpp
@@ -28,18 +28,19 @@ BaselineFrame::trace(JSTracer *trc)
     gc::MarkValueRoot(trc, &thisValue(), "baseline-this");
 
     // Mark actual and formal args.
     if (isNonEvalFunctionFrame()) {
         unsigned numArgs = js::Max(numActualArgs(), numFormalArgs());
         gc::MarkValueRootRange(trc, numArgs, argv(), "baseline-args");
     }
 
-    // Mark scope chain.
-    gc::MarkObjectRoot(trc, &scopeChain_, "baseline-scopechain");
+    // Mark scope chain, if it exists.
+    if (scopeChain_)
+        gc::MarkObjectRoot(trc, &scopeChain_, "baseline-scopechain");
 
     // Mark return value.
     if (hasReturnValue())
         gc::MarkValueRoot(trc, returnValue(), "baseline-rval");
 
     if (isEvalFrame())
         gc::MarkScriptRoot(trc, &evalScript_, "baseline-evalscript");
 
--- a/js/src/jit/BaselineIC.cpp
+++ b/js/src/jit/BaselineIC.cpp
@@ -1596,20 +1596,21 @@ static const VMFunction DoCallNativeGett
 // This_Fallback
 //
 
 static bool
 DoThisFallback(JSContext *cx, ICThis_Fallback *stub, HandleValue thisv, MutableHandleValue ret)
 {
     FallbackICSpew(cx, stub, "This");
 
-    ret.set(thisv);
-    bool modified;
-    if (!BoxNonStrictThis(cx, ret, &modified))
+    JSObject *thisObj = BoxNonStrictThis(cx, thisv);
+    if (!thisObj)
         return false;
+
+    ret.setObject(*thisObj);
     return true;
 }
 
 typedef bool (*DoThisFallbackFn)(JSContext *, ICThis_Fallback *, HandleValue, MutableHandleValue);
 static const VMFunction DoThisFallbackInfo = FunctionInfo<DoThisFallbackFn>(DoThisFallback);
 
 bool
 ICThis_Fallback::Compiler::generateStubCode(MacroAssembler &masm)
@@ -8824,18 +8825,18 @@ ICInstanceOf_Fallback::Compiler::generat
 // TypeOf_Fallback
 //
 
 static bool
 DoTypeOfFallback(JSContext *cx, BaselineFrame *frame, ICTypeOf_Fallback *stub, HandleValue val,
                  MutableHandleValue res)
 {
     FallbackICSpew(cx, stub, "TypeOf");
-    JSType type = JS_TypeOfValue(cx, val);
-    RootedString string(cx, TypeName(type, cx));
+    JSType type = js::TypeOfValue(val);
+    RootedString string(cx, TypeName(type, cx->runtime()));
 
     res.setString(string);
 
     JS_ASSERT(type != JSTYPE_NULL);
     if (type != JSTYPE_OBJECT && type != JSTYPE_FUNCTION) {
         // Create a new TypeOf stub.
         IonSpew(IonSpew_BaselineIC, "  Generating TypeOf stub for JSType (%d)", (int) type);
         ICTypeOf_Typed::Compiler compiler(cx, type, string);
--- a/js/src/jit/BaselineJIT.cpp
+++ b/js/src/jit/BaselineJIT.cpp
@@ -80,17 +80,26 @@ static bool
 IsJSDEnabled(JSContext *cx)
 {
     return cx->compartment()->debugMode() && cx->runtime()->debugHooks.callHook;
 }
 
 static IonExecStatus
 EnterBaseline(JSContext *cx, EnterJitData &data)
 {
-    JS_CHECK_RECURSION(cx, return IonExec_Aborted);
+    if (data.osrFrame) {
+        // Check for potential stack overflow before OSR-ing.
+        uint8_t spDummy;
+        uint32_t extra = BaselineFrame::Size() + (data.osrNumStackValues * sizeof(Value));
+        uint8_t *checkSp = (&spDummy) - extra;
+        JS_CHECK_RECURSION_WITH_SP(cx, checkSp, return IonExec_Aborted);
+    } else {
+        JS_CHECK_RECURSION(cx, return IonExec_Aborted);
+    }
+
     JS_ASSERT(jit::IsBaselineEnabled(cx));
     JS_ASSERT_IF(data.osrFrame, CheckFrame(data.osrFrame));
 
     EnterIonCode enter = cx->runtime()->ionRuntime()->enterBaseline();
 
     // Caller must construct |this| before invoking the Ion function.
     JS_ASSERT_IF(data.constructing, data.maxArgv[0].isObject());
 
@@ -239,16 +248,19 @@ CanEnterBaselineJIT(JSContext *cx, Handl
 
     // Skip if the script has been disabled.
     if (!script->canBaselineCompile())
         return Method_Skipped;
 
     if (script->length > BaselineScript::MAX_JSSCRIPT_LENGTH)
         return Method_CantCompile;
 
+    if (script->nslots > BaselineScript::MAX_JSSCRIPT_SLOTS)
+        return Method_CantCompile;
+
     if (!cx->compartment()->ensureIonCompartmentExists(cx))
         return Method_Error;
 
     if (script->hasBaselineScript())
         return Method_Compiled;
 
     // Check script use count. However, always eagerly compile scripts if JSD
     // is enabled, so that we don't have to OSR and don't have to update the
--- a/js/src/jit/BaselineJIT.h
+++ b/js/src/jit/BaselineJIT.h
@@ -95,16 +95,21 @@ struct PCMappingIndexEntry
     uint32_t bufferOffset;
 };
 
 struct BaselineScript
 {
   public:
     static const uint32_t MAX_JSSCRIPT_LENGTH = 0x0fffffffu;
 
+    // Limit the locals on a given script so that stack check on baseline frames
+    // doesn't overflow a uint32_t value.
+    // (MAX_JSSCRIPT_SLOTS * sizeof(Value)) must fit within a uint32_t.
+    static const uint32_t MAX_JSSCRIPT_SLOTS = 0xfffffu;
+
   private:
     // Code pointer containing the actual method.
     HeapPtr<IonCode> method_;
 
     // Allocated space for fallback stubs.
     FallbackICStubSpace fallbackStubSpace_;
 
     // Native code offset right before the scope chain is initialized.
--- a/js/src/jit/CodeGenerator.cpp
+++ b/js/src/jit/CodeGenerator.cpp
@@ -3523,16 +3523,37 @@ CodeGenerator::visitReturnFromCtor(LRetu
     Register payload = masm.extractObject(value, output);
     if (payload != output)
         masm.movePtr(payload, output);
 
     masm.bind(&end);
     return true;
 }
 
+typedef JSObject *(*BoxNonStrictThisFn)(JSContext *, HandleValue);
+static const VMFunction BoxNonStrictThisInfo = FunctionInfo<BoxNonStrictThisFn>(BoxNonStrictThis);
+
+bool
+CodeGenerator::visitComputeThis(LComputeThis *lir)
+{
+    ValueOperand value = ToValue(lir, LComputeThis::ValueIndex);
+    Register output = ToRegister(lir->output());
+
+    OutOfLineCode *ool = oolCallVM(BoxNonStrictThisInfo, lir, (ArgList(), value),
+                                   StoreRegisterTo(output));
+    if (!ool)
+        return false;
+
+    masm.branchTestObject(Assembler::NotEqual, value, ool->entry());
+    masm.unboxObject(value, output);
+
+    masm.bind(ool->rejoin());
+    return true;
+}
+
 bool
 CodeGenerator::visitArrayLength(LArrayLength *lir)
 {
     Address length(ToRegister(lir->elements()), ObjectElements::offsetOfLength());
     masm.load32(length, ToRegister(lir->output()));
     return true;
 }
 
@@ -6407,28 +6428,38 @@ class OutOfLineTypeOfV : public OutOfLin
 
 bool
 CodeGenerator::visitTypeOfV(LTypeOfV *lir)
 {
     const ValueOperand value = ToValue(lir, LTypeOfV::Input);
     Register output = ToRegister(lir->output());
     Register tag = masm.splitTagForTest(value);
 
-    OutOfLineTypeOfV *ool = new OutOfLineTypeOfV(lir);
-    if (!addOutOfLineCode(ool))
-        return false;
-
     JSRuntime *rt = GetIonContext()->runtime;
-
-    // Jump to the OOL path if the value is an object. Objects are complicated
-    // since they may have a typeof hook.
-    masm.branchTestObject(Assembler::Equal, tag, ool->entry());
-
     Label done;
 
+    OutOfLineTypeOfV *ool = NULL;
+    if (lir->mir()->inputMaybeCallableOrEmulatesUndefined()) {
+        // The input may be a callable object (result is "function") or may
+        // emulate undefined (result is "undefined"). Use an OOL path.
+        ool = new OutOfLineTypeOfV(lir);
+        if (!addOutOfLineCode(ool))
+            return false;
+
+        masm.branchTestObject(Assembler::Equal, tag, ool->entry());
+    } else {
+        // Input is not callable and does not emulate undefined, so if
+        // it's an object the result is always "object".
+        Label notObject;
+        masm.branchTestObject(Assembler::NotEqual, tag, &notObject);
+        masm.movePtr(ImmGCPtr(rt->atomState.object), output);
+        masm.jump(&done);
+        masm.bind(&notObject);
+    }
+
     Label notNumber;
     masm.branchTestNumber(Assembler::NotEqual, tag, &notNumber);
     masm.movePtr(ImmGCPtr(rt->atomState.number), output);
     masm.jump(&done);
     masm.bind(&notNumber);
 
     Label notUndefined;
     masm.branchTestUndefined(Assembler::NotEqual, tag, &notUndefined);
@@ -6446,35 +6477,40 @@ CodeGenerator::visitTypeOfV(LTypeOfV *li
     masm.branchTestBoolean(Assembler::NotEqual, tag, &notBoolean);
     masm.movePtr(ImmGCPtr(rt->atomState.boolean), output);
     masm.jump(&done);
     masm.bind(&notBoolean);
 
     masm.movePtr(ImmGCPtr(rt->atomState.string), output);
 
     masm.bind(&done);
-    masm.bind(ool->rejoin());
-    return true;
-}
-
-typedef JSString *(*TypeOfFn)(JSContext *, HandleValue);
-static const VMFunction TypeOfInfo = FunctionInfo<TypeOfFn>(TypeOfOperation);
+    if (ool)
+        masm.bind(ool->rejoin());
+    return true;
+}
 
 bool
 CodeGenerator::visitOutOfLineTypeOfV(OutOfLineTypeOfV *ool)
 {
     LTypeOfV *ins = ool->ins();
-    saveLive(ins);
-
-    pushArg(ToValue(ins, LTypeOfV::Input));
-    if (!callVM(TypeOfInfo, ins))
-        return false;
-
-    masm.storeCallResult(ToRegister(ins->output()));
-    restoreLive(ins);
+
+    ValueOperand input = ToValue(ins, LTypeOfV::Input);
+    Register temp = ToTempUnboxRegister(ins->tempToUnbox());
+    Register output = ToRegister(ins->output());
+
+    Register obj = masm.extractObject(input, temp);
+
+    saveVolatile(output);
+    masm.setupUnalignedABICall(2, output);
+    masm.passABIArg(obj);
+    masm.movePtr(ImmWord(GetIonContext()->runtime), output);
+    masm.passABIArg(output);
+    masm.callWithABI(JS_FUNC_TO_DATA_PTR(void *, js::TypeOfObjectOperation));
+    masm.storeCallResult(output);
+    restoreVolatile(output);
 
     masm.jump(ool->rejoin());
     return true;
 }
 
 typedef bool (*ToIdFn)(JSContext *, HandleScript, jsbytecode *, HandleValue, HandleValue,
                        MutableHandleValue);
 static const VMFunction ToIdInfo = FunctionInfo<ToIdFn>(ToIdOperation);
--- a/js/src/jit/CodeGenerator.h
+++ b/js/src/jit/CodeGenerator.h
@@ -138,16 +138,17 @@ class CodeGenerator : public CodeGenerat
     bool visitInitPropGetterSetter(LInitPropGetterSetter *lir);
     bool visitCreateThis(LCreateThis *lir);
     bool visitCreateThisWithProto(LCreateThisWithProto *lir);
     bool visitCreateThisWithTemplate(LCreateThisWithTemplate *lir);
     bool visitCreateArgumentsObject(LCreateArgumentsObject *lir);
     bool visitGetArgumentsObjectArg(LGetArgumentsObjectArg *lir);
     bool visitSetArgumentsObjectArg(LSetArgumentsObjectArg *lir);
     bool visitReturnFromCtor(LReturnFromCtor *lir);
+    bool visitComputeThis(LComputeThis *lir);
     bool visitArrayLength(LArrayLength *lir);
     bool visitTypedArrayLength(LTypedArrayLength *lir);
     bool visitTypedArrayElements(LTypedArrayElements *lir);
     bool visitStringLength(LStringLength *lir);
     bool visitInitializedLength(LInitializedLength *lir);
     bool visitSetInitializedLength(LSetInitializedLength *lir);
     bool visitNotO(LNotO *ins);
     bool visitNotV(LNotV *ins);
--- a/js/src/jit/IonBuilder.cpp
+++ b/js/src/jit/IonBuilder.cpp
@@ -7265,18 +7265,18 @@ IonBuilder::setElemTryCache(bool *emitte
     // TODO: Bug 876650: remove this check:
     // Temporary disable the cache if non dense native,
     // until the cache supports more ics
     SetElemICInspector icInspect(inspector->setElemICInspector(pc));
     if (!icInspect.sawDenseWrite() && !icInspect.sawTypedArrayWrite())
         return true;
 
     bool needsBarrier;
-    if (PropertyWriteNeedsTypeBarrier(cx, current, &object, NULL, &value, /* canModify = */ true,
-                                      &needsBarrier))
+    if (!PropertyWriteNeedsTypeBarrier(cx, current, &object, NULL, &value, /* canModify = */ true,
+                                       &needsBarrier))
     {
         return false;
     }
 
     if (needsBarrier)
         return true;
 
     // Emit SetElementCache.
@@ -8879,17 +8879,18 @@ IonBuilder::jsop_deffun(uint32_t index)
 }
 
 bool
 IonBuilder::jsop_this()
 {
     if (!info().fun())
         return abort("JSOP_THIS outside of a JSFunction.");
 
-    if (script()->strict) {
+    if (script()->strict || info().fun()->isSelfHostedBuiltin()) {
+        // No need to wrap primitive |this| in strict mode or self-hosted code.
         current->pushSlot(info().thisSlot());
         return true;
     }
 
     types::StackTypeSet *types = types::TypeScript::ThisTypes(script());
     if (types && (types->getKnownTypeTag() == JSVAL_TYPE_OBJECT ||
                   (types->empty() && baselineFrame_ && baselineFrame_->thisValue().isObject())))
     {
@@ -8904,30 +8905,45 @@ IonBuilder::jsop_this()
     // |this| type as its type object is being created right now. Instead of
     // bailing out just push the |this| slot, as this code won't actually
     // execute and it does not matter whether |this| is primitive.
     if (info().executionMode() == DefinitePropertiesAnalysis) {
         current->pushSlot(info().thisSlot());
         return true;
     }
 
-    return abort("JSOP_THIS hard case not yet handled");
+    // Hard case: |this| may be a primitive we have to wrap.
+    MDefinition *def = current->getSlot(info().thisSlot());
+
+    if (def->type() == MIRType_Object) {
+        // If we already computed a |this| object, we can reuse it.
+        current->push(def);
+        return true;
+    }
+
+    MComputeThis *thisObj = MComputeThis::New(def);
+    current->add(thisObj);
+    current->push(thisObj);
+
+    current->setSlot(info().thisSlot(), thisObj);
+
+    return resumeAfter(thisObj);
 }
 
 bool
 IonBuilder::jsop_typeof()
 {
     MDefinition *input = current->pop();
     MTypeOf *ins = MTypeOf::New(input, input->type());
 
+    ins->infer(cx);
+
     current->add(ins);
     current->push(ins);
 
-    if (ins->isEffectful() && !resumeAfter(ins))
-        return false;
     return true;
 }
 
 bool
 IonBuilder::jsop_toid()
 {
     // No-op if the index is an integer.
     if (current->peek(-1)->type() == MIRType_Int32)
--- a/js/src/jit/IonCompartment.h
+++ b/js/src/jit/IonCompartment.h
@@ -436,14 +436,20 @@ class IonCompartment
         return &optimizedStubSpace_;
     }
 };
 
 // Called from JSCompartment::discardJitCode().
 void InvalidateAll(FreeOp *fop, JS::Zone *zone);
 void FinishInvalidation(FreeOp *fop, JSScript *script);
 
+// On windows systems, really large frames need to be incrementally touched.
+// The following constant defines the minimum increment of the touch.
+#ifdef XP_WIN
+const unsigned WINDOWS_BIG_FRAME_TOUCH_INCREMENT = 4096 - 1;
+#endif
+
 } // namespace jit
 } // namespace js
 
 #endif // JS_ION
 
 #endif /* jit_IonCompartment_h */
--- a/js/src/jit/LIR-Common.h
+++ b/js/src/jit/LIR-Common.h
@@ -717,23 +717,31 @@ class LDefFun : public LCallInstructionH
     const LAllocation *scopeChain() {
         return getOperand(0);
     }
     MDefFun *mir() const {
         return mir_->toDefFun();
     }
 };
 
-class LTypeOfV : public LInstructionHelper<1, BOX_PIECES, 0>
+class LTypeOfV : public LInstructionHelper<1, BOX_PIECES, 1>
 {
   public:
     LIR_HEADER(TypeOfV)
 
+    LTypeOfV(const LDefinition &tempToUnbox) {
+        setTemp(0, tempToUnbox);
+    }
+
     static const size_t Input = 0;
 
+    const LDefinition *tempToUnbox() {
+        return getTemp(0);
+    }
+
     MTypeOf *mir() const {
         return mir_->toTypeOf();
     }
 };
 
 class LToIdV : public LInstructionHelper<BOX_PIECES, 2 * BOX_PIECES, 1>
 {
   public:
@@ -899,16 +907,32 @@ class LReturnFromCtor : public LInstruct
     const LAllocation *getObject() {
         return getOperand(LReturnFromCtor::ObjectIndex);
     }
 
     static const size_t ValueIndex = 0;
     static const size_t ObjectIndex = BOX_PIECES;
 };
 
+class LComputeThis : public LInstructionHelper<1, BOX_PIECES, 0>
+{
+  public:
+    LIR_HEADER(ComputeThis)
+
+    static const size_t ValueIndex = 0;
+
+    const LDefinition *output() {
+        return getDef(0);
+    }
+
+    MComputeThis *mir() const {
+        return mir_->toComputeThis();
+    }
+};
+
 // Writes a typed argument for a function call to the frame's argument vector.
 class LStackArgT : public LInstructionHelper<0, 1, 0>
 {
     uint32_t argslot_; // Index into frame-scope argument vector.
 
   public:
     LIR_HEADER(StackArgT)
 
--- a/js/src/jit/LOpcodes.h
+++ b/js/src/jit/LOpcodes.h
@@ -53,16 +53,17 @@
     _(StackArgV)                    \
     _(CreateThis)                   \
     _(CreateThisWithProto)          \
     _(CreateThisWithTemplate)       \
     _(CreateArgumentsObject)        \
     _(GetArgumentsObjectArg)        \
     _(SetArgumentsObjectArg)        \
     _(ReturnFromCtor)               \
+    _(ComputeThis)                  \
     _(BitNotI)                      \
     _(BitNotV)                      \
     _(BitOpI)                       \
     _(BitOpV)                       \
     _(ShiftI)                       \
     _(UrshD)                        \
     _(Return)                       \
     _(Throw)                        \
--- a/js/src/jit/Lowering.cpp
+++ b/js/src/jit/Lowering.cpp
@@ -373,16 +373,30 @@ LIRGenerator::visitReturnFromCtor(MRetur
     LReturnFromCtor *lir = new LReturnFromCtor(useRegister(ins->getObject()));
     if (!useBox(lir, LReturnFromCtor::ValueIndex, ins->getValue()))
         return false;
 
     return define(lir, ins);
 }
 
 bool
+LIRGenerator::visitComputeThis(MComputeThis *ins)
+{
+    JS_ASSERT(ins->type() == MIRType_Object);
+    JS_ASSERT(ins->input()->type() == MIRType_Value);
+
+    LComputeThis *lir = new LComputeThis();
+    if (!useBoxAtStart(lir, LComputeThis::ValueIndex, ins->input()))
+        return false;
+
+    return define(lir, ins) && assignSafepoint(lir, ins);
+}
+
+
+bool
 LIRGenerator::visitCall(MCall *call)
 {
     JS_ASSERT(CallTempReg0 != CallTempReg1);
     JS_ASSERT(CallTempReg0 != ArgumentsRectifierReg);
     JS_ASSERT(CallTempReg1 != ArgumentsRectifierReg);
     JS_ASSERT(call->getFunction()->type() == MIRType_Object);
 
     // Height of the current argument vector.
@@ -922,20 +936,20 @@ LIRGenerator::lowerBitOp(JSOp op, MInstr
 }
 
 bool
 LIRGenerator::visitTypeOf(MTypeOf *ins)
 {
     MDefinition *opd = ins->input();
     JS_ASSERT(opd->type() == MIRType_Value);
 
-    LTypeOfV *lir = new LTypeOfV();
+    LTypeOfV *lir = new LTypeOfV(tempToUnbox());
     if (!useBox(lir, LTypeOfV::Input, opd))
         return false;
-    return define(lir, ins) && assignSafepoint(lir, ins);
+    return define(lir, ins);
 }
 
 bool
 LIRGenerator::visitToId(MToId *ins)
 {
     LToIdV *lir = new LToIdV(tempFloat());
     if (!useBox(lir, LToIdV::Object, ins->lhs()))
         return false;
--- a/js/src/jit/Lowering.h
+++ b/js/src/jit/Lowering.h
@@ -105,16 +105,17 @@ class LIRGenerator : public LIRGenerator
     bool visitPassArg(MPassArg *arg);
     bool visitCreateThisWithTemplate(MCreateThisWithTemplate *ins);
     bool visitCreateThisWithProto(MCreateThisWithProto *ins);
     bool visitCreateThis(MCreateThis *ins);
     bool visitCreateArgumentsObject(MCreateArgumentsObject *ins);
     bool visitGetArgumentsObjectArg(MGetArgumentsObjectArg *ins);
     bool visitSetArgumentsObjectArg(MSetArgumentsObjectArg *ins);
     bool visitReturnFromCtor(MReturnFromCtor *ins);
+    bool visitComputeThis(MComputeThis *ins);
     bool visitCall(MCall *call);
     bool visitApplyArgs(MApplyArgs *apply);
     bool visitBail(MBail *bail);
     bool visitGetDynamicName(MGetDynamicName *ins);
     bool visitFilterArguments(MFilterArguments *ins);
     bool visitCallDirectEval(MCallDirectEval *ins);
     bool visitTest(MTest *test);
     bool visitFunctionDispatch(MFunctionDispatch *ins);
--- a/js/src/jit/MIR.cpp
+++ b/js/src/jit/MIR.cpp
@@ -210,16 +210,29 @@ MaybeEmulatesUndefined(JSContext *cx, MD
     if (!types)
         return true;
 
     if (!types->maybeObject())
         return false;
     return types->hasObjectFlags(cx, types::OBJECT_FLAG_EMULATES_UNDEFINED);
 }
 
+static bool
+MaybeCallable(JSContext *cx, MDefinition *op)
+{
+    if (!op->mightBeType(MIRType_Object))
+        return false;
+
+    types::StackTypeSet *types = op->resultTypeSet();
+    if (!types)
+        return true;
+
+    return types->maybeCallable();
+}
+
 void
 MTest::infer(JSContext *cx)
 {
     JS_ASSERT(operandMightEmulateUndefined());
 
     if (!MaybeEmulatesUndefined(cx, getOperand(0)))
         markOperandCantEmulateUndefined();
 }
@@ -1870,24 +1883,41 @@ MTypeOf::foldsTo(bool useValueNumbers)
         type = JSTYPE_OBJECT;
         break;
       case MIRType_Undefined:
         type = JSTYPE_VOID;
         break;
       case MIRType_Boolean:
         type = JSTYPE_BOOLEAN;
         break;
+      case MIRType_Object:
+        if (!inputMaybeCallableOrEmulatesUndefined()) {
+            // Object is not callable and does not emulate undefined, so it's
+            // safe to fold to "object".
+            type = JSTYPE_OBJECT;
+            break;
+        }
+        // FALL THROUGH
       default:
         return this;
     }
 
     JSRuntime *rt = GetIonContext()->runtime;
     return MConstant::New(StringValue(TypeName(type, rt)));
 }
 
+void
+MTypeOf::infer(JSContext *cx)
+{
+    JS_ASSERT(inputMaybeCallableOrEmulatesUndefined());
+
+    if (!MaybeEmulatesUndefined(cx, input()) && !MaybeCallable(cx, input()))
+        markInputNotCallableOrEmulatesUndefined();
+}
+
 MBitAnd *
 MBitAnd::New(MDefinition *left, MDefinition *right)
 {
     return new MBitAnd(left, right);
 }
 
 MBitAnd *
 MBitAnd::NewAsmJS(MDefinition *left, MDefinition *right)
--- a/js/src/jit/MIR.h
+++ b/js/src/jit/MIR.h
@@ -2890,19 +2890,21 @@ class MBitNot
     void computeRange();
 };
 
 class MTypeOf
   : public MUnaryInstruction,
     public BoxInputsPolicy
 {
     MIRType inputType_;
+    bool inputMaybeCallableOrEmulatesUndefined_;
 
     MTypeOf(MDefinition *def, MIRType inputType)
-      : MUnaryInstruction(def), inputType_(inputType)
+      : MUnaryInstruction(def), inputType_(inputType),
+        inputMaybeCallableOrEmulatesUndefined_(true)
     {
         setResultType(MIRType_String);
         setMovable();
     }
 
   public:
     INSTRUCTION_HEADER(TypeOf)
 
@@ -2911,24 +2913,29 @@ class MTypeOf
     }
 
     TypePolicy *typePolicy() {
         return this;
     }
     MIRType inputType() const {
         return inputType_;
     }
+
     MDefinition *foldsTo(bool useValueNumbers);
+    void infer(JSContext *cx);
+
+    bool inputMaybeCallableOrEmulatesUndefined() const {
+        return inputMaybeCallableOrEmulatesUndefined_;
+    }
+    void markInputNotCallableOrEmulatesUndefined() {
+        inputMaybeCallableOrEmulatesUndefined_ = false;
+    }
 
     AliasSet getAliasSet() const {
-        if (inputType_ <= MIRType_String)
-            return AliasSet::None();
-
-        // For objects, typeof may invoke an effectful typeof hook.
-        return AliasSet::Store(AliasSet::Any);
+        return AliasSet::None();
     }
 };
 
 class MToId
   : public MBinaryInstruction,
     public BoxInputsPolicy
 {
     MToId(MDefinition *object, MDefinition *index)
@@ -3924,16 +3931,50 @@ class MFromCharCode
         return new MFromCharCode(code);
     }
 
     virtual AliasSet getAliasSet() const {
         return AliasSet::None();
     }
 };
 
+// Returns an object to use as |this| value. See also ComputeThis and
+// BoxNonStrictThis in Interpreter.h.
+class MComputeThis
+  : public MUnaryInstruction,
+    public BoxPolicy<0>
+{
+    MComputeThis(MDefinition *def)
+      : MUnaryInstruction(def)
+    {
+        setResultType(MIRType_Object);
+        setResultTypeSet(def->resultTypeSet());
+    }
+
+  public:
+    INSTRUCTION_HEADER(ComputeThis)
+
+    static MComputeThis *New(MDefinition *def) {
+        return new MComputeThis(def);
+    }
+
+    MDefinition *input() const {
+        return getOperand(0);
+    }
+    TypePolicy *typePolicy() {
+        return this;
+    }
+    bool possiblyCalls() const {
+        return true;
+    }
+
+    // Note: don't override getAliasSet: the thisObject hook can be
+    // effectful.
+};
+
 class MPhi MOZ_FINAL : public MDefinition, public InlineForwardListNode<MPhi>
 {
     js::Vector<MUse, 2, IonAllocPolicy> inputs_;
 
     uint32_t slot_;
     bool hasBackedgeType_;
     bool triedToSpecialize_;
     bool isIterator_;
--- a/js/src/jit/MOpcodes.h
+++ b/js/src/jit/MOpcodes.h
@@ -29,16 +29,17 @@ namespace jit {
     _(DefVar)                                                               \
     _(DefFun)                                                               \
     _(CreateThis)                                                           \
     _(CreateThisWithProto)                                                  \
     _(CreateThisWithTemplate)                                               \
     _(CreateArgumentsObject)                                                \
     _(GetArgumentsObjectArg)                                                \
     _(SetArgumentsObjectArg)                                                \
+    _(ComputeThis)                                                          \
     _(PrepareCall)                                                          \
     _(PassArg)                                                              \
     _(Call)                                                                 \
     _(ApplyArgs)                                                            \
     _(Bail)                                                                 \
     _(GetDynamicName)                                                       \
     _(FilterArguments)                                                      \
     _(CallDirectEval)                                                       \
--- a/js/src/jit/ParallelSafetyAnalysis.cpp
+++ b/js/src/jit/ParallelSafetyAnalysis.cpp
@@ -121,16 +121,17 @@ class ParallelSafetyVisitor : public MIn
     UNSAFE_OP(DefVar)
     UNSAFE_OP(DefFun)
     UNSAFE_OP(CreateThis)
     UNSAFE_OP(CreateThisWithTemplate)
     UNSAFE_OP(CreateThisWithProto)
     UNSAFE_OP(CreateArgumentsObject)
     UNSAFE_OP(GetArgumentsObjectArg)
     UNSAFE_OP(SetArgumentsObjectArg)
+    UNSAFE_OP(ComputeThis)
     SAFE_OP(PrepareCall)
     SAFE_OP(PassArg)
     CUSTOM_OP(Call)
     UNSAFE_OP(ApplyArgs)
     UNSAFE_OP(Bail)
     UNSAFE_OP(GetDynamicName)
     UNSAFE_OP(FilterArguments)
     UNSAFE_OP(CallDirectEval)
--- a/js/src/jit/VMFunctions.cpp
+++ b/js/src/jit/VMFunctions.cpp
@@ -118,16 +118,32 @@ CheckOverRecursed(JSContext *cx)
 
     if (cx->runtime()->interrupt)
         return InterruptCheck(cx);
 
     return true;
 }
 
 bool
+CheckOverRecursedWithExtra(JSContext *cx, uint32_t extra)
+{
+    // See |CheckOverRecursed| above.  This is a variant of that function which
+    // accepts an argument holding the extra stack space needed for the Baseline
+    // frame that's about to be pushed.
+    uint8_t spDummy;
+    uint8_t *checkSp = (&spDummy) - extra;
+    JS_CHECK_RECURSION_WITH_SP(cx, checkSp, return false);
+
+    if (cx->runtime()->interrupt)
+        return InterruptCheck(cx);
+
+    return true;
+}
+
+bool
 DefVarOrConst(JSContext *cx, HandlePropertyName dn, unsigned attrs, HandleObject scopeChain)
 {
     // Given the ScopeChain, extract the VarObj.
     RootedObject obj(cx, scopeChain);
     while (!obj->isVarObj())
         obj = obj->enclosingScope();
 
     return DefVarOrConstOperation(cx, obj, dn, attrs);
--- a/js/src/jit/VMFunctions.h
+++ b/js/src/jit/VMFunctions.h
@@ -573,16 +573,17 @@ class AutoDetectInvalidation
             cx_->runtime()->setIonReturnOverride(*rval_);
     }
 };
 
 bool InvokeFunction(JSContext *cx, HandleObject obj0, uint32_t argc, Value *argv, Value *rval);
 JSObject *NewGCThing(JSContext *cx, gc::AllocKind allocKind, size_t thingSize);
 
 bool CheckOverRecursed(JSContext *cx);
+bool CheckOverRecursedWithExtra(JSContext *cx, uint32_t extra);
 
 bool DefVarOrConst(JSContext *cx, HandlePropertyName dn, unsigned attrs, HandleObject scopeChain);
 bool SetConst(JSContext *cx, HandlePropertyName name, HandleObject scopeChain, HandleValue rval);
 bool InitProp(JSContext *cx, HandleObject obj, HandlePropertyName name, HandleValue value);
 
 template<bool Equal>
 bool LooselyEqual(JSContext *cx, MutableHandleValue lhs, MutableHandleValue rhs, bool *res);
 
--- a/js/src/jit/arm/MacroAssembler-arm.cpp
+++ b/js/src/jit/arm/MacroAssembler-arm.cpp
@@ -2584,26 +2584,34 @@ MacroAssemblerARMCompat::unboxDouble(con
 
 void
 MacroAssemblerARMCompat::unboxDouble(const Address &src, const FloatRegister &dest)
 {
     ma_vldr(Operand(src), dest);
 }
 
 void
-MacroAssemblerARMCompat::unboxString(const ValueOperand &operand, const Register &dest) {
+MacroAssemblerARMCompat::unboxString(const ValueOperand &operand, const Register &dest)
+{
     ma_mov(operand.payloadReg(), dest);
 }
 
 void
-MacroAssemblerARMCompat::unboxString(const Address &src, const Register &dest) {
+MacroAssemblerARMCompat::unboxString(const Address &src, const Register &dest)
+{
     ma_ldr(payloadOf(src), dest);
 }
 
 void
+MacroAssemblerARMCompat::unboxObject(const ValueOperand &src, const Register &dest)
+{
+    ma_mov(src.payloadReg(), dest);
+}
+
+void
 MacroAssemblerARMCompat::unboxValue(const ValueOperand &src, AnyRegister dest)
 {
     if (dest.isFloat()) {
         Label notInt32, end;
         branchTestInt32(Assembler::NotEqual, src, &notInt32);
         convertInt32ToDouble(src.payloadReg(), dest.fpu());
         ma_b(&end);
         bind(&notInt32);
--- a/js/src/jit/arm/MacroAssembler-arm.h
+++ b/js/src/jit/arm/MacroAssembler-arm.h
@@ -715,16 +715,17 @@ class MacroAssemblerARMCompat : public M
     void unboxInt32(const ValueOperand &operand, const Register &dest);
     void unboxInt32(const Address &src, const Register &dest);
     void unboxBoolean(const ValueOperand &operand, const Register &dest);
     void unboxBoolean(const Address &src, const Register &dest);
     void unboxDouble(const ValueOperand &operand, const FloatRegister &dest);
     void unboxDouble(const Address &src, const FloatRegister &dest);
     void unboxString(const ValueOperand &operand, const Register &dest);
     void unboxString(const Address &src, const Register &dest);
+    void unboxObject(const ValueOperand &src, const Register &dest);
     void unboxValue(const ValueOperand &src, AnyRegister dest);
     void unboxPrivate(const ValueOperand &src, Register dest);
 
     void notBoolean(const ValueOperand &val) {
         ma_eor(Imm32(1), val.payloadReg());
     }
 
     // boxing code
--- a/js/src/jit/arm/Trampoline-arm.cpp
+++ b/js/src/jit/arm/Trampoline-arm.cpp
@@ -233,16 +233,35 @@ IonRuntime::generateEnterJIT(JSContext *
         // Push previous frame pointer.
         masm.push(r11);
 
         // Reserve frame.
         Register framePtr = r11;
         masm.subPtr(Imm32(BaselineFrame::Size()), sp);
         masm.mov(sp, framePtr);
 
+#ifdef XP_WIN
+        // Can't push large frames blindly on windows.  Touch frame memory incrementally.
+        masm.ma_lsl(Imm32(3), numStackValues, scratch);
+        masm.subPtr(scratch, framePtr);
+        {
+            masm.ma_sub(sp, Imm32(WINDOWS_BIG_FRAME_TOUCH_INCREMENT), scratch);
+
+            Label touchFrameLoop;
+            Label touchFrameLoopEnd;
+            masm.bind(&touchFrameLoop);
+            masm.branchPtr(Assembler::Below, scratch, framePtr, &touchFrameLoopEnd);
+            masm.store32(Imm32(0), Address(scratch, 0));
+            masm.subPtr(Imm32(WINDOWS_BIG_FRAME_TOUCH_INCREMENT), scratch);
+            masm.jump(&touchFrameLoop);
+            masm.bind(&touchFrameLoopEnd);
+        }
+        masm.mov(sp, framePtr);
+#endif
+
         // Reserve space for locals and stack values.
         masm.ma_lsl(Imm32(3), numStackValues, scratch);
         masm.ma_sub(sp, scratch, sp);
 
         // Enter exit frame.
         masm.addPtr(Imm32(BaselineFrame::Size() + BaselineFrame::FramePointerOffset), scratch);
         masm.makeFrameDescriptor(scratch, IonFrame_BaselineJS);
         masm.push(scratch);
--- a/js/src/jit/shared/BaselineCompiler-shared.cpp
+++ b/js/src/jit/shared/BaselineCompiler-shared.cpp
@@ -26,17 +26,17 @@ BaselineCompilerShared::BaselineCompiler
     pcMappingEntries_(),
     icLoadLabels_(),
     pushedBeforeCall_(0),
     inCall_(false),
     spsPushToggleOffset_()
 { }
 
 bool
-BaselineCompilerShared::callVM(const VMFunction &fun)
+BaselineCompilerShared::callVM(const VMFunction &fun, bool preInitialize)
 {
     IonCode *code = cx->runtime()->ionRuntime()->getVMWrapper(fun);
     if (!code)
         return false;
 
 #ifdef DEBUG
     // Assert prepareVMCall() has been called.
     JS_ASSERT(inCall_);
@@ -45,18 +45,19 @@ BaselineCompilerShared::callVM(const VMF
 
     // Compute argument size. Note that this include the size of the frame pointer
     // pushed by prepareVMCall.
     uint32_t argSize = fun.explicitStackSlots() * sizeof(void *) + sizeof(void *);
 
     // Assert all arguments were pushed.
     JS_ASSERT(masm.framePushed() - pushedBeforeCall_ == argSize);
 
+    uint32_t frameVals = preInitialize ? 0 : frame.nlocals() + frame.stackDepth();
     uint32_t frameSize = BaselineFrame::FramePointerOffset + BaselineFrame::Size() +
-        (frame.nlocals() + frame.stackDepth()) * sizeof(Value);
+                         (frameVals * sizeof(Value));
 
     masm.store32(Imm32(frameSize), Address(BaselineFrameReg, BaselineFrame::reverseOffsetOfFrameSize()));
 
     uint32_t descriptor = MakeFrameDescriptor(frameSize + argSize, IonFrame_BaselineJS);
     masm.push(Imm32(descriptor));
 
     // Perform the call.
     masm.call(code);
--- a/js/src/jit/shared/BaselineCompiler-shared.h
+++ b/js/src/jit/shared/BaselineCompiler-shared.h
@@ -123,17 +123,17 @@ class BaselineCompilerShared
 
         // Ensure everything is synced.
         frame.syncStack(0);
 
         // Save the frame pointer.
         masm.Push(BaselineFrameReg);
     }
 
-    bool callVM(const VMFunction &fun);
+    bool callVM(const VMFunction &fun, bool preInitialize=false);
 
   public:
     BytecodeAnalysis &analysis() {
         return analysis_;
     }
 };
 
 } // namespace jit
--- a/js/src/jit/x64/Trampoline-x64.cpp
+++ b/js/src/jit/x64/Trampoline-x64.cpp
@@ -168,16 +168,37 @@ IonRuntime::generateEnterJIT(JSContext *
         masm.push(scratch);
         masm.push(rbp);
 
         // Reserve frame.
         Register framePtr = rbp;
         masm.subPtr(Imm32(BaselineFrame::Size()), rsp);
         masm.mov(rsp, framePtr);
 
+#ifdef XP_WIN
+        // Can't push large frames blindly on windows.  Touch frame memory incrementally.
+        masm.mov(numStackValues, scratch);
+        masm.lshiftPtr(Imm32(3), scratch);
+        masm.subPtr(scratch, framePtr);
+        {
+            masm.movePtr(rsp, scratch);
+            masm.subPtr(Imm32(WINDOWS_BIG_FRAME_TOUCH_INCREMENT), scratch);
+
+            Label touchFrameLoop;
+            Label touchFrameLoopEnd;
+            masm.bind(&touchFrameLoop);
+            masm.branchPtr(Assembler::Below, scratch, framePtr, &touchFrameLoopEnd);
+            masm.store32(Imm32(0), Address(scratch, 0));
+            masm.subPtr(Imm32(WINDOWS_BIG_FRAME_TOUCH_INCREMENT), scratch);
+            masm.jump(&touchFrameLoop);
+            masm.bind(&touchFrameLoopEnd);
+        }
+        masm.mov(rsp, framePtr);
+#endif
+
         // Reserve space for locals and stack values.
         Register valuesSize = regs.takeAny();
         masm.mov(numStackValues, valuesSize);
         masm.shll(Imm32(3), valuesSize);
         masm.subPtr(valuesSize, rsp);
 
         // Enter exit frame.
         masm.addPtr(Imm32(BaselineFrame::Size() + BaselineFrame::FramePointerOffset), valuesSize);
--- a/js/src/jit/x86/MacroAssembler-x86.h
+++ b/js/src/jit/x86/MacroAssembler-x86.h
@@ -742,16 +742,20 @@ class MacroAssemblerX86 : public MacroAs
         movsd(Operand(src), dest);
     }
     void unboxBoolean(const ValueOperand &src, const Register &dest) {
         movl(src.payloadReg(), dest);
     }
     void unboxBoolean(const Address &src, const Register &dest) {
         movl(payloadOf(src), dest);
     }
+    void unboxObject(const ValueOperand &src, const Register &dest) {
+        if (src.payloadReg() != dest)
+            movl(src.payloadReg(), dest);
+    }
     void unboxDouble(const ValueOperand &src, const FloatRegister &dest) {
         JS_ASSERT(dest != ScratchFloatReg);
         if (Assembler::HasSSE41()) {
             movd(src.payloadReg(), dest);
             pinsrd(src.typeReg(), dest);
         } else {
             movd(src.payloadReg(), dest);
             movd(src.typeReg(), ScratchFloatReg);
--- a/js/src/jit/x86/Trampoline-x86.cpp
+++ b/js/src/jit/x86/Trampoline-x86.cpp
@@ -161,16 +161,37 @@ IonRuntime::generateEnterJIT(JSContext *
         masm.push(scratch);
         masm.push(ebp);
 
         // Reserve frame.
         Register framePtr = ebp;
         masm.subPtr(Imm32(BaselineFrame::Size()), esp);
         masm.mov(esp, framePtr);
 
+#ifdef XP_WIN
+        // Can't push large frames blindly on windows.  Touch frame memory incrementally.
+        masm.mov(numStackValues, scratch);
+        masm.shll(Imm32(3), scratch);
+        masm.subPtr(scratch, framePtr);
+        {
+            masm.movePtr(esp, scratch);
+            masm.subPtr(Imm32(WINDOWS_BIG_FRAME_TOUCH_INCREMENT), scratch);
+
+            Label touchFrameLoop;
+            Label touchFrameLoopEnd;
+            masm.bind(&touchFrameLoop);
+            masm.branchPtr(Assembler::Below, scratch, framePtr, &touchFrameLoopEnd);
+            masm.store32(Imm32(0), Address(scratch, 0));
+            masm.subPtr(Imm32(WINDOWS_BIG_FRAME_TOUCH_INCREMENT), scratch);
+            masm.jump(&touchFrameLoop);
+            masm.bind(&touchFrameLoopEnd);
+        }
+        masm.mov(esp, framePtr);
+#endif
+
         // Reserve space for locals and stack values.
         masm.mov(numStackValues, scratch);
         masm.shll(Imm32(3), scratch);
         masm.subPtr(scratch, esp);
 
         // Enter exit frame.
         masm.addPtr(Imm32(BaselineFrame::Size() + BaselineFrame::FramePointerOffset), scratch);
         masm.makeFrameDescriptor(scratch, IonFrame_BaselineJS);
--- a/js/src/jsapi.cpp
+++ b/js/src/jsapi.cpp
@@ -514,17 +514,17 @@ JS_ValueToBoolean(JSContext *cx, jsval v
 
 JS_PUBLIC_API(JSType)
 JS_TypeOfValue(JSContext *cx, jsval valueArg)
 {
     RootedValue value(cx, valueArg);
     AssertHeapIsIdle(cx);
     CHECK_REQUEST(cx);
     assertSameCompartment(cx, value);
-    return TypeOfValue(cx, value);
+    return TypeOfValue(value);
 }
 
 JS_PUBLIC_API(const char *)
 JS_GetTypeName(JSContext *cx, JSType type)
 {
     if ((unsigned)type >= (unsigned)JSTYPE_LIMIT)
         return NULL;
     return TypeStrings[type];
--- a/js/src/jsatominlines.h
+++ b/js/src/jsatominlines.h
@@ -182,22 +182,16 @@ TypeName(JSType type, JSRuntime *rt)
     JS_STATIC_ASSERT(offsetof(JSAtomState, undefined) +
                      JSTYPE_LIMIT * sizeof(FixedHeapPtr<PropertyName>) <=
                      sizeof(JSAtomState));
     JS_STATIC_ASSERT(JSTYPE_VOID == 0);
     return (&rt->atomState.undefined)[type];
 }
 
 inline Handle<PropertyName*>
-TypeName(JSType type, JSContext *cx)
-{
-    return TypeName(type, cx->runtime());
-}
-
-inline Handle<PropertyName*>
 ClassName(JSProtoKey key, JSAtomState &atomState)
 {
     JS_ASSERT(key < JSProto_LIMIT);
     JS_STATIC_ASSERT(offsetof(JSAtomState, Null) +
                      JSProto_LIMIT * sizeof(FixedHeapPtr<PropertyName>) <=
                      sizeof(JSAtomState));
     JS_STATIC_ASSERT(JSProto_Null == 0);
     return (&atomState.Null)[key];
--- a/js/src/jsfriendapi.h
+++ b/js/src/jsfriendapi.h
@@ -636,16 +636,24 @@ GetNativeStackLimit(JSContext *cx)
 
 #define JS_CHECK_RECURSION_WITH_SP_DONT_REPORT(cx, sp, onerror)                 \
     JS_BEGIN_MACRO                                                              \
         if (!JS_CHECK_STACK_SIZE(js::GetNativeStackLimit(cx), sp)) {            \
             onerror;                                                            \
         }                                                                       \
     JS_END_MACRO
 
+#define JS_CHECK_RECURSION_WITH_SP(cx, sp, onerror)                             \
+    JS_BEGIN_MACRO                                                              \
+        if (!JS_CHECK_STACK_SIZE(js::GetNativeStackLimit(cx), sp)) {            \
+            js_ReportOverRecursed(cx);                                          \
+            onerror;                                                            \
+        }                                                                       \
+    JS_END_MACRO
+
 #define JS_CHECK_CHROME_RECURSION(cx, onerror)                                  \
     JS_BEGIN_MACRO                                                              \
         int stackDummy_;                                                        \
         if (!JS_CHECK_STACK_SIZE_WITH_TOLERANCE(js::GetNativeStackLimit(cx),    \
                                                 &stackDummy_,                   \
                                                 1024 * sizeof(size_t)))         \
         {                                                                       \
             js_ReportOverRecursed(cx);                                          \
--- a/js/src/jsinfer.cpp
+++ b/js/src/jsinfer.cpp
@@ -1101,16 +1101,42 @@ StackTypeSet::isDOMClass()
 
         if (!(clasp->flags & JSCLASS_IS_DOMJSCLASS))
             return false;
     }
 
     return true;
 }
 
+bool
+StackTypeSet::maybeCallable()
+{
+    if (!maybeObject())
+        return false;
+
+    if (unknownObject())
+        return true;
+
+    unsigned count = getObjectCount();
+    for (unsigned i = 0; i < count; i++) {
+        Class *clasp;
+        if (JSObject *object = getSingleObject(i))
+            clasp = object->getClass();
+        else if (TypeObject *object = getTypeObject(i))
+            clasp = object->clasp;
+        else
+            continue;
+
+        if (clasp->isCallable())
+            return true;
+    }
+
+    return false;
+}
+
 JSObject *
 StackTypeSet::getCommonPrototype()
 {
     if (unknownObject())
         return NULL;
 
     JSObject *proto = NULL;
     unsigned count = getObjectCount();
--- a/js/src/jsinfer.h
+++ b/js/src/jsinfer.h
@@ -620,16 +620,19 @@ class StackTypeSet : public TypeSet
     JSObject *getCommonPrototype();
 
     /* Get the typed array type of all objects in this set, or TypedArrayObject::TYPE_MAX. */
     int getTypedArrayType();
 
     /* Whether all objects have JSCLASS_IS_DOMJSCLASS set. */
     bool isDOMClass();
 
+    /* Whether clasp->isCallable() is true for one or more objects in this set. */
+    bool maybeCallable();
+
     /* Get the single value which can appear in this type set, otherwise NULL. */
     JSObject *getSingleton();
 
     /* Whether any objects in the type set needs a barrier on id. */
     bool propertyNeedsBarrier(JSContext *cx, jsid id);
 
     /*
      * Whether this set contains all types in other, except (possibly) the
--- a/js/src/jsobj.cpp
+++ b/js/src/jsobj.cpp
@@ -5054,26 +5054,16 @@ js::CheckAccess(JSContext *cx, JSObject 
      * unintended) runtime sharing across trust boundaries.
      */
     JSCheckAccessOp check = pobj->getClass()->checkAccess;
     if (!check)
         check = cx->runtime()->securityCallbacks->checkObjectAccess;
     return !check || check(cx, pobj, id, mode, vp);
 }
 
-JSType
-baseops::TypeOf(JSContext *cx, HandleObject obj)
-{
-    if (EmulatesUndefined(obj))
-        return JSTYPE_VOID;
-    if (obj->isCallable())
-        return JSTYPE_FUNCTION;
-    return JSTYPE_OBJECT;
-}
-
 bool
 js::IsDelegate(JSContext *cx, HandleObject obj, const js::Value &v, bool *result)
 {
     if (v.isPrimitive()) {
         *result = false;
         return true;
     }
     RootedObject obj2(cx, &v.toObject());
@@ -5138,41 +5128,30 @@ js_GetClassPrototype(ExclusiveContext *c
         }
     }
 
     protop.set(v.get().isObject() ? &v.get().toObject() : NULL);
     return true;
 }
 
 JSObject *
-PrimitiveToObject(JSContext *cx, const Value &v)
+js::PrimitiveToObject(JSContext *cx, const Value &v)
 {
     if (v.isString()) {
         Rooted<JSString*> str(cx, v.toString());
         return StringObject::create(cx, str);
     }
     if (v.isNumber())
         return NumberObject::create(cx, v.toNumber());
 
     JS_ASSERT(v.isBoolean());
     return BooleanObject::create(cx, v.toBoolean());
 }
 
 bool
-js_PrimitiveToObject(JSContext *cx, Value *vp)
-{
-    JSObject *obj = PrimitiveToObject(cx, *vp);
-    if (!obj)
-        return false;
-
-    vp->setObject(*obj);
-    return true;
-}
-
-bool
 js_ValueToObjectOrNull(JSContext *cx, const Value &v, MutableHandleObject objp)
 {
     JSObject *obj;
 
     if (v.isObjectOrNull()) {
         obj = v.toObjectOrNull();
     } else if (v.isUndefined()) {
         obj = NULL;
--- a/js/src/jsobj.h
+++ b/js/src/jsobj.h
@@ -126,19 +126,16 @@ SetPropertyHelper(JSContext *cx, HandleO
     Rooted<jsid> id(cx, NameToId(name));
     return SetPropertyHelper(cx, obj, receiver, id, defineHow, vp, strict);
 }
 
 extern bool
 SetElementHelper(JSContext *cx, HandleObject obj, HandleObject Receiver, uint32_t index,
                  unsigned defineHow, MutableHandleValue vp, bool strict);
 
-extern JSType
-TypeOf(JSContext *cx, HandleObject obj);
-
 extern bool
 GetAttributes(JSContext *cx, HandleObject obj, HandleId id, unsigned *attrsp);
 
 extern bool
 SetAttributes(JSContext *cx, HandleObject obj, HandleId id, unsigned *attrsp);
 
 extern bool
 DeleteProperty(JSContext *cx, HandleObject obj, HandlePropertyName name, bool *succeeded);
@@ -1369,24 +1366,21 @@ CheckAccess(JSContext *cx, JSObject *obj
             MutableHandleValue v, unsigned *attrsp);
 
 extern bool
 IsDelegate(JSContext *cx, HandleObject obj, const Value &v, bool *result);
 
 bool
 GetObjectElementOperationPure(ThreadSafeContext *cx, JSObject *obj, const Value &prop, Value *vp);
 
-} /* namespace js */
+/* Wrap boolean, number or string as Boolean, Number or String object. */
+extern JSObject *
+PrimitiveToObject(JSContext *cx, const Value &v);
 
-/*
- * Wrap boolean, number or string as Boolean, Number or String object.
- * *vp must not be an object, null or undefined.
- */
-extern bool
-js_PrimitiveToObject(JSContext *cx, js::Value *vp);
+} /* namespace js */
 
 extern bool
 js_ValueToObjectOrNull(JSContext *cx, const js::Value &v, JS::MutableHandleObject objp);
 
 /* Throws if v could not be converted to an object. */
 extern JSObject *
 js_ValueToNonNullObject(JSContext *cx, const js::Value &v);
 
--- a/js/src/vm/Interpreter-inl.h
+++ b/js/src/vm/Interpreter-inl.h
@@ -43,21 +43,22 @@ ComputeThis(JSContext *cx, AbstractFrame
          * eval's frame will get the wrapper, but the function's frame will not. To prevent
          * this, we always wrap a function's |this| before pushing an eval frame, and should
          * thus never see an unwrapped primitive in a non-strict eval function frame. Null
          * and undefined |this| values will unwrap to the same object in the function and
          * eval frames, so are not required to be wrapped.
          */
         JS_ASSERT_IF(frame.isEvalFrame(), thisv.isUndefined() || thisv.isNull());
     }
-    bool modified;
-    if (!BoxNonStrictThis(cx, &thisv, &modified))
+
+    JSObject *thisObj = BoxNonStrictThis(cx, thisv);
+    if (!thisObj)
         return false;
 
-    frame.thisValue() = thisv;
+    frame.thisValue().setObject(*thisObj);
     return true;
 }
 
 /*
  * Every possible consumer of MagicValue(JS_OPTIMIZED_ARGUMENTS) (as determined
  * by ScriptAnalysis::needsArgsObj) must check for these magic values and, when
  * one is received, act as if the value were the function's ArgumentsObject.
  * Additionally, it is possible that, after 'arguments' was copied into a
@@ -465,20 +466,27 @@ GetElementOperation(JSContext *cx, JSOp 
     bool isObject = lref.isObject();
     JSObject *obj = ToObjectFromStack(cx, lref);
     if (!obj)
         return false;
     return GetObjectElementOperation(cx, op, obj, isObject, rref, res);
 }
 
 static JS_ALWAYS_INLINE JSString *
-TypeOfOperation(JSContext *cx, HandleValue v)
+TypeOfOperation(const Value &v, JSRuntime *rt)
 {
-    JSType type = JS_TypeOfValue(cx, v);
-    return TypeName(type, cx);
+    JSType type = js::TypeOfValue(v);
+    return TypeName(type, rt);
+}
+
+static inline JSString *
+TypeOfObjectOperation(JSObject *obj, JSRuntime *rt)
+{
+    JSType type = js::TypeOfObject(obj);
+    return TypeName(type, rt);
 }
 
 static JS_ALWAYS_INLINE bool
 InitElemOperation(JSContext *cx, HandleObject obj, HandleValue idval, HandleValue val)
 {
     JS_ASSERT(!val.isMagic(JS_ELEMENTS_HOLE));
 
     RootedId id(cx);
--- a/js/src/vm/Interpreter.cpp
+++ b/js/src/vm/Interpreter.cpp
@@ -101,43 +101,34 @@ LooseEqualityOp(JSContext *cx, FrameRegs
     if (!LooselyEqual(cx, lval, rval, &cond))
         return false;
     cond = (cond == Eq);
     regs.sp--;
     regs.sp[-1].setBoolean(cond);
     return true;
 }
 
-bool
-js::BoxNonStrictThis(JSContext *cx, MutableHandleValue thisv, bool *modified)
+JSObject *
+js::BoxNonStrictThis(JSContext *cx, HandleValue thisv)
 {
     /*
      * Check for SynthesizeFrame poisoning and fast constructors which
      * didn't check their callee properly.
      */
     JS_ASSERT(!thisv.isMagic());
-    *modified = false;
 
     if (thisv.isNullOrUndefined()) {
         Rooted<GlobalObject*> global(cx, cx->global());
-        JSObject *thisp = JSObject::thisObject(cx, global);
-        if (!thisp)
-            return false;
-        thisv.set(ObjectValue(*thisp));
-        *modified = true;
-        return true;
+        return JSObject::thisObject(cx, global);
     }
 
-    if (!thisv.isObject()) {
-        if (!js_PrimitiveToObject(cx, thisv.address()))
-            return false;
-        *modified = true;
-    }
-
-    return true;
+    if (thisv.isObject())
+        return &thisv.toObject();
+
+    return PrimitiveToObject(cx, thisv);
 }
 
 /*
  * ECMA requires "the global object", but in embeddings such as the browser,
  * which have multiple top-level objects (windows, frames, etc. in the DOM),
  * we prefer fun's parent.  An example that causes this code to run:
  *
  *   // in window w1
@@ -152,30 +143,28 @@ js::BoxNonStrictThis(JSContext *cx, Muta
  */
 bool
 js::BoxNonStrictThis(JSContext *cx, const CallReceiver &call)
 {
     /*
      * Check for SynthesizeFrame poisoning and fast constructors which
      * didn't check their callee properly.
      */
-    RootedValue thisv(cx, call.thisv());
-    JS_ASSERT(!thisv.isMagic());
+    JS_ASSERT(!call.thisv().isMagic());
 
 #ifdef DEBUG
     JSFunction *fun = call.callee().is<JSFunction>() ? &call.callee().as<JSFunction>() : NULL;
     JS_ASSERT_IF(fun && fun->isInterpreted(), !fun->strict());
 #endif
 
-    bool modified;
-    if (!BoxNonStrictThis(cx, &thisv, &modified))
+    JSObject *thisObj = BoxNonStrictThis(cx, call.thisv());
+    if (!thisObj)
         return false;
-    if (modified)
-        call.setThis(thisv);
-
+
+    call.setThis(ObjectValue(*thisObj));
     return true;
 }
 
 #if JS_HAS_NO_SUCH_METHOD
 
 static const uint32_t JSSLOT_FOUND_FUNCTION = 0;
 static const uint32_t JSSLOT_SAVED_ID = 1;
 
@@ -806,31 +795,38 @@ js::SameValue(JSContext *cx, const Value
     if (IsNaN(v1) && IsNaN(v2)) {
         *same = true;
         return true;
     }
     return StrictlyEqual(cx, v1, v2, same);
 }
 
 JSType
-js::TypeOfValue(JSContext *cx, const Value &vref)
+js::TypeOfObject(JSObject *obj)
 {
-    Value v = vref;
+    if (EmulatesUndefined(obj))
+        return JSTYPE_VOID;
+    if (obj->isCallable())
+        return JSTYPE_FUNCTION;
+    return JSTYPE_OBJECT;
+}
+
+JSType
+js::TypeOfValue(const Value &v)
+{
     if (v.isNumber())
         return JSTYPE_NUMBER;
     if (v.isString())
         return JSTYPE_STRING;
     if (v.isNull())
         return JSTYPE_OBJECT;
     if (v.isUndefined())
         return JSTYPE_VOID;
-    if (v.isObject()) {
-        RootedObject obj(cx, &v.toObject());
-        return baseops::TypeOf(cx, obj);
-    }
+    if (v.isObject())
+        return TypeOfObject(&v.toObject());
     JS_ASSERT(v.isBoolean());
     return JSTYPE_BOOLEAN;
 }
 
 /*
  * Enter the new with scope using an object at sp[-1] and associate the depth
  * of the with block with sp + stackIndex.
  */
@@ -2268,18 +2264,17 @@ BEGIN_CASE(JSOP_TOID)
     if (!ToIdOperation(cx, script, regs.pc, objval, idval, res))
         goto error;
 }
 END_CASE(JSOP_TOID)
 
 BEGIN_CASE(JSOP_TYPEOFEXPR)
 BEGIN_CASE(JSOP_TYPEOF)
 {
-    HandleValue ref = regs.stackHandleAt(-1);
-    regs.sp[-1].setString(TypeOfOperation(cx, ref));
+    regs.sp[-1].setString(TypeOfOperation(regs.sp[-1], rt));
 }
 END_CASE(JSOP_TYPEOF)
 
 BEGIN_CASE(JSOP_VOID)
     regs.sp[-1].setUndefined();
 END_CASE(JSOP_VOID)
 
 BEGIN_CASE(JSOP_THIS)
--- a/js/src/vm/Interpreter.h
+++ b/js/src/vm/Interpreter.h
@@ -79,18 +79,18 @@ DebugExceptionUnwind(JSContext *cx, Abst
  * For a given |call|, convert null/undefined |this| into the global object for
  * the callee and replace other primitives with boxed versions. This assumes
  * that call.callee() is not strict mode code. This is the special/slow case of
  * ComputeThis.
  */
 extern bool
 BoxNonStrictThis(JSContext *cx, const CallReceiver &call);
 
-extern bool
-BoxNonStrictThis(JSContext *cx, MutableHandleValue thisv, bool *modified);
+extern JSObject *
+BoxNonStrictThis(JSContext *cx, HandleValue thisv);
 
 /*
  * Ensure that fp->thisValue() is the correct value of |this| for the scripted
  * call represented by |fp|. ComputeThis is necessary because fp->thisValue()
  * may be set to 'undefined' when 'this' should really be the global object (as
  * an optimization to avoid global-this computation).
  */
 inline bool
@@ -303,17 +303,20 @@ StrictlyEqual(JSContext *cx, const Value
 extern bool
 LooselyEqual(JSContext *cx, const Value &lval, const Value &rval, bool *equal);
 
 /* === except that NaN is the same as NaN and -0 is not the same as +0. */
 extern bool
 SameValue(JSContext *cx, const Value &v1, const Value &v2, bool *same);
 
 extern JSType
-TypeOfValue(JSContext *cx, const Value &v);
+TypeOfObject(JSObject *obj);
+
+extern JSType
+TypeOfValue(const Value &v);
 
 extern bool
 HasInstance(JSContext *cx, HandleObject obj, HandleValue v, bool *bp);
 
 /* Unwind block and scope chains to match the given depth. */
 extern void
 UnwindScope(JSContext *cx, AbstractFramePtr frame, uint32_t stackDepth);
 
--- a/js/src/vm/StructuredClone.cpp
+++ b/js/src/vm/StructuredClone.cpp
@@ -809,16 +809,27 @@ JSStructuredCloneWriter::traverseObject(
     if (!objs.append(ObjectValue(*obj)) || !counts.append(count))
         return false;
     checkStack();
 
     /* Write the header for obj. */
     return out.writePair(obj->is<ArrayObject>() ? SCTAG_ARRAY_OBJECT : SCTAG_OBJECT_OBJECT, 0);
 }
 
+static bool
+PrimitiveToObject(JSContext *cx, Value *vp)
+{
+    JSObject *obj = PrimitiveToObject(cx, *vp);
+    if (!obj)
+        return false;
+
+    vp->setObject(*obj);
+    return true;
+}
+
 bool
 JSStructuredCloneWriter::startWrite(const Value &v)
 {
     assertSameCompartment(context(), v);
 
     if (v.isString()) {
         return writeString(SCTAG_STRING, v.toString());
     } else if (v.isNumber()) {
@@ -1174,37 +1185,37 @@ JSStructuredCloneReader::startRead(Value
 
       case SCTAG_UNDEFINED:
         vp->setUndefined();
         break;
 
       case SCTAG_BOOLEAN:
       case SCTAG_BOOLEAN_OBJECT:
         vp->setBoolean(!!data);
-        if (tag == SCTAG_BOOLEAN_OBJECT && !js_PrimitiveToObject(context(), vp))
+        if (tag == SCTAG_BOOLEAN_OBJECT && !PrimitiveToObject(context(), vp))
             return false;
         break;
 
       case SCTAG_STRING:
       case SCTAG_STRING_OBJECT: {
         JSString *str = readString(data);
         if (!str)
             return false;
         vp->setString(str);
-        if (tag == SCTAG_STRING_OBJECT && !js_PrimitiveToObject(context(), vp))
+        if (tag == SCTAG_STRING_OBJECT && !PrimitiveToObject(context(), vp))
             return false;
         break;
       }
 
       case SCTAG_NUMBER_OBJECT: {
         double d;
         if (!in.readDouble(&d) || !checkDouble(d))
             return false;
         vp->setDouble(d);
-        if (!js_PrimitiveToObject(context(), vp))
+        if (!PrimitiveToObject(context(), vp))
             return false;
         break;
       }
 
       case SCTAG_DATE_OBJECT: {
         double d;
         if (!in.readDouble(&d) || !checkDouble(d))
             return false;
new file mode 100644
--- /dev/null
+++ b/js/xpconnect/crashtests/905523.html
@@ -0,0 +1,24904 @@
+<html>
+<script>
+
+// This will crash once we call it at the end of this file.
+function __Z30TestFunc_TestFileNormalizePathR4Test($0) {
+ var label = 0;
+ var sp  = STACKTOP; STACKTOP = (STACKTOP + 10320)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
+ label = 1; 
+ while(1) {
+ switch(label) {
+  case 1: 
+   var $2;
+   var $3;
+   var $4;
+   var $5;
+   var $6;
+   var $7;
+   var $8;
+   var $9;
+   var $10;
+   var $11;
+   var $12;
+   var $13;
+   var $14;
+   var $15;
+   var $16;
+   var $17;
+   var $18;
+   var $19;
+   var $20;
+   var $21;
+   var $22;
+   var $23;
+   var $24;
+   var $25;
+   var $26;
+   var $27;
+   var $28;
+   var $29;
+   var $30;
+   var $31;
+   var $32;
+   var $__a_i_i_i1_i_i_i576;
+   var $__i_i_i_i2_i_i_i577;
+   var $33;
+   var $34;
+   var $35;
+   var $36;
+   var $37;
+   var $38;
+   var $39;
+   var $40;
+   var $41;
+   var $__a_i_i_i_i_i_i578;
+   var $__i_i_i_i_i_i_i579;
+   var $42;
+   var $43;
+   var $44;
+   var $45;
+   var $46;
+   var $47;
+   var $48;
+   var $49;
+   var $50;
+   var $51;
+   var $52=sp;
+   var $53;
+   var $54;
+   var $55;
+   var $56;
+   var $57;
+   var $58;
+   var $59;
+   var $60;
+   var $61;
+   var $62;
+   var $63;
+   var $64;
+   var $65;
+   var $66;
+   var $67;
+   var $68;
+   var $69;
+   var $70;
+   var $71;
+   var $72;
+   var $73;
+   var $74;
+   var $75;
+   var $76;
+   var $77;
+   var $78;
+   var $79;
+   var $80;
+   var $81;
+   var $82;
+   var $83;
+   var $84;
+   var $85;
+   var $86;
+   var $87;
+   var $88;
+   var $89;
+   var $90;
+   var $91;
+   var $__a_i_i_i1_i_i_i563;
+   var $__i_i_i_i2_i_i_i564;
+   var $92;
+   var $93;
+   var $94;
+   var $95;
+   var $96;
+   var $97;
+   var $98;
+   var $99;
+   var $100;
+   var $__a_i_i_i_i_i_i565;
+   var $__i_i_i_i_i_i_i566;
+   var $101;
+   var $102;
+   var $103;
+   var $104;
+   var $105;
+   var $106;
+   var $107;
+   var $108;
+   var $109;
+   var $110;
+   var $111=(sp)+(16);
+   var $112;
+   var $113;
+   var $114;
+   var $115;
+   var $116;
+   var $117;
+   var $118;
+   var $119;
+   var $120;
+   var $121;
+   var $122;
+   var $123;
+   var $124;
+   var $125;
+   var $126;
+   var $127;
+   var $128;
+   var $129;
+   var $130;
+   var $131;
+   var $132;
+   var $133;
+   var $134;
+   var $135;
+   var $136;
+   var $137;
+   var $138;
+   var $139;
+   var $140;
+   var $141;
+   var $142;
+   var $143;
+   var $144;
+   var $145;
+   var $146;
+   var $147;
+   var $148;
+   var $149;
+   var $150;
+   var $__a_i_i_i1_i_i_i550;
+   var $__i_i_i_i2_i_i_i551;
+   var $151;
+   var $152;
+   var $153;
+   var $154;
+   var $155;
+   var $156;
+   var $157;
+   var $158;
+   var $159;
+   var $__a_i_i_i_i_i_i552;
+   var $__i_i_i_i_i_i_i553;
+   var $160;
+   var $161;
+   var $162;
+   var $163;
+   var $164;
+   var $165;
+   var $166;
+   var $167;
+   var $168;
+   var $169;
+   var $170=(sp)+(32);
+   var $171;
+   var $172;
+   var $173;
+   var $174;
+   var $175;
+   var $176;
+   var $177;
+   var $178;
+   var $179;
+   var $180;
+   var $181;
+   var $182;
+   var $183;
+   var $184;
+   var $185;
+   var $186;
+   var $187;
+   var $188;
+   var $189;
+   var $190;
+   var $191;
+   var $192;
+   var $193;
+   var $194;
+   var $195;
+   var $196;
+   var $197;
+   var $198;
+   var $199;
+   var $200;
+   var $201;
+   var $202;
+   var $203;
+   var $204;
+   var $205;
+   var $206;
+   var $207;
+   var $208;
+   var $209;
+   var $__a_i_i_i1_i_i_i537;
+   var $__i_i_i_i2_i_i_i538;
+   var $210;
+   var $211;
+   var $212;
+   var $213;
+   var $214;
+   var $215;
+   var $216;
+   var $217;
+   var $218;
+   var $__a_i_i_i_i_i_i539;
+   var $__i_i_i_i_i_i_i540;
+   var $219;
+   var $220;
+   var $221;
+   var $222;
+   var $223;
+   var $224;
+   var $225;
+   var $226;
+   var $227;
+   var $228;
+   var $229=(sp)+(48);
+   var $230;
+   var $231;
+   var $232;
+   var $233;
+   var $234;
+   var $235;
+   var $236;
+   var $237;
+   var $238;
+   var $239;
+   var $240;
+   var $241;
+   var $242;
+   var $243;
+   var $244;
+   var $245;
+   var $246;
+   var $247;
+   var $248;
+   var $249;
+   var $250;
+   var $251;
+   var $252;
+   var $253;
+   var $254;
+   var $255;
+   var $256;
+   var $257;
+   var $258;
+   var $259;
+   var $260;
+   var $261;
+   var $262;
+   var $263;
+   var $264;
+   var $265;
+   var $266;
+   var $267;
+   var $268;
+   var $__a_i_i_i1_i_i_i524;
+   var $__i_i_i_i2_i_i_i525;
+   var $269;
+   var $270;
+   var $271;
+   var $272;
+   var $273;
+   var $274;
+   var $275;
+   var $276;
+   var $277;
+   var $__a_i_i_i_i_i_i526;
+   var $__i_i_i_i_i_i_i527;
+   var $278;
+   var $279;
+   var $280;
+   var $281;
+   var $282;
+   var $283;
+   var $284;
+   var $285;
+   var $286;
+   var $287;
+   var $288=(sp)+(64);
+   var $289;
+   var $290;
+   var $291;
+   var $292;
+   var $293;
+   var $294;
+   var $295;
+   var $296;
+   var $297;
+   var $298;
+   var $299;
+   var $300;
+   var $301;
+   var $302;
+   var $303;
+   var $304;
+   var $305;
+   var $306;
+   var $307;
+   var $308;
+   var $309;
+   var $310;
+   var $311;
+   var $312;
+   var $313;
+   var $314;
+   var $315;
+   var $316;
+   var $317;
+   var $318;
+   var $319;
+   var $320;
+   var $321;
+   var $322;
+   var $323;
+   var $324;
+   var $325;
+   var $326;
+   var $327;
+   var $__a_i_i_i1_i_i_i511;
+   var $__i_i_i_i2_i_i_i512;
+   var $328;
+   var $329;
+   var $330;
+   var $331;
+   var $332;
+   var $333;
+   var $334;
+   var $335;
+   var $336;
+   var $__a_i_i_i_i_i_i513;
+   var $__i_i_i_i_i_i_i514;
+   var $337;
+   var $338;
+   var $339;
+   var $340;
+   var $341;
+   var $342;
+   var $343;
+   var $344;
+   var $345;
+   var $346;
+   var $347=(sp)+(80);
+   var $348;
+   var $349;
+   var $350;
+   var $351;
+   var $352;
+   var $353;
+   var $354;
+   var $355;
+   var $356;
+   var $357;
+   var $358;
+   var $359;
+   var $360;
+   var $361;
+   var $362;
+   var $363;
+   var $364;
+   var $365;
+   var $366;
+   var $367;
+   var $368;
+   var $369;
+   var $370;
+   var $371;
+   var $372;
+   var $373;
+   var $374;
+   var $375;
+   var $376;
+   var $377;
+   var $378;
+   var $379;
+   var $380;
+   var $381;
+   var $382;
+   var $383;
+   var $384;
+   var $385;
+   var $386;
+   var $__a_i_i_i1_i_i_i498;
+   var $__i_i_i_i2_i_i_i499;
+   var $387;
+   var $388;
+   var $389;
+   var $390;
+   var $391;
+   var $392;
+   var $393;
+   var $394;
+   var $395;
+   var $__a_i_i_i_i_i_i500;
+   var $__i_i_i_i_i_i_i501;
+   var $396;
+   var $397;
+   var $398;
+   var $399;
+   var $400;
+   var $401;
+   var $402;
+   var $403;
+   var $404;
+   var $405;
+   var $406=(sp)+(96);
+   var $407;
+   var $408;
+   var $409;
+   var $410;
+   var $411;
+   var $412;
+   var $413;
+   var $414;
+   var $415;
+   var $416;
+   var $417;
+   var $418;
+   var $419;
+   var $420;
+   var $421;
+   var $422;
+   var $423;
+   var $424;
+   var $425;
+   var $426;
+   var $427;
+   var $428;
+   var $429;
+   var $430;
+   var $431;
+   var $432;
+   var $433;
+   var $434;
+   var $435;
+   var $436;
+   var $437;
+   var $438;
+   var $439;
+   var $440;
+   var $441;
+   var $442;
+   var $443;
+   var $444;
+   var $445;
+   var $__a_i_i_i1_i_i_i485;
+   var $__i_i_i_i2_i_i_i486;
+   var $446;
+   var $447;
+   var $448;
+   var $449;
+   var $450;
+   var $451;
+   var $452;
+   var $453;
+   var $454;
+   var $__a_i_i_i_i_i_i487;
+   var $__i_i_i_i_i_i_i488;
+   var $455;
+   var $456;
+   var $457;
+   var $458;
+   var $459;
+   var $460;
+   var $461;
+   var $462;
+   var $463;
+   var $464;
+   var $465=(sp)+(112);
+   var $466;
+   var $467;
+   var $468;
+   var $469;
+   var $470;
+   var $471;
+   var $472;
+   var $473;
+   var $474;
+   var $475;
+   var $476;
+   var $477;
+   var $478;
+   var $479;
+   var $480;
+   var $481;
+   var $482;
+   var $483;
+   var $484;
+   var $485;
+   var $486;
+   var $487;
+   var $488;
+   var $489;
+   var $490;
+   var $491;
+   var $492;
+   var $493;
+   var $494;
+   var $495;
+   var $496;
+   var $497;
+   var $498;
+   var $499;
+   var $500;
+   var $501;
+   var $502;
+   var $503;
+   var $504;
+   var $__a_i_i_i1_i_i_i472;
+   var $__i_i_i_i2_i_i_i473;
+   var $505;
+   var $506;
+   var $507;
+   var $508;
+   var $509;
+   var $510;
+   var $511;
+   var $512;
+   var $513;
+   var $__a_i_i_i_i_i_i474;
+   var $__i_i_i_i_i_i_i475;
+   var $514;
+   var $515;
+   var $516;
+   var $517;
+   var $518;
+   var $519;
+   var $520;
+   var $521;
+   var $522;
+   var $523;
+   var $524=(sp)+(128);
+   var $525;
+   var $526;
+   var $527;
+   var $528;
+   var $529;
+   var $530;
+   var $531;
+   var $532;
+   var $533;
+   var $534;
+   var $535;
+   var $536;
+   var $537;
+   var $538;
+   var $539;
+   var $540;
+   var $541;
+   var $542;
+   var $543;
+   var $544;
+   var $545;
+   var $546;
+   var $547;
+   var $548;
+   var $549;
+   var $550;
+   var $551;
+   var $552;
+   var $553;
+   var $554;
+   var $555;
+   var $556;
+   var $557;
+   var $558;
+   var $559;
+   var $560;
+   var $561;
+   var $562;
+   var $563;
+   var $__a_i_i_i1_i_i_i459;
+   var $__i_i_i_i2_i_i_i460;
+   var $564;
+   var $565;
+   var $566;
+   var $567;
+   var $568;
+   var $569;
+   var $570;
+   var $571;
+   var $572;
+   var $__a_i_i_i_i_i_i461;
+   var $__i_i_i_i_i_i_i462;
+   var $573;
+   var $574;
+   var $575;
+   var $576;
+   var $577;
+   var $578;
+   var $579;
+   var $580;
+   var $581;
+   var $582;
+   var $583=(sp)+(144);
+   var $584;
+   var $585;
+   var $586;
+   var $587;
+   var $588;
+   var $589;
+   var $590;
+   var $591;
+   var $592;
+   var $593;
+   var $594;
+   var $595;
+   var $596;
+   var $597;
+   var $598;
+   var $599;
+   var $600;
+   var $601;
+   var $602;
+   var $603;
+   var $604;
+   var $605;
+   var $606;
+   var $607;
+   var $608;
+   var $609;
+   var $610;
+   var $611;
+   var $612;
+   var $613;
+   var $614;
+   var $615;
+   var $616;
+   var $617;
+   var $618;
+   var $619;
+   var $620;
+   var $621;
+   var $622;
+   var $__a_i_i_i1_i_i_i446;
+   var $__i_i_i_i2_i_i_i447;
+   var $623;
+   var $624;
+   var $625;
+   var $626;
+   var $627;
+   var $628;
+   var $629;
+   var $630;
+   var $631;
+   var $__a_i_i_i_i_i_i448;
+   var $__i_i_i_i_i_i_i449;
+   var $632;
+   var $633;
+   var $634;
+   var $635;
+   var $636;
+   var $637;
+   var $638;
+   var $639;
+   var $640;
+   var $641;
+   var $642=(sp)+(160);
+   var $643;
+   var $644;
+   var $645;
+   var $646;
+   var $647;
+   var $648;
+   var $649;
+   var $650;
+   var $651;
+   var $652;
+   var $653;
+   var $654;
+   var $655;
+   var $656;
+   var $657;
+   var $658;
+   var $659;
+   var $660;
+   var $661;
+   var $662;
+   var $663;
+   var $664;
+   var $665;
+   var $666;
+   var $667;
+   var $668;
+   var $669;
+   var $670;
+   var $671;
+   var $672;
+   var $673;
+   var $674;
+   var $675;
+   var $676;
+   var $677;
+   var $678;
+   var $679;
+   var $680;
+   var $681;
+   var $__a_i_i_i1_i_i_i433;
+   var $__i_i_i_i2_i_i_i434;
+   var $682;
+   var $683;
+   var $684;
+   var $685;
+   var $686;
+   var $687;
+   var $688;
+   var $689;
+   var $690;
+   var $__a_i_i_i_i_i_i435;
+   var $__i_i_i_i_i_i_i436;
+   var $691;
+   var $692;
+   var $693;
+   var $694;
+   var $695;
+   var $696;
+   var $697;
+   var $698;
+   var $699;
+   var $700;
+   var $701=(sp)+(176);
+   var $702;
+   var $703;
+   var $704;
+   var $705;
+   var $706;
+   var $707;
+   var $708;
+   var $709;
+   var $710;
+   var $711;
+   var $712;
+   var $713;
+   var $714;
+   var $715;
+   var $716;
+   var $717;
+   var $718;
+   var $719;
+   var $720;
+   var $721;
+   var $722;
+   var $723;
+   var $724;
+   var $725;
+   var $726;
+   var $727;
+   var $728;
+   var $729;
+   var $730;
+   var $731;
+   var $732;
+   var $733;
+   var $734;
+   var $735;
+   var $736;
+   var $737;
+   var $738;
+   var $739;
+   var $740;
+   var $__a_i_i_i1_i_i_i420;
+   var $__i_i_i_i2_i_i_i421;
+   var $741;
+   var $742;
+   var $743;
+   var $744;
+   var $745;
+   var $746;
+   var $747;
+   var $748;
+   var $749;
+   var $__a_i_i_i_i_i_i422;
+   var $__i_i_i_i_i_i_i423;
+   var $750;
+   var $751;
+   var $752;
+   var $753;
+   var $754;
+   var $755;
+   var $756;
+   var $757;
+   var $758;
+   var $759;
+   var $760=(sp)+(192);
+   var $761;
+   var $762;
+   var $763;
+   var $764;
+   var $765;
+   var $766;
+   var $767;
+   var $768;
+   var $769;
+   var $770;
+   var $771;
+   var $772;
+   var $773;
+   var $774;
+   var $775;
+   var $776;
+   var $777;
+   var $778;
+   var $779;
+   var $780;
+   var $781;
+   var $782;
+   var $783;
+   var $784;
+   var $785;
+   var $786;
+   var $787;
+   var $788;
+   var $789;
+   var $790;
+   var $791;
+   var $792;
+   var $793;
+   var $794;
+   var $795;
+   var $796;
+   var $797;
+   var $798;
+   var $799;
+   var $__a_i_i_i1_i_i_i407;
+   var $__i_i_i_i2_i_i_i408;
+   var $800;
+   var $801;
+   var $802;
+   var $803;
+   var $804;
+   var $805;
+   var $806;
+   var $807;
+   var $808;
+   var $__a_i_i_i_i_i_i409;
+   var $__i_i_i_i_i_i_i410;
+   var $809;
+   var $810;
+   var $811;
+   var $812;
+   var $813;
+   var $814;
+   var $815;
+   var $816;
+   var $817;
+   var $818;
+   var $819=(sp)+(208);
+   var $820;
+   var $821;
+   var $822;
+   var $823;
+   var $824;
+   var $825;
+   var $826;
+   var $827;
+   var $828;
+   var $829;
+   var $830;
+   var $831;
+   var $832;
+   var $833;
+   var $834;
+   var $835;
+   var $836;
+   var $837;
+   var $838;
+   var $839;
+   var $840;
+   var $841;
+   var $842;
+   var $843;
+   var $844;
+   var $845;
+   var $846;
+   var $847;
+   var $848;
+   var $849;
+   var $850;
+   var $851;
+   var $852;
+   var $853;
+   var $854;
+   var $855;
+   var $856;
+   var $857;
+   var $858;
+   var $__a_i_i_i1_i_i_i394;
+   var $__i_i_i_i2_i_i_i395;
+   var $859;
+   var $860;
+   var $861;
+   var $862;
+   var $863;
+   var $864;
+   var $865;
+   var $866;
+   var $867;
+   var $__a_i_i_i_i_i_i396;
+   var $__i_i_i_i_i_i_i397;
+   var $868;
+   var $869;
+   var $870;
+   var $871;
+   var $872;
+   var $873;
+   var $874;
+   var $875;
+   var $876;
+   var $877;
+   var $878=(sp)+(224);
+   var $879;
+   var $880;
+   var $881;
+   var $882;
+   var $883;
+   var $884;
+   var $885;
+   var $886;
+   var $887;
+   var $888;
+   var $889;
+   var $890;
+   var $891;
+   var $892;
+   var $893;
+   var $894;
+   var $895;
+   var $896;
+   var $897;
+   var $898;
+   var $899;
+   var $900;
+   var $901;
+   var $902;
+   var $903;
+   var $904;
+   var $905;
+   var $906;
+   var $907;
+   var $908;
+   var $909;
+   var $910;
+   var $911;
+   var $912;
+   var $913;
+   var $914;
+   var $915;
+   var $916;
+   var $917;
+   var $__a_i_i_i1_i_i_i381;
+   var $__i_i_i_i2_i_i_i382;
+   var $918;
+   var $919;
+   var $920;
+   var $921;
+   var $922;
+   var $923;
+   var $924;
+   var $925;
+   var $926;
+   var $__a_i_i_i_i_i_i383;
+   var $__i_i_i_i_i_i_i384;
+   var $927;
+   var $928;
+   var $929;
+   var $930;
+   var $931;
+   var $932;
+   var $933;
+   var $934;
+   var $935;
+   var $936;
+   var $937=(sp)+(240);
+   var $938;
+   var $939;
+   var $940;
+   var $941;
+   var $942;
+   var $943;
+   var $944;
+   var $945;
+   var $946;
+   var $947;
+   var $948;
+   var $949;
+   var $950;
+   var $951;
+   var $952;
+   var $953;
+   var $954;
+   var $955;
+   var $956;
+   var $957;
+   var $958;
+   var $959;
+   var $960;
+   var $961;
+   var $962;
+   var $963;
+   var $964;
+   var $965;
+   var $966;
+   var $967;
+   var $968;
+   var $969;
+   var $970;
+   var $971;
+   var $972;
+   var $973;
+   var $974;
+   var $975;
+   var $976;
+   var $__a_i_i_i1_i_i_i368;
+   var $__i_i_i_i2_i_i_i369;
+   var $977;
+   var $978;
+   var $979;
+   var $980;
+   var $981;
+   var $982;
+   var $983;
+   var $984;
+   var $985;
+   var $__a_i_i_i_i_i_i370;
+   var $__i_i_i_i_i_i_i371;
+   var $986;
+   var $987;
+   var $988;
+   var $989;
+   var $990;
+   var $991;
+   var $992;
+   var $993;
+   var $994;
+   var $995;
+   var $996=(sp)+(256);
+   var $997;
+   var $998;
+   var $999;
+   var $1000;
+   var $1001;
+   var $1002;
+   var $1003;
+   var $1004;
+   var $1005;
+   var $1006;
+   var $1007;
+   var $1008;
+   var $1009;
+   var $1010;
+   var $1011;
+   var $1012;
+   var $1013;
+   var $1014;
+   var $1015;
+   var $1016;
+   var $1017;
+   var $1018;
+   var $1019;
+   var $1020;
+   var $1021;
+   var $1022;
+   var $1023;
+   var $1024;
+   var $1025;
+   var $1026;
+   var $1027;
+   var $1028;
+   var $1029;
+   var $1030;
+   var $1031;
+   var $1032;
+   var $1033;
+   var $1034;
+   var $1035;
+   var $__a_i_i_i1_i_i_i355;
+   var $__i_i_i_i2_i_i_i356;
+   var $1036;
+   var $1037;
+   var $1038;
+   var $1039;
+   var $1040;
+   var $1041;
+   var $1042;
+   var $1043;
+   var $1044;
+   var $__a_i_i_i_i_i_i357;
+   var $__i_i_i_i_i_i_i358;
+   var $1045;
+   var $1046;
+   var $1047;
+   var $1048;
+   var $1049;
+   var $1050;
+   var $1051;
+   var $1052;
+   var $1053;
+   var $1054;
+   var $1055=(sp)+(272);
+   var $1056;
+   var $1057;
+   var $1058;
+   var $1059;
+   var $1060;
+   var $1061;
+   var $1062;
+   var $1063;
+   var $1064;
+   var $1065;
+   var $1066;
+   var $1067;
+   var $1068;
+   var $1069;
+   var $1070;
+   var $1071;
+   var $1072;
+   var $1073;
+   var $1074;
+   var $1075;
+   var $1076;
+   var $1077;
+   var $1078;
+   var $1079;
+   var $1080;
+   var $1081;
+   var $1082;
+   var $1083;
+   var $1084;
+   var $1085;
+   var $1086;
+   var $1087;
+   var $1088;
+   var $1089;
+   var $1090;
+   var $1091;
+   var $1092;
+   var $1093;
+   var $1094;
+   var $__a_i_i_i1_i_i_i342;
+   var $__i_i_i_i2_i_i_i343;
+   var $1095;
+   var $1096;
+   var $1097;
+   var $1098;
+   var $1099;
+   var $1100;
+   var $1101;
+   var $1102;
+   var $1103;
+   var $__a_i_i_i_i_i_i344;
+   var $__i_i_i_i_i_i_i345;
+   var $1104;
+   var $1105;
+   var $1106;
+   var $1107;
+   var $1108;
+   var $1109;
+   var $1110;
+   var $1111;
+   var $1112;
+   var $1113;
+   var $1114=(sp)+(288);
+   var $1115;
+   var $1116;
+   var $1117;
+   var $1118;
+   var $1119;
+   var $1120;
+   var $1121;
+   var $1122;
+   var $1123;
+   var $1124;
+   var $1125;
+   var $1126;
+   var $1127;
+   var $1128;
+   var $1129;
+   var $1130;
+   var $1131;
+   var $1132;
+   var $1133;
+   var $1134;
+   var $1135;
+   var $1136;
+   var $1137;
+   var $1138;
+   var $1139;
+   var $1140;
+   var $1141;
+   var $1142;
+   var $1143;
+   var $1144;
+   var $1145;
+   var $1146;
+   var $1147;
+   var $1148;
+   var $1149;
+   var $1150;
+   var $1151;
+   var $1152;
+   var $1153;
+   var $__a_i_i_i1_i_i_i329;
+   var $__i_i_i_i2_i_i_i330;
+   var $1154;
+   var $1155;
+   var $1156;
+   var $1157;
+   var $1158;
+   var $1159;
+   var $1160;
+   var $1161;
+   var $1162;
+   var $__a_i_i_i_i_i_i331;
+   var $__i_i_i_i_i_i_i332;
+   var $1163;
+   var $1164;
+   var $1165;
+   var $1166;
+   var $1167;
+   var $1168;
+   var $1169;
+   var $1170;
+   var $1171;
+   var $1172;
+   var $1173=(sp)+(304);
+   var $1174;
+   var $1175;
+   var $1176;
+   var $1177;
+   var $1178;
+   var $1179;
+   var $1180;
+   var $1181;
+   var $1182;
+   var $1183;
+   var $1184;
+   var $1185;
+   var $1186;
+   var $1187;
+   var $1188;
+   var $1189;
+   var $1190;
+   var $1191;
+   var $1192;
+   var $1193;
+   var $1194;
+   var $1195;
+   var $1196;
+   var $1197;
+   var $1198;
+   var $1199;
+   var $1200;
+   var $1201;
+   var $1202;
+   var $1203;
+   var $1204;
+   var $1205;
+   var $1206;
+   var $1207;
+   var $1208;
+   var $1209;
+   var $1210;
+   var $1211;
+   var $1212;
+   var $__a_i_i_i1_i_i_i316;
+   var $__i_i_i_i2_i_i_i317;
+   var $1213;
+   var $1214;
+   var $1215;
+   var $1216;
+   var $1217;
+   var $1218;
+   var $1219;
+   var $1220;
+   var $1221;
+   var $__a_i_i_i_i_i_i318;
+   var $__i_i_i_i_i_i_i319;
+   var $1222;
+   var $1223;
+   var $1224;
+   var $1225;
+   var $1226;
+   var $1227;
+   var $1228;
+   var $1229;
+   var $1230;
+   var $1231;
+   var $1232=(sp)+(320);
+   var $1233;
+   var $1234;
+   var $1235;
+   var $1236;
+   var $1237;
+   var $1238;
+   var $1239;
+   var $1240;
+   var $1241;
+   var $1242;
+   var $1243;
+   var $1244;
+   var $1245;
+   var $1246;
+   var $1247;
+   var $1248;
+   var $1249;
+   var $1250;
+   var $1251;
+   var $1252;
+   var $1253;
+   var $1254;
+   var $1255;
+   var $1256;
+   var $1257;
+   var $1258;
+   var $1259;
+   var $1260;
+   var $1261;
+   var $1262;
+   var $1263;
+   var $1264;
+   var $1265;
+   var $1266;
+   var $1267;
+   var $1268;
+   var $1269;
+   var $1270;
+   var $1271;
+   var $__a_i_i_i1_i_i_i303;
+   var $__i_i_i_i2_i_i_i304;
+   var $1272;
+   var $1273;
+   var $1274;
+   var $1275;
+   var $1276;
+   var $1277;
+   var $1278;
+   var $1279;
+   var $1280;
+   var $__a_i_i_i_i_i_i305;
+   var $__i_i_i_i_i_i_i306;
+   var $1281;
+   var $1282;
+   var $1283;
+   var $1284;
+   var $1285;
+   var $1286;
+   var $1287;
+   var $1288;
+   var $1289;
+   var $1290;
+   var $1291=(sp)+(336);
+   var $1292;
+   var $1293;
+   var $1294;
+   var $1295;
+   var $1296;
+   var $1297;
+   var $1298;
+   var $1299;
+   var $1300;
+   var $1301;
+   var $1302;
+   var $1303;
+   var $1304;
+   var $1305;
+   var $1306;
+   var $1307;
+   var $1308;
+   var $1309;
+   var $1310;
+   var $1311;
+   var $1312;
+   var $1313;
+   var $1314;
+   var $1315;
+   var $1316;
+   var $1317;
+   var $1318;
+   var $1319;
+   var $1320;
+   var $1321;
+   var $1322;
+   var $1323;
+   var $1324;
+   var $1325;
+   var $1326;
+   var $1327;
+   var $1328;
+   var $1329;
+   var $1330;
+   var $__a_i_i_i1_i_i_i290;
+   var $__i_i_i_i2_i_i_i291;
+   var $1331;
+   var $1332;
+   var $1333;
+   var $1334;
+   var $1335;
+   var $1336;
+   var $1337;
+   var $1338;
+   var $1339;
+   var $__a_i_i_i_i_i_i292;
+   var $__i_i_i_i_i_i_i293;
+   var $1340;
+   var $1341;
+   var $1342;
+   var $1343;
+   var $1344;
+   var $1345;
+   var $1346;
+   var $1347;
+   var $1348;
+   var $1349;
+   var $1350=(sp)+(352);
+   var $1351;
+   var $1352;
+   var $1353;
+   var $1354;
+   var $1355;
+   var $1356;
+   var $1357;
+   var $1358;
+   var $1359;
+   var $1360;
+   var $1361;
+   var $1362;
+   var $1363;
+   var $1364;
+   var $1365;
+   var $1366;
+   var $1367;
+   var $1368;
+   var $1369;
+   var $1370;
+   var $1371;
+   var $1372;
+   var $1373;
+   var $1374;
+   var $1375;
+   var $1376;
+   var $1377;
+   var $1378;
+   var $1379;
+   var $1380;
+   var $1381;
+   var $1382;
+   var $1383;
+   var $1384;
+   var $1385;
+   var $1386;
+   var $1387;
+   var $1388;
+   var $1389;
+   var $__a_i_i_i1_i_i_i277;
+   var $__i_i_i_i2_i_i_i278;
+   var $1390;
+   var $1391;
+   var $1392;
+   var $1393;
+   var $1394;
+   var $1395;
+   var $1396;
+   var $1397;
+   var $1398;
+   var $__a_i_i_i_i_i_i279;
+   var $__i_i_i_i_i_i_i280;
+   var $1399;
+   var $1400;
+   var $1401;
+   var $1402;
+   var $1403;
+   var $1404;
+   var $1405;
+   var $1406;
+   var $1407;
+   var $1408;
+   var $1409=(sp)+(368);
+   var $1410;
+   var $1411;
+   var $1412;
+   var $1413;
+   var $1414;
+   var $1415;
+   var $1416;
+   var $1417;
+   var $1418;
+   var $1419;
+   var $1420;
+   var $1421;
+   var $1422;
+   var $1423;
+   var $1424;
+   var $1425;
+   var $1426;
+   var $1427;
+   var $1428;
+   var $1429;
+   var $1430;
+   var $1431;
+   var $1432;
+   var $1433;
+   var $1434;
+   var $1435;
+   var $1436;
+   var $1437;
+   var $1438;
+   var $1439;
+   var $1440;
+   var $1441;
+   var $1442;
+   var $1443;
+   var $1444;
+   var $1445;
+   var $1446;
+   var $1447;
+   var $1448;
+   var $__a_i_i_i1_i_i_i264;
+   var $__i_i_i_i2_i_i_i265;
+   var $1449;
+   var $1450;
+   var $1451;
+   var $1452;
+   var $1453;
+   var $1454;
+   var $1455;
+   var $1456;
+   var $1457;
+   var $__a_i_i_i_i_i_i266;
+   var $__i_i_i_i_i_i_i267;
+   var $1458;
+   var $1459;
+   var $1460;
+   var $1461;
+   var $1462;
+   var $1463;
+   var $1464;
+   var $1465;
+   var $1466;
+   var $1467;
+   var $1468=(sp)+(384);
+   var $1469;
+   var $1470;
+   var $1471;
+   var $1472;
+   var $1473;
+   var $1474;
+   var $1475;
+   var $1476;
+   var $1477;
+   var $1478;
+   var $1479;
+   var $1480;
+   var $1481;
+   var $1482;
+   var $1483;
+   var $1484;
+   var $1485;
+   var $1486;
+   var $1487;
+   var $1488;
+   var $1489;
+   var $1490;
+   var $1491;
+   var $1492;
+   var $1493;
+   var $1494;
+   var $1495;
+   var $1496;
+   var $1497;
+   var $1498;
+   var $1499;
+   var $1500;
+   var $1501;
+   var $1502;
+   var $1503;
+   var $1504;
+   var $1505;
+   var $1506;
+   var $1507;
+   var $__a_i_i_i1_i_i_i251;
+   var $__i_i_i_i2_i_i_i252;
+   var $1508;
+   var $1509;
+   var $1510;
+   var $1511;
+   var $1512;
+   var $1513;
+   var $1514;
+   var $1515;
+   var $1516;
+   var $__a_i_i_i_i_i_i253;
+   var $__i_i_i_i_i_i_i254;
+   var $1517;
+   var $1518;
+   var $1519;
+   var $1520;
+   var $1521;
+   var $1522;
+   var $1523;
+   var $1524;
+   var $1525;
+   var $1526;
+   var $1527=(sp)+(400);
+   var $1528;
+   var $1529;
+   var $1530;
+   var $1531;
+   var $1532;
+   var $1533;
+   var $1534;
+   var $1535;
+   var $1536;
+   var $1537;
+   var $1538;
+   var $1539;
+   var $1540;
+   var $1541;
+   var $1542;
+   var $1543;
+   var $1544;
+   var $1545;
+   var $1546;
+   var $1547;
+   var $1548;
+   var $1549;
+   var $1550;
+   var $1551;
+   var $1552;
+   var $1553;
+   var $1554;
+   var $1555;
+   var $1556;
+   var $1557;
+   var $1558;
+   var $1559;
+   var $1560;
+   var $1561;
+   var $1562;
+   var $1563;
+   var $1564;
+   var $1565;
+   var $1566;
+   var $__a_i_i_i1_i_i_i238;
+   var $__i_i_i_i2_i_i_i239;
+   var $1567;
+   var $1568;
+   var $1569;
+   var $1570;
+   var $1571;
+   var $1572;
+   var $1573;
+   var $1574;
+   var $1575;
+   var $__a_i_i_i_i_i_i240;
+   var $__i_i_i_i_i_i_i241;
+   var $1576;
+   var $1577;
+   var $1578;
+   var $1579;
+   var $1580;
+   var $1581;
+   var $1582;
+   var $1583;
+   var $1584;
+   var $1585;
+   var $1586=(sp)+(416);
+   var $1587;
+   var $1588;
+   var $1589;
+   var $1590;
+   var $1591;
+   var $1592;
+   var $1593;
+   var $1594;
+   var $1595;
+   var $1596;
+   var $1597;
+   var $1598;
+   var $1599;
+   var $1600;
+   var $1601;
+   var $1602;
+   var $1603;
+   var $1604;
+   var $1605;
+   var $1606;
+   var $1607;
+   var $1608;
+   var $1609;
+   var $1610;
+   var $1611;
+   var $1612;
+   var $1613;
+   var $1614;
+   var $1615;
+   var $1616;
+   var $1617;
+   var $1618;
+   var $1619;
+   var $1620;
+   var $1621;
+   var $1622;
+   var $1623;
+   var $1624;
+   var $1625;
+   var $__a_i_i_i1_i_i_i225;
+   var $__i_i_i_i2_i_i_i226;
+   var $1626;
+   var $1627;
+   var $1628;
+   var $1629;
+   var $1630;
+   var $1631;
+   var $1632;
+   var $1633;
+   var $1634;
+   var $__a_i_i_i_i_i_i227;
+   var $__i_i_i_i_i_i_i228;
+   var $1635;
+   var $1636;
+   var $1637;
+   var $1638;
+   var $1639;
+   var $1640;
+   var $1641;
+   var $1642;
+   var $1643;
+   var $1644;
+   var $1645=(sp)+(432);
+   var $1646;
+   var $1647;
+   var $1648;
+   var $1649;
+   var $1650;
+   var $1651;
+   var $1652;
+   var $1653;
+   var $1654;
+   var $1655;
+   var $1656;
+   var $1657;
+   var $1658;
+   var $1659;
+   var $1660;
+   var $1661;
+   var $1662;
+   var $1663;
+   var $1664;
+   var $1665;
+   var $1666;
+   var $1667;
+   var $1668;
+   var $1669;
+   var $1670;
+   var $1671;
+   var $1672;
+   var $1673;
+   var $1674;
+   var $1675;
+   var $1676;
+   var $1677;
+   var $1678;
+   var $1679;
+   var $1680;
+   var $1681;
+   var $1682;
+   var $1683;
+   var $1684;
+   var $__a_i_i_i1_i_i_i212;
+   var $__i_i_i_i2_i_i_i213;
+   var $1685;
+   var $1686;
+   var $1687;
+   var $1688;
+   var $1689;
+   var $1690;
+   var $1691;
+   var $1692;
+   var $1693;
+   var $__a_i_i_i_i_i_i214;
+   var $__i_i_i_i_i_i_i215;
+   var $1694;
+   var $1695;
+   var $1696;
+   var $1697;
+   var $1698;
+   var $1699;
+   var $1700;
+   var $1701;
+   var $1702;
+   var $1703;
+   var $1704=(sp)+(448);
+   var $1705;
+   var $1706;
+   var $1707;
+   var $1708;
+   var $1709;
+   var $1710;
+   var $1711;
+   var $1712;
+   var $1713;
+   var $1714;
+   var $1715;
+   var $1716;
+   var $1717;
+   var $1718;
+   var $1719;
+   var $1720;
+   var $1721;
+   var $1722;
+   var $1723;
+   var $1724;
+   var $1725;
+   var $1726;
+   var $1727;
+   var $1728;
+   var $1729;
+   var $1730;
+   var $1731;
+   var $1732;
+   var $1733;
+   var $1734;
+   var $1735;
+   var $1736;
+   var $1737;
+   var $1738;
+   var $1739;
+   var $1740;
+   var $1741;
+   var $1742;
+   var $1743;
+   var $__a_i_i_i1_i_i_i199;
+   var $__i_i_i_i2_i_i_i200;
+   var $1744;
+   var $1745;
+   var $1746;
+   var $1747;
+   var $1748;
+   var $1749;
+   var $1750;
+   var $1751;
+   var $1752;
+   var $__a_i_i_i_i_i_i201;
+   var $__i_i_i_i_i_i_i202;
+   var $1753;
+   var $1754;
+   var $1755;
+   var $1756;
+   var $1757;
+   var $1758;
+   var $1759;
+   var $1760;
+   var $1761;
+   var $1762;
+   var $1763=(sp)+(464);
+   var $1764;
+   var $1765;
+   var $1766;
+   var $1767;
+   var $1768;
+   var $1769;
+   var $1770;
+   var $1771;
+   var $1772;
+   var $1773;
+   var $1774;
+   var $1775;
+   var $1776;
+   var $1777;
+   var $1778;
+   var $1779;
+   var $1780;
+   var $1781;
+   var $1782;
+   var $1783;
+   var $1784;
+   var $1785;
+   var $1786;
+   var $1787;
+   var $1788;
+   var $1789;
+   var $1790;
+   var $1791;
+   var $1792;
+   var $1793;
+   var $1794;
+   var $1795;
+   var $1796;
+   var $1797;
+   var $1798;
+   var $1799;
+   var $1800;
+   var $1801;
+   var $1802;
+   var $__a_i_i_i1_i_i_i186;
+   var $__i_i_i_i2_i_i_i187;
+   var $1803;
+   var $1804;
+   var $1805;
+   var $1806;
+   var $1807;
+   var $1808;
+   var $1809;
+   var $1810;
+   var $1811;
+   var $__a_i_i_i_i_i_i188;
+   var $__i_i_i_i_i_i_i189;
+   var $1812;
+   var $1813;
+   var $1814;
+   var $1815;
+   var $1816;
+   var $1817;
+   var $1818;
+   var $1819;
+   var $1820;
+   var $1821;
+   var $1822=(sp)+(480);
+   var $1823;
+   var $1824;
+   var $1825;
+   var $1826;
+   var $1827;
+   var $1828;
+   var $1829;
+   var $1830;
+   var $1831;
+   var $1832;
+   var $1833;
+   var $1834;
+   var $1835;
+   var $1836;
+   var $1837;
+   var $1838;
+   var $1839;
+   var $1840;
+   var $1841;
+   var $1842;
+   var $1843;
+   var $1844;
+   var $1845;
+   var $1846;
+   var $1847;
+   var $1848;
+   var $1849;
+   var $1850;
+   var $1851;
+   var $1852;
+   var $1853;
+   var $1854;
+   var $1855;
+   var $1856;
+   var $1857;
+   var $1858;
+   var $1859;
+   var $1860;
+   var $1861;
+   var $__a_i_i_i1_i_i_i173;
+   var $__i_i_i_i2_i_i_i174;
+   var $1862;
+   var $1863;
+   var $1864;
+   var $1865;
+   var $1866;
+   var $1867;
+   var $1868;
+   var $1869;
+   var $1870;
+   var $__a_i_i_i_i_i_i175;
+   var $__i_i_i_i_i_i_i176;
+   var $1871;
+   var $1872;
+   var $1873;
+   var $1874;
+   var $1875;
+   var $1876;
+   var $1877;
+   var $1878;
+   var $1879;
+   var $1880;
+   var $1881=(sp)+(496);
+   var $1882;
+   var $1883;
+   var $1884;
+   var $1885;
+   var $1886;
+   var $1887;
+   var $1888;
+   var $1889;
+   var $1890;
+   var $1891;
+   var $1892;
+   var $1893;
+   var $1894;
+   var $1895;
+   var $1896;
+   var $1897;
+   var $1898;
+   var $1899;
+   var $1900;
+   var $1901;
+   var $1902;
+   var $1903;
+   var $1904;
+   var $1905;
+   var $1906;
+   var $1907;
+   var $1908;
+   var $1909;
+   var $1910;
+   var $1911;
+   var $1912;
+   var $1913;
+   var $1914;
+   var $1915;
+   var $1916;
+   var $1917;
+   var $1918;
+   var $1919;
+   var $1920;
+   var $__a_i_i_i1_i_i_i160;
+   var $__i_i_i_i2_i_i_i161;
+   var $1921;
+   var $1922;
+   var $1923;
+   var $1924;
+   var $1925;
+   var $1926;
+   var $1927;
+   var $1928;
+   var $1929;
+   var $__a_i_i_i_i_i_i162;
+   var $__i_i_i_i_i_i_i163;
+   var $1930;
+   var $1931;
+   var $1932;
+   var $1933;
+   var $1934;
+   var $1935;
+   var $1936;
+   var $1937;
+   var $1938;
+   var $1939;
+   var $1940=(sp)+(512);
+   var $1941;
+   var $1942;
+   var $1943;
+   var $1944;
+   var $1945;
+   var $1946;
+   var $1947;
+   var $1948;
+   var $1949;
+   var $1950;
+   var $1951;
+   var $1952;
+   var $1953;
+   var $1954;
+   var $1955;
+   var $1956;
+   var $1957;
+   var $1958;
+   var $1959;
+   var $1960;
+   var $1961;
+   var $1962;
+   var $1963;
+   var $1964;
+   var $1965;
+   var $1966;
+   var $1967;
+   var $1968;
+   var $1969;
+   var $1970;
+   var $1971;
+   var $1972;
+   var $1973;
+   var $1974;
+   var $1975;
+   var $1976;
+   var $1977;
+   var $1978;
+   var $1979;
+   var $__a_i_i_i1_i_i_i147;
+   var $__i_i_i_i2_i_i_i148;
+   var $1980;
+   var $1981;
+   var $1982;
+   var $1983;
+   var $1984;
+   var $1985;
+   var $1986;
+   var $1987;
+   var $1988;
+   var $__a_i_i_i_i_i_i149;
+   var $__i_i_i_i_i_i_i150;
+   var $1989;
+   var $1990;
+   var $1991;
+   var $1992;
+   var $1993;
+   var $1994;
+   var $1995;
+   var $1996;
+   var $1997;
+   var $1998;
+   var $1999=(sp)+(528);
+   var $2000;
+   var $2001;
+   var $2002;
+   var $2003;
+   var $2004;
+   var $2005;
+   var $2006;
+   var $2007;
+   var $2008;
+   var $2009;
+   var $2010;
+   var $2011;
+   var $2012;
+   var $2013;
+   var $2014;
+   var $2015;
+   var $2016;
+   var $2017;
+   var $2018;
+   var $2019;
+   var $2020;
+   var $2021;
+   var $2022;
+   var $2023;
+   var $2024;
+   var $2025;
+   var $2026;
+   var $2027;
+   var $2028;
+   var $2029;
+   var $2030;
+   var $2031;
+   var $2032;
+   var $2033;
+   var $2034;
+   var $2035;
+   var $2036;
+   var $2037;
+   var $2038;
+   var $__a_i_i_i1_i_i_i134;
+   var $__i_i_i_i2_i_i_i135;
+   var $2039;
+   var $2040;
+   var $2041;
+   var $2042;
+   var $2043;
+   var $2044;
+   var $2045;
+   var $2046;
+   var $2047;
+   var $__a_i_i_i_i_i_i136;
+   var $__i_i_i_i_i_i_i137;
+   var $2048;
+   var $2049;
+   var $2050;
+   var $2051;
+   var $2052;
+   var $2053;
+   var $2054;
+   var $2055;
+   var $2056;
+   var $2057;
+   var $2058=(sp)+(544);
+   var $2059;
+   var $2060;
+   var $2061;
+   var $2062;
+   var $2063;
+   var $2064;
+   var $2065;
+   var $2066;
+   var $2067;
+   var $2068;
+   var $2069;
+   var $2070;
+   var $2071;
+   var $2072;
+   var $2073;
+   var $2074;
+   var $2075;
+   var $2076;
+   var $2077;
+   var $2078;
+   var $2079;
+   var $2080;
+   var $2081;
+   var $2082;
+   var $2083;
+   var $2084;
+   var $2085;
+   var $2086;
+   var $2087;
+   var $2088;
+   var $2089;
+   var $2090;
+   var $2091;
+   var $2092;
+   var $2093;
+   var $2094;
+   var $2095;
+   var $2096;
+   var $2097;
+   var $__a_i_i_i1_i_i_i121;
+   var $__i_i_i_i2_i_i_i122;
+   var $2098;
+   var $2099;
+   var $2100;
+   var $2101;
+   var $2102;
+   var $2103;
+   var $2104;
+   var $2105;
+   var $2106;
+   var $__a_i_i_i_i_i_i123;
+   var $__i_i_i_i_i_i_i124;
+   var $2107;
+   var $2108;
+   var $2109;
+   var $2110;
+   var $2111;
+   var $2112;
+   var $2113;
+   var $2114;
+   var $2115;
+   var $2116;
+   var $2117=(sp)+(560);
+   var $2118;
+   var $2119;
+   var $2120;
+   var $2121;
+   var $2122;
+   var $2123;
+   var $2124;
+   var $2125;
+   var $2126;
+   var $2127;
+   var $2128;
+   var $2129;
+   var $2130;
+   var $2131;
+   var $2132;
+   var $2133;
+   var $2134;
+   var $2135;
+   var $2136;
+   var $2137;
+   var $2138;
+   var $2139;
+   var $2140;
+   var $2141;
+   var $2142;
+   var $2143;
+   var $2144;
+   var $2145;
+   var $2146;
+   var $2147;
+   var $2148;
+   var $2149;
+   var $2150;
+   var $2151;
+   var $2152;
+   var $2153;
+   var $2154;
+   var $2155;
+   var $2156;
+   var $__a_i_i_i1_i_i_i108;
+   var $__i_i_i_i2_i_i_i109;
+   var $2157;
+   var $2158;
+   var $2159;
+   var $2160;
+   var $2161;
+   var $2162;
+   var $2163;
+   var $2164;
+   var $2165;
+   var $__a_i_i_i_i_i_i110;
+   var $__i_i_i_i_i_i_i111;
+   var $2166;
+   var $2167;
+   var $2168;
+   var $2169;
+   var $2170;
+   var $2171;
+   var $2172;
+   var $2173;
+   var $2174;
+   var $2175;
+   var $2176=(sp)+(576);
+   var $2177;
+   var $2178;
+   var $2179;
+   var $2180;
+   var $2181;
+   var $2182;
+   var $2183;
+   var $2184;
+   var $2185;
+   var $2186;
+   var $2187;
+   var $2188;
+   var $2189;
+   var $2190;
+   var $2191;
+   var $2192;
+   var $2193;
+   var $2194;
+   var $2195;
+   var $2196;
+   var $2197;
+   var $2198;
+   var $2199;
+   var $2200;
+   var $2201;
+   var $2202;
+   var $2203;
+   var $2204;
+   var $2205;
+   var $2206;
+   var $2207;
+   var $2208;
+   var $2209;
+   var $2210;
+   var $2211;
+   var $2212;
+   var $2213;
+   var $2214;
+   var $2215;
+   var $__a_i_i_i1_i_i_i95;
+   var $__i_i_i_i2_i_i_i96;
+   var $2216;
+   var $2217;
+   var $2218;
+   var $2219;
+   var $2220;
+   var $2221;
+   var $2222;
+   var $2223;
+   var $2224;
+   var $__a_i_i_i_i_i_i97;
+   var $__i_i_i_i_i_i_i98;
+   var $2225;
+   var $2226;
+   var $2227;
+   var $2228;
+   var $2229;
+   var $2230;
+   var $2231;
+   var $2232;
+   var $2233;
+   var $2234;
+   var $2235=(sp)+(592);
+   var $2236;
+   var $2237;
+   var $2238;
+   var $2239;
+   var $2240;
+   var $2241;
+   var $2242;
+   var $2243;
+   var $2244;
+   var $2245;
+   var $2246;
+   var $2247;
+   var $2248;
+   var $2249;
+   var $2250;
+   var $2251;
+   var $2252;
+   var $2253;
+   var $2254;
+   var $2255;
+   var $2256;
+   var $2257;
+   var $2258;
+   var $2259;
+   var $2260;
+   var $2261;
+   var $2262;
+   var $2263;
+   var $2264;
+   var $2265;
+   var $2266;
+   var $2267;
+   var $2268;
+   var $2269;
+   var $2270;
+   var $2271;
+   var $2272;
+   var $2273;
+   var $2274;
+   var $__a_i_i_i1_i_i_i82;
+   var $__i_i_i_i2_i_i_i83;
+   var $2275;
+   var $2276;
+   var $2277;
+   var $2278;
+   var $2279;
+   var $2280;
+   var $2281;
+   var $2282;
+   var $2283;
+   var $__a_i_i_i_i_i_i84;
+   var $__i_i_i_i_i_i_i85;
+   var $2284;
+   var $2285;
+   var $2286;
+   var $2287;
+   var $2288;
+   var $2289;
+   var $2290;
+   var $2291;
+   var $2292;
+   var $2293;
+   var $2294=(sp)+(608);
+   var $2295;
+   var $2296;
+   var $2297;
+   var $2298;
+   var $2299;
+   var $2300;
+   var $2301;
+   var $2302;
+   var $2303;
+   var $2304;
+   var $2305;
+   var $2306;
+   var $2307;
+   var $2308;
+   var $2309;
+   var $2310;
+   var $2311;
+   var $2312;
+   var $2313;
+   var $2314;
+   var $2315;
+   var $2316;
+   var $2317;
+   var $2318;
+   var $2319;
+   var $2320;
+   var $2321;
+   var $2322;
+   var $2323;
+   var $2324;
+   var $2325;
+   var $2326;
+   var $2327;
+   var $2328;
+   var $2329;
+   var $2330;
+   var $2331;
+   var $2332;
+   var $2333;
+   var $__a_i_i_i1_i_i_i69;
+   var $__i_i_i_i2_i_i_i70;
+   var $2334;
+   var $2335;
+   var $2336;
+   var $2337;
+   var $2338;
+   var $2339;
+   var $2340;
+   var $2341;
+   var $2342;
+   var $__a_i_i_i_i_i_i71;
+   var $__i_i_i_i_i_i_i72;
+   var $2343;
+   var $2344;
+   var $2345;
+   var $2346;
+   var $2347;
+   var $2348;
+   var $2349;
+   var $2350;
+   var $2351;
+   var $2352;
+   var $2353=(sp)+(624);
+   var $2354;
+   var $2355;
+   var $2356;
+   var $2357;
+   var $2358;
+   var $2359;
+   var $2360;
+   var $2361;
+   var $2362;
+   var $2363;
+   var $2364;
+   var $2365;
+   var $2366;
+   var $2367;
+   var $2368;
+   var $2369;
+   var $2370;
+   var $2371;
+   var $2372;
+   var $2373;
+   var $2374;
+   var $2375;
+   var $2376;
+   var $2377;
+   var $2378;
+   var $2379;
+   var $2380;
+   var $2381;
+   var $2382;
+   var $2383;
+   var $2384;
+   var $2385;
+   var $2386;
+   var $2387;
+   var $2388;
+   var $2389;
+   var $2390;
+   var $2391;
+   var $2392;
+   var $__a_i_i_i1_i_i_i56;
+   var $__i_i_i_i2_i_i_i57;
+   var $2393;
+   var $2394;
+   var $2395;
+   var $2396;
+   var $2397;
+   var $2398;
+   var $2399;
+   var $2400;
+   var $2401;
+   var $__a_i_i_i_i_i_i58;
+   var $__i_i_i_i_i_i_i59;
+   var $2402;
+   var $2403;
+   var $2404;
+   var $2405;
+   var $2406;
+   var $2407;
+   var $2408;
+   var $2409;
+   var $2410;
+   var $2411;
+   var $2412=(sp)+(640);
+   var $2413;
+   var $2414;
+   var $2415;
+   var $2416;
+   var $2417;
+   var $2418;
+   var $2419;
+   var $2420;
+   var $2421;
+   var $2422;
+   var $2423;
+   var $2424;
+   var $2425;
+   var $2426;
+   var $2427;
+   var $2428;
+   var $2429;
+   var $2430;
+   var $2431;
+   var $2432;
+   var $2433;
+   var $2434;
+   var $2435;
+   var $2436;
+   var $2437;
+   var $2438;
+   var $2439;
+   var $2440;
+   var $2441;
+   var $2442;
+   var $2443;
+   var $2444;
+   var $2445;
+   var $2446;
+   var $2447;
+   var $2448;
+   var $2449;
+   var $2450;
+   var $2451;
+   var $__a_i_i_i1_i_i_i43;
+   var $__i_i_i_i2_i_i_i44;
+   var $2452;
+   var $2453;
+   var $2454;
+   var $2455;
+   var $2456;
+   var $2457;
+   var $2458;
+   var $2459;
+   var $2460;
+   var $__a_i_i_i_i_i_i45;
+   var $__i_i_i_i_i_i_i46;
+   var $2461;
+   var $2462;
+   var $2463;
+   var $2464;
+   var $2465;
+   var $2466;
+   var $2467;
+   var $2468;
+   var $2469;
+   var $2470;
+   var $2471=(sp)+(656);
+   var $2472;
+   var $2473;
+   var $2474;
+   var $2475;
+   var $2476;
+   var $2477;
+   var $2478;
+   var $2479;
+   var $2480;
+   var $2481;
+   var $2482;
+   var $2483;
+   var $2484;
+   var $2485;
+   var $2486;
+   var $2487;
+   var $2488;
+   var $2489;
+   var $2490;
+   var $2491;
+   var $2492;
+   var $2493;
+   var $2494;
+   var $2495;
+   var $2496;
+   var $2497;
+   var $2498;
+   var $2499;
+   var $2500;
+   var $2501;
+   var $2502;
+   var $2503;
+   var $2504;
+   var $2505;
+   var $2506;
+   var $2507;
+   var $2508;
+   var $2509;
+   var $2510;
+   var $__a_i_i_i1_i_i_i;
+   var $__i_i_i_i2_i_i_i;
+   var $2511;
+   var $2512;
+   var $2513;
+   var $2514;
+   var $2515;
+   var $2516;
+   var $2517;
+   var $2518;
+   var $2519;
+   var $__a_i_i_i_i_i_i;
+   var $__i_i_i_i_i_i_i;
+   var $2520;
+   var $2521;
+   var $2522;
+   var $2523;
+   var $2524;
+   var $2525;
+   var $2526;
+   var $2527;
+   var $2528;
+   var $2529;
+   var $2530=(sp)+(672);
+   var $2531;
+   var $2532;
+   var $2533;
+   var $2534;
+   var $2535;
+   var $2536;
+   var $2537;
+   var $2538;
+   var $2539;
+   var $2540=(sp)+(688);
+   var $2541=(sp)+(704);
+   var $2542;
+   var $2543;
+   var $std_stringstream=(sp)+(720);
+   var $2544=(sp)+(864);
+   var $2545=(sp)+(880);
+   var $2546=(sp)+(896);
+   var $2547;
+   var $2548=(sp)+(912);
+   var $2549=(sp)+(928);
+   var $std_stringstream1=(sp)+(944);
+   var $2550=(sp)+(1088);
+   var $2551=(sp)+(1104);
+   var $2552=(sp)+(1120);
+   var $2553;
+   var $2554=(sp)+(1136);
+   var $2555=(sp)+(1152);
+   var $std_stringstream2=(sp)+(1168);
+   var $2556=(sp)+(1312);
+   var $2557=(sp)+(1328);
+   var $2558=(sp)+(1344);
+   var $2559;
+   var $2560=(sp)+(1360);
+   var $2561=(sp)+(1376);
+   var $std_stringstream3=(sp)+(1392);
+   var $2562=(sp)+(1536);
+   var $2563=(sp)+(1552);
+   var $2564=(sp)+(1568);
+   var $2565;
+   var $2566=(sp)+(1584);
+   var $2567=(sp)+(1600);
+   var $std_stringstream4=(sp)+(1616);
+   var $2568=(sp)+(1760);
+   var $2569=(sp)+(1776);
+   var $2570=(sp)+(1792);
+   var $2571;
+   var $2572=(sp)+(1808);
+   var $2573=(sp)+(1824);
+   var $std_stringstream5=(sp)+(1840);
+   var $2574=(sp)+(1984);
+   var $2575=(sp)+(2000);
+   var $2576=(sp)+(2016);
+   var $2577;
+   var $2578=(sp)+(2032);
+   var $2579=(sp)+(2048);
+   var $std_stringstream6=(sp)+(2064);
+   var $2580=(sp)+(2208);
+   var $2581=(sp)+(2224);
+   var $2582=(sp)+(2240);
+   var $2583;
+   var $2584=(sp)+(2256);
+   var $2585=(sp)+(2272);
+   var $std_stringstream7=(sp)+(2288);
+   var $2586=(sp)+(2432);
+   var $2587=(sp)+(2448);
+   var $2588=(sp)+(2464);
+   var $2589;
+   var $2590=(sp)+(2480);
+   var $2591=(sp)+(2496);
+   var $std_stringstream8=(sp)+(2512);
+   var $2592=(sp)+(2656);
+   var $2593=(sp)+(2672);
+   var $2594=(sp)+(2688);
+   var $2595;
+   var $2596=(sp)+(2704);
+   var $2597=(sp)+(2720);
+   var $std_stringstream9=(sp)+(2736);
+   var $2598=(sp)+(2880);
+   var $2599=(sp)+(2896);
+   var $2600=(sp)+(2912);
+   var $2601;
+   var $2602=(sp)+(2928);
+   var $2603=(sp)+(2944);
+   var $std_stringstream10=(sp)+(2960);
+   var $2604=(sp)+(3104);
+   var $2605=(sp)+(3120);
+   var $2606=(sp)+(3136);
+   var $2607;
+   var $2608=(sp)+(3152);
+   var $2609=(sp)+(3168);
+   var $std_stringstream11=(sp)+(3184);
+   var $2610=(sp)+(3328);
+   var $2611=(sp)+(3344);
+   var $2612=(sp)+(3360);
+   var $2613;
+   var $2614=(sp)+(3376);
+   var $2615=(sp)+(3392);
+   var $std_stringstream12=(sp)+(3408);
+   var $2616=(sp)+(3552);
+   var $2617=(sp)+(3568);
+   var $2618=(sp)+(3584);
+   var $2619;
+   var $2620=(sp)+(3600);
+   var $2621=(sp)+(3616);
+   var $std_stringstream13=(sp)+(3632);
+   var $2622=(sp)+(3776);
+   var $2623=(sp)+(3792);
+   var $2624=(sp)+(3808);
+   var $2625;
+   var $2626=(sp)+(3824);
+   var $2627=(sp)+(3840);
+   var $std_stringstream14=(sp)+(3856);
+   var $2628=(sp)+(4000);
+   var $2629=(sp)+(4016);
+   var $2630=(sp)+(4032);
+   var $2631;
+   var $2632=(sp)+(4048);
+   var $2633=(sp)+(4064);
+   var $std_stringstream15=(sp)+(4080);
+   var $2634=(sp)+(4224);
+   var $2635=(sp)+(4240);
+   var $2636=(sp)+(4256);
+   var $2637;
+   var $2638=(sp)+(4272);
+   var $2639=(sp)+(4288);
+   var $std_stringstream16=(sp)+(4304);
+   var $2640=(sp)+(4448);
+   var $2641=(sp)+(4464);
+   var $2642=(sp)+(4480);
+   var $2643;
+   var $2644=(sp)+(4496);
+   var $2645=(sp)+(4512);
+   var $std_stringstream17=(sp)+(4528);
+   var $2646=(sp)+(4672);
+   var $2647=(sp)+(4688);
+   var $2648=(sp)+(4704);
+   var $2649;
+   var $2650=(sp)+(4720);
+   var $2651=(sp)+(4736);
+   var $std_stringstream18=(sp)+(4752);
+   var $2652=(sp)+(4896);
+   var $2653=(sp)+(4912);
+   var $2654=(sp)+(4928);
+   var $2655;
+   var $2656=(sp)+(4944);
+   var $2657=(sp)+(4960);
+   var $std_stringstream19=(sp)+(4976);
+   var $2658=(sp)+(5120);
+   var $2659=(sp)+(5136);
+   var $2660=(sp)+(5152);
+   var $2661;
+   var $2662=(sp)+(5168);
+   var $2663=(sp)+(5184);
+   var $std_stringstream20=(sp)+(5200);
+   var $2664=(sp)+(5344);
+   var $2665=(sp)+(5360);
+   var $2666=(sp)+(5376);
+   var $2667;
+   var $2668=(sp)+(5392);
+   var $2669=(sp)+(5408);
+   var $std_stringstream21=(sp)+(5424);
+   var $2670=(sp)+(5568);
+   var $2671=(sp)+(5584);
+   var $2672=(sp)+(5600);
+   var $2673;
+   var $2674=(sp)+(5616);
+   var $2675=(sp)+(5632);
+   var $std_stringstream22=(sp)+(5648);
+   var $2676=(sp)+(5792);
+   var $2677=(sp)+(5808);
+   var $2678=(sp)+(5824);
+   var $2679;
+   var $2680=(sp)+(5840);
+   var $2681=(sp)+(5856);
+   var $std_stringstream23=(sp)+(5872);
+   var $2682=(sp)+(6016);
+   var $2683=(sp)+(6032);
+   var $2684=(sp)+(6048);
+   var $2685;
+   var $2686=(sp)+(6064);
+   var $2687=(sp)+(6080);
+   var $std_stringstream24=(sp)+(6096);
+   var $2688=(sp)+(6240);
+   var $2689=(sp)+(6256);
+   var $2690=(sp)+(6272);
+   var $2691;
+   var $2692=(sp)+(6288);
+   var $2693=(sp)+(6304);
+   var $std_stringstream25=(sp)+(6320);
+   var $2694=(sp)+(6464);
+   var $2695=(sp)+(6480);
+   var $2696=(sp)+(6496);
+   var $2697;
+   var $2698=(sp)+(6512);
+   var $2699=(sp)+(6528);
+   var $std_stringstream26=(sp)+(6544);
+   var $2700=(sp)+(6688);
+   var $2701=(sp)+(6704);
+   var $2702=(sp)+(6720);
+   var $2703;
+   var $2704=(sp)+(6736);
+   var $2705=(sp)+(6752);
+   var $std_stringstream27=(sp)+(6768);
+   var $2706=(sp)+(6912);
+   var $2707=(sp)+(6928);
+   var $2708=(sp)+(6944);
+   var $2709;
+   var $2710=(sp)+(6960);
+   var $2711=(sp)+(6976);
+   var $std_stringstream28=(sp)+(6992);
+   var $2712=(sp)+(7136);
+   var $2713=(sp)+(7152);
+   var $2714=(sp)+(7168);
+   var $2715;
+   var $2716=(sp)+(7184);
+   var $2717=(sp)+(7200);
+   var $std_stringstream29=(sp)+(7216);
+   var $2718=(sp)+(7360);
+   var $2719=(sp)+(7376);
+   var $2720=(sp)+(7392);
+   var $2721;
+   var $2722=(sp)+(7408);
+   var $2723=(sp)+(7424);
+   var $std_stringstream30=(sp)+(7440);
+   var $2724=(sp)+(7584);
+   var $2725=(sp)+(7600);
+   var $2726=(sp)+(7616);
+   var $2727;
+   var $2728=(sp)+(7632);
+   var $2729=(sp)+(7648);
+   var $std_stringstream31=(sp)+(7664);
+   var $2730=(sp)+(7808);
+   var $2731=(sp)+(7824);
+   var $2732=(sp)+(7840);
+   var $2733;
+   var $2734=(sp)+(7856);
+   var $2735=(sp)+(7872);
+   var $std_stringstream32=(sp)+(7888);
+   var $2736=(sp)+(8032);
+   var $2737=(sp)+(8048);
+   var $2738=(sp)+(8064);
+   var $2739;
+   var $2740=(sp)+(8080);
+   var $2741=(sp)+(8096);
+   var $std_stringstream33=(sp)+(8112);
+   var $2742=(sp)+(8256);
+   var $2743=(sp)+(8272);
+   var $2744=(sp)+(8288);
+   var $2745;
+   var $2746=(sp)+(8304);
+   var $2747=(sp)+(8320);
+   var $std_stringstream34=(sp)+(8336);
+   var $2748=(sp)+(8480);
+   var $2749=(sp)+(8496);
+   var $2750=(sp)+(8512);
+   var $2751;
+   var $2752=(sp)+(8528);
+   var $2753=(sp)+(8544);
+   var $std_stringstream35=(sp)+(8560);
+   var $2754=(sp)+(8704);
+   var $2755=(sp)+(8720);
+   var $2756=(sp)+(8736);
+   var $2757;
+   var $2758=(sp)+(8752);
+   var $2759=(sp)+(8768);
+   var $std_stringstream36=(sp)+(8784);
+   var $2760=(sp)+(8928);
+   var $2761=(sp)+(8944);
+   var $2762=(sp)+(8960);
+   var $2763;
+   var $2764=(sp)+(8976);
+   var $2765=(sp)+(8992);
+   var $std_stringstream37=(sp)+(9008);
+   var $2766=(sp)+(9152);
+   var $2767=(sp)+(9168);
+   var $2768=(sp)+(9184);
+   var $2769;
+   var $2770=(sp)+(9200);
+   var $2771=(sp)+(9216);
+   var $std_stringstream38=(sp)+(9232);
+   var $2772=(sp)+(9376);
+   var $2773=(sp)+(9392);
+   var $2774=(sp)+(9408);
+   var $2775;
+   var $2776=(sp)+(9424);
+   var $2777=(sp)+(9440);
+   var $std_stringstream39=(sp)+(9456);
+   var $2778=(sp)+(9600);
+   var $2779=(sp)+(9616);
+   var $2780=(sp)+(9632);
+   var $2781;
+   var $2782=(sp)+(9648);
+   var $2783=(sp)+(9664);
+   var $std_stringstream40=(sp)+(9680);
+   var $2784=(sp)+(9824);
+   var $2785=(sp)+(9840);
+   var $2786=(sp)+(9856);
+   var $2787;
+   var $2788=(sp)+(9872);
+   var $2789=(sp)+(9888);
+   var $std_stringstream41=(sp)+(9904);
+   var $2790=(sp)+(10048);
+   var $2791=(sp)+(10064);
+   var $2792=(sp)+(10080);
+   var $2793;
+   var $2794=(sp)+(10096);
+   var $2795=(sp)+(10112);
+   var $std_stringstream42=(sp)+(10128);
+   var $2796=(sp)+(10272);
+   var $2797=(sp)+(10288);
+   var $2798=(sp)+(10304);
+   var $2799;
+   $2539=$0;
+   label = 2;
+   break; //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 2: 
+   __ZN6StringC1EPKc($2541, ((14584)|0)); //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   (function() { try { __THREW__ = 0; return __ZN4File13NormalizePathERK6Stringc($2540, $2541, 92) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 3; break; } else { label = 47; break; } //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 3: 
+   var $2802 = (function() { try { __THREW__ = 0; return __ZNK6StringneEPKc($2540, ((14584)|0)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 4; break; } else { label = 48; break; } //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 4: 
+   (function() { try { __THREW__ = 0; return __ZN6StringD1Ev($2540) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 5; break; } else { label = 47; break; } //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 5: 
+   __ZN6StringD1Ev($2541); //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   if ($2802) { label = 6; break; } else { label = 66; break; } //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 6: 
+   $2535=$std_stringstream;
+   $2536=24;
+   var $2806=$2535;
+   var $2807=$2806; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2808=(($2807+64)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2809=$2808; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2534=$2809;
+   var $2810=$2534;
+   var $2811=$2810; //@line 622 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2533=$2811;
+   var $2812=$2533;
+   var $2813=$2812; //@line 328 "G:/emscripten/system/include/libcxx/ios"
+   HEAP32[(($2813)>>2)]=((107288)|0); //@line 328 "G:/emscripten/system/include/libcxx/ios"
+   var $2814=$2810; //@line 622 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($2814)>>2)]=((106832)|0); //@line 622 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2815=$2806; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($2815)>>2)]=((108180)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2816=$2806; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2817=(($2816+64)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2818=$2817; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($2818)>>2)]=((108220)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2819=$2806; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2820=(($2819+8)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2821=$2820; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($2821)>>2)]=((108200)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2822=$2806; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2823=(($2806+12)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2824=$2823; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2503=$2822;
+   $2504=((109796)|0);
+   $2505=$2824;
+   var $2825=$2503;
+   var $2826=$2504;
+   var $2827=$2825; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2828=(($2826+4)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2829=$2505; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2500=$2827;
+   $2501=$2828;
+   $2502=$2829;
+   var $2830=$2500;
+   var $2831=$2501;
+   var $2832=HEAP32[(($2831)>>2)]; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2833=$2830; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($2833)>>2)]=$2832; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2834=(($2831+4)|0); //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2835=HEAP32[(($2834)>>2)]; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2836=$2830; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2837=HEAP32[(($2836)>>2)]; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2838=((($2837)-(12))|0); //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2839=$2838; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2840=HEAP32[(($2839)>>2)]; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2841=$2830; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2842=(($2841+$2840)|0); //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2843=$2842; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($2843)>>2)]=$2835; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2844=(($2830+4)|0); //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($2844)>>2)]=0; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2845=$2830; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $2846=HEAP32[(($2845)>>2)]; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $2847=((($2846)-(12))|0); //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $2848=$2847; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $2849=HEAP32[(($2848)>>2)]; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $2850=$2830; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $2851=(($2850+$2849)|0); //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $2852=$2851; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $2853=$2502; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   $2498=$2852;
+   $2499=$2853;
+   var $2854=$2498;
+   var $2855=$2854; //@line 659 "G:/emscripten/system/include/libcxx/ios"
+   var $2856=$2499; //@line 659 "G:/emscripten/system/include/libcxx/ios"
+   var $2857=$2856; //@line 659 "G:/emscripten/system/include/libcxx/ios"
+   (function() { try { __THREW__ = 0; return __ZNSt3__18ios_base4initEPv($2855, $2857) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 7; break; } else { label = 23; break; }
+  case 7: 
+   var $2858=(($2854+72)|0); //@line 660 "G:/emscripten/system/include/libcxx/ios"
+   HEAP32[(($2858)>>2)]=0; //@line 660 "G:/emscripten/system/include/libcxx/ios"
+   var $2859=(($2854+76)|0); //@line 661 "G:/emscripten/system/include/libcxx/ios"
+   HEAP32[(($2859)>>2)]=-1; //@line 661 "G:/emscripten/system/include/libcxx/ios"
+   var $2860=$2825; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2861=(($2860+8)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2862=$2861; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2863=(($2826+12)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2496=$2862;
+   $2497=$2863;
+   var $2864=$2496;
+   var $2865=$2497;
+   var $2866=HEAP32[(($2865)>>2)]; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2867=$2864; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($2867)>>2)]=$2866; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2868=(($2865+4)|0); //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2869=HEAP32[(($2868)>>2)]; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2870=$2864; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2871=HEAP32[(($2870)>>2)]; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2872=((($2871)-(12))|0); //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2873=$2872; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2874=HEAP32[(($2873)>>2)]; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2875=$2864; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2876=(($2875+$2874)|0); //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2877=$2876; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($2877)>>2)]=$2869; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2878=HEAP32[(($2826)>>2)]; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2879=$2825; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($2879)>>2)]=$2878; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2880=(($2826+20)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2881=HEAP32[(($2880)>>2)]; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2882=$2825; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2883=HEAP32[(($2882)>>2)]; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2884=((($2883)-(12))|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2885=$2884; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2886=HEAP32[(($2885)>>2)]; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2887=$2825; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2888=(($2887+$2886)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2889=$2888; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($2889)>>2)]=$2881; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2890=(($2826+24)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2891=HEAP32[(($2890)>>2)]; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2892=$2825; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2893=(($2892+8)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2894=$2893; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($2894)>>2)]=$2891; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2895=$2806; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($2895)>>2)]=((108180)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2896=$2806; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2897=(($2896+64)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2898=$2897; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($2898)>>2)]=((108220)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2899=$2806; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2900=(($2899+8)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2901=$2900; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($2901)>>2)]=((108200)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2902=(($2806+12)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2903=$2536; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2531=$2902;
+   $2532=$2903;
+   var $2904=$2531;
+   var $2905=$2532; //@line 244 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2526=$2904;
+   $2527=$2905;
+   var $2906=$2526;
+   var $2907=$2906; //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   (function() { try { __THREW__ = 0; return __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEEC2Ev($2907) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 8; break; } else { label = 24; break; }
+  case 8: 
+   var $2908=$2906; //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($2908)>>2)]=((108360)|0); //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2909=(($2906+32)|0); //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2525=$2909;
+   var $2910=$2525;
+   $2524=$2910;
+   var $2911=$2524;
+   var $2912=$2911; //@line 1794 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2913=(($2911)|0); //@line 1794 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2523=$2913;
+   var $2914=$2523;
+   $2522=$2914;
+   var $2915=$2522;
+   var $2916=$2915; //@line 2374 "G:/emscripten/system/include/libcxx/memory"
+   $2521=$2916;
+   var $2917=$2521;
+   var $2918=$2917; //@line 2187 "G:/emscripten/system/include/libcxx/memory"
+   $2520=$2918;
+   var $2919=$2520;
+   var $2920=(($2917)|0); //@line 2187 "G:/emscripten/system/include/libcxx/memory"
+   $2519=$2911;
+   var $2921=$2519;
+   var $2922=(($2921)|0); //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   $2518=$2922;
+   var $2923=$2518;
+   var $2924=$2923; //@line 2432 "G:/emscripten/system/include/libcxx/memory"
+   $2517=$2924;
+   var $2925=$2517;
+   var $2926=(($2925)|0); //@line 2253 "G:/emscripten/system/include/libcxx/memory"
+   var $2927=(($2926)|0); //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   var $2928=$2927; //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   var $2929=(($2928)|0); //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   $__a_i_i_i_i_i_i=$2929; //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   $__i_i_i_i_i_i_i=0; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   label = 9; break; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+  case 9: 
+   var $2931=$__i_i_i_i_i_i_i; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   var $2932=(($2931)>>>(0)) < 3; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   if ($2932) { label = 10; break; } else { label = 11; break; } //@line 1611 "G:/emscripten/system/include/libcxx/string"
+  case 10: 
+   var $2934=$__i_i_i_i_i_i_i; //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   var $2935=$__a_i_i_i_i_i_i; //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   var $2936=(($2935+($2934<<2))|0); //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   HEAP32[(($2936)>>2)]=0; //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   var $2937=$__i_i_i_i_i_i_i; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   var $2938=((($2937)+(1))|0); //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   $__i_i_i_i_i_i_i=$2938; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   label = 9; break; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+  case 11: 
+   var $2939=(($2906+44)|0); //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($2939)>>2)]=0; //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2940=(($2906+48)|0); //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2941=$2527; //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($2940)>>2)]=$2941; //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2516=$2530;
+   var $2942=$2516;
+   $2515=$2942;
+   var $2943=$2515;
+   var $2944=$2943; //@line 1794 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2945=(($2943)|0); //@line 1794 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2514=$2945;
+   var $2946=$2514;
+   $2513=$2946;
+   var $2947=$2513;
+   var $2948=$2947; //@line 2374 "G:/emscripten/system/include/libcxx/memory"
+   $2512=$2948;
+   var $2949=$2512;
+   var $2950=$2949; //@line 2187 "G:/emscripten/system/include/libcxx/memory"
+   $2511=$2950;
+   var $2951=$2511;
+   var $2952=(($2949)|0); //@line 2187 "G:/emscripten/system/include/libcxx/memory"
+   $2510=$2943;
+   var $2953=$2510;
+   var $2954=(($2953)|0); //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   $2509=$2954;
+   var $2955=$2509;
+   var $2956=$2955; //@line 2432 "G:/emscripten/system/include/libcxx/memory"
+   $2508=$2956;
+   var $2957=$2508;
+   var $2958=(($2957)|0); //@line 2253 "G:/emscripten/system/include/libcxx/memory"
+   var $2959=(($2958)|0); //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   var $2960=$2959; //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   var $2961=(($2960)|0); //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   $__a_i_i_i1_i_i_i=$2961; //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   $__i_i_i_i2_i_i_i=0; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   label = 12; break; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+  case 12: 
+   var $2963=$__i_i_i_i2_i_i_i; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   var $2964=(($2963)>>>(0)) < 3; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   if ($2964) { label = 13; break; } else { label = 14; break; } //@line 1611 "G:/emscripten/system/include/libcxx/string"
+  case 13: 
+   var $2966=$__i_i_i_i2_i_i_i; //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   var $2967=$__a_i_i_i1_i_i_i; //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   var $2968=(($2967+($2966<<2))|0); //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   HEAP32[(($2968)>>2)]=0; //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   var $2969=$__i_i_i_i2_i_i_i; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   var $2970=((($2969)+(1))|0); //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   $__i_i_i_i2_i_i_i=$2970; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   label = 12; break; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+  case 14: 
+   (function() { try { __THREW__ = 0; return __ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE3strERKNS_12basic_stringIcS2_S4_EE($2906, $2530) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 15; break; } else { label = 17; break; } //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+  case 15: 
+   (function() { try { __THREW__ = 0; return __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev($2530) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 30; break; } else { label = 16; break; } //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+  case 16: 
+   var $2973$0 = ___cxa_find_matching_catch(-1, -1); $2973$1 = tempRet0;
+   var $2974=$2973$0;
+   $2528=$2974; //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+   var $2975=$2973$1;
+   $2529=$2975; //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+   label = 19; break; //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+  case 17: 
+   var $2977$0 = ___cxa_find_matching_catch(-1, -1); $2977$1 = tempRet0;
+   var $2978=$2977$0;
+   $2528=$2978; //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+   var $2979=$2977$1;
+   $2529=$2979; //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+   (function() { try { __THREW__ = 0; return __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev($2530) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 18; break; } else { label = 22; break; } //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+  case 18: 
+   label = 19; break; //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+  case 19: 
+   (function() { try { __THREW__ = 0; return __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev($2909) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 20; break; } else { label = 22; break; } //@line 244 "G:/emscripten/system/include/libcxx/sstream"
+  case 20: 
+   var $2983=$2906; //@line 244 "G:/emscripten/system/include/libcxx/sstream"
+   (function() { try { __THREW__ = 0; return __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEED2Ev($2983) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 21; break; } else { label = 22; break; } //@line 244 "G:/emscripten/system/include/libcxx/sstream"
+  case 21: 
+   var $2985=$2528; //@line 244 "G:/emscripten/system/include/libcxx/sstream"
+   var $2986=$2529; //@line 244 "G:/emscripten/system/include/libcxx/sstream"
+   var $2987$0=$2985;
+   var $2987$1=0;
+   var $2988$0=$2987$0;
+   var $2988$1=$2986;
+   var $eh_lpad_body_i$1 = $2988$1;var $eh_lpad_body_i$0 = $2988$0;label = 25; break;
+  case 22: 
+   var $2990$0 = ___cxa_find_matching_catch(-1, -1,0); $2990$1 = tempRet0;
+   __ZSt9terminatev(); //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+   throw "Reached an unreachable!"; //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+  case 23: 
+   var $2992$0 = ___cxa_find_matching_catch(-1, -1); $2992$1 = tempRet0;
+   var $2993=$2992$0;
+   $2537=$2993; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2994=$2992$1;
+   $2538=$2994; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   label = 27; break; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+  case 24: 
+   var $2996$0 = ___cxa_find_matching_catch(-1, -1); $2996$1 = tempRet0;
+   var $eh_lpad_body_i$1 = $2996$1;var $eh_lpad_body_i$0 = $2996$0;label = 25; break;
+  case 25: 
+   var $eh_lpad_body_i$0;
+   var $eh_lpad_body_i$1;
+   var $2997=$eh_lpad_body_i$0;
+   $2537=$2997; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2998=$eh_lpad_body_i$1;
+   $2538=$2998; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $2999=$2806; //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+   (function() { try { __THREW__ = 0; return __ZNSt3__114basic_iostreamIcNS_11char_traitsIcEEED2Ev($2999, ((109796)|0)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 26; break; } else { label = 29; break; } //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+  case 26: 
+   label = 27; break; //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+  case 27: 
+   var $3002=$2806; //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+   var $3003=(($3002+64)|0); //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+   var $3004=$3003; //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+   (function() { try { __THREW__ = 0; return __ZNSt3__19basic_iosIcNS_11char_traitsIcEEED2Ev($3004) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 28; break; } else { label = 29; break; } //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+  case 28: 
+   var $3006=$2537; //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+   var $3007=$2538; //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+   var $3008$0=$3006;
+   var $3008$1=0;
+   var $3009$0=$3008$0;
+   var $3009$1=$3007;
+   ___resumeException($3009$0) //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+  case 29: 
+   var $3011$0 = ___cxa_find_matching_catch(-1, -1,0); $3011$1 = tempRet0;
+   __ZSt9terminatev(); //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+   throw "Reached an unreachable!"; //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+  case 30: 
+   var $3012=$std_stringstream; //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $3013=(($3012+8)|0); //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $3014=$3013; //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $3015 = (function() { try { __THREW__ = 0; return __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc($3014, ((13856)|0)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 31; break; } else { label = 52; break; } //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 31: 
+   (function() { try { __THREW__ = 0; return __ZN6StringC1EPKc($2545, ((14584)|0)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 32; break; } else { label = 52; break; } //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 32: 
+   (function() { try { __THREW__ = 0; return __ZN4File13NormalizePathERK6Stringc($2544, $2545, 92) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 33; break; } else { label = 53; break; } //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 33: 
+   var $3019 = (function() { try { __THREW__ = 0; return __ZlsRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEERK6String($3015, $2544) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 34; break; } else { label = 54; break; } //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 34: 
+   var $3021 = (function() { try { __THREW__ = 0; return __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc($3019, ((66832)|0)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 35; break; } else { label = 54; break; } //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 35: 
+   var $3023 = (function() { try { __THREW__ = 0; return __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc($3021, ((14584)|0)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 36; break; } else { label = 54; break; } //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 36: 
+   var $3025 = (function() { try { __THREW__ = 0; return __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc($3023, ((64456)|0)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 37; break; } else { label = 54; break; } //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 37: 
+   (function() { try { __THREW__ = 0; return __ZN6StringD1Ev($2544) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 38; break; } else { label = 53; break; } //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 38: 
+   (function() { try { __THREW__ = 0; return __ZN6StringD1Ev($2545) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 39; break; } else { label = 52; break; } //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 39: 
+   var $3029=___cxa_allocate_exception(8); //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   $2547=1;
+   var $3030=$3029; //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   $2495=$std_stringstream;
+   var $3031=$2495;
+   var $3032=(($3031+12)|0); //@line 958 "G:/emscripten/system/include/libcxx/sstream"
+   (function() { try { __THREW__ = 0; return __ZNKSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE3strEv($2546, $3032) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 40; break; } else { label = 58; break; }
+  case 40: 
+   label = 41; break;
+  case 41: 
+   $2494=$2546;
+   var $3034=$2494;
+   $2493=$3034;
+   var $3035=$2493;
+   $2492=$3035;
+   var $3036=$2492;
+   $2491=$3036;
+   var $3037=$2491;
+   var $3038=(($3037)|0); //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   $2490=$3038;
+   var $3039=$2490;
+   var $3040=$3039; //@line 2433 "G:/emscripten/system/include/libcxx/memory"
+   $2489=$3040;
+   var $3041=$2489;
+   var $3042=(($3041)|0); //@line 2254 "G:/emscripten/system/include/libcxx/memory"
+   var $3043=(($3042)|0); //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   var $3044=$3043; //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   var $3045=(($3044)|0); //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   var $3046=$3045; //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   var $3047=HEAP8[($3046)]; //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   var $3048=(($3047)&(255)); //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   var $3049=$3048 & 1; //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   var $3050=(($3049)|(0))!=0; //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   if ($3050) { label = 42; break; } else { label = 43; break; } //@line 1605 "G:/emscripten/system/include/libcxx/string"
+  case 42: 
+   $2483=$3036;
+   var $3052=$2483;
+   var $3053=(($3052)|0); //@line 1593 "G:/emscripten/system/include/libcxx/string"
+   $2482=$3053;
+   var $3054=$2482;
+   var $3055=$3054; //@line 2433 "G:/emscripten/system/include/libcxx/memory"
+   $2481=$3055;
+   var $3056=$2481;
+   var $3057=(($3056)|0); //@line 2254 "G:/emscripten/system/include/libcxx/memory"
+   var $3058=(($3057)|0); //@line 1593 "G:/emscripten/system/include/libcxx/string"
+   var $3059=$3058; //@line 1593 "G:/emscripten/system/include/libcxx/string"
+   var $3060=(($3059+8)|0); //@line 1593 "G:/emscripten/system/include/libcxx/string"
+   var $3061=HEAP32[(($3060)>>2)]; //@line 1593 "G:/emscripten/system/include/libcxx/string"
+   var $3075 = $3061;label = 44; break; //@line 1605 "G:/emscripten/system/include/libcxx/string"
+  case 43: 
+   $2488=$3036;
+   var $3063=$2488;
+   var $3064=(($3063)|0); //@line 1599 "G:/emscripten/system/include/libcxx/string"
+   $2487=$3064;
+   var $3065=$2487;
+   var $3066=$3065; //@line 2433 "G:/emscripten/system/include/libcxx/memory"
+   $2486=$3066;
+   var $3067=$2486;
+   var $3068=(($3067)|0); //@line 2254 "G:/emscripten/system/include/libcxx/memory"
+   var $3069=(($3068)|0); //@line 1599 "G:/emscripten/system/include/libcxx/string"
+   var $3070=$3069; //@line 1599 "G:/emscripten/system/include/libcxx/string"
+   var $3071=(($3070+1)|0); //@line 1599 "G:/emscripten/system/include/libcxx/string"
+   var $3072=(($3071)|0); //@line 1599 "G:/emscripten/system/include/libcxx/string"
+   $2485=$3072;
+   var $3073=$2485; //@line 960 "G:/emscripten/system/include/libcxx/memory"
+   $2484=$3073;
+   var $3074=$2484; //@line 627 "G:/emscripten/system/include/libcxx/memory"
+   var $3075 = $3074;label = 44; break; //@line 1605 "G:/emscripten/system/include/libcxx/string"
+  case 44: 
+   var $3075; //@line 1605 "G:/emscripten/system/include/libcxx/string"
+   $2480=$3075;
+   var $3076=$2480; //@line 1086 "G:/emscripten/system/include/libcxx/memory"
+   (function() { try { __THREW__ = 0; return __ZNSt13runtime_errorC2EPKc($3030, $3076) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 45; break; } else { label = 59; break; } //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 45: 
+   $2547=0; //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   (function() { try { __THREW__ = 0; return ___cxa_throw($3029, 113416, (584)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 2842; break; } else { label = 59; break; } //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   (function() { try { __THREW__ = 0; return __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev($2546) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 46; break; } else { label = 58; break; } //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 46: 
+   __ZNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev($std_stringstream); //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   label = 66; break; //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 47: 
+   var $3081$0 = ___cxa_find_matching_catch(-1, -1); $3081$1 = tempRet0;
+   var $3082=$3081$0;
+   $2542=$3082; //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $3083=$3081$1;
+   $2543=$3083; //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   label = 50; break; //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 48: 
+   var $3085$0 = ___cxa_find_matching_catch(-1, -1); $3085$1 = tempRet0;
+   var $3086=$3085$0;
+   $2542=$3086; //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $3087=$3085$1;
+   $2543=$3087; //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   (function() { try { __THREW__ = 0; return __ZN6StringD1Ev($2540) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 49; break; } else { label = 2841; break; } //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 49: 
+   label = 50; break; //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 50: 
+   (function() { try { __THREW__ = 0; return __ZN6StringD1Ev($2541) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 51; break; } else { label = 2841; break; } //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 51: 
+   label = 2840; break; //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 52: 
+   var $3092$0 = ___cxa_find_matching_catch(-1, -1); $3092$1 = tempRet0;
+   var $3093=$3092$0;
+   $2542=$3093; //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $3094=$3092$1;
+   $2543=$3094; //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   label = 64; break; //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 53: 
+   var $3096$0 = ___cxa_find_matching_catch(-1, -1); $3096$1 = tempRet0;
+   var $3097=$3096$0;
+   $2542=$3097; //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $3098=$3096$1;
+   $2543=$3098; //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   label = 56; break; //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 54: 
+   var $3100$0 = ___cxa_find_matching_catch(-1, -1); $3100$1 = tempRet0;
+   var $3101=$3100$0;
+   $2542=$3101; //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $3102=$3100$1;
+   $2543=$3102; //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   (function() { try { __THREW__ = 0; return __ZN6StringD1Ev($2544) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 55; break; } else { label = 2841; break; } //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 55: 
+   label = 56; break; //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 56: 
+   (function() { try { __THREW__ = 0; return __ZN6StringD1Ev($2545) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 57; break; } else { label = 2841; break; } //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 57: 
+   label = 64; break; //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 58: 
+   var $3107$0 = ___cxa_find_matching_catch(-1, -1); $3107$1 = tempRet0;
+   var $3108=$3107$0;
+   $2542=$3108; //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $3109=$3107$1;
+   $2543=$3109; //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   label = 61; break; //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 59: 
+   var $3111$0 = ___cxa_find_matching_catch(-1, -1); $3111$1 = tempRet0;
+   var $3112=$3111$0;
+   $2542=$3112; //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $3113=$3111$1;
+   $2543=$3113; //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   (function() { try { __THREW__ = 0; return __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev($2546) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 60; break; } else { label = 2841; break; } //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 60: 
+   label = 61; break; //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 61: 
+   var $3116=$2547; //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   if ($3116) { label = 62; break; } else { label = 63; break; } //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 62: 
+   ___cxa_free_exception($3029); //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   label = 63; break; //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 63: 
+   label = 64; break; //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 64: 
+   (function() { try { __THREW__ = 0; return __ZNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev($std_stringstream) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 65; break; } else { label = 2841; break; } //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 65: 
+   label = 2840; break; //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 66: 
+   label = 67; break; //@line 136 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 67: 
+   label = 68; break; //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 68: 
+   __ZN6StringC1EPKc($2549, ((13320)|0)); //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   (function() { try { __THREW__ = 0; return __ZN4File13NormalizePathERK6Stringc($2548, $2549, 92) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 69; break; } else { label = 113; break; } //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 69: 
+   var $3125 = (function() { try { __THREW__ = 0; return __ZNK6StringneEPKc($2548, ((13320)|0)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 70; break; } else { label = 114; break; } //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 70: 
+   (function() { try { __THREW__ = 0; return __ZN6StringD1Ev($2548) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 71; break; } else { label = 113; break; } //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 71: 
+   __ZN6StringD1Ev($2549); //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   if ($3125) { label = 72; break; } else { label = 132; break; } //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 72: 
+   $2476=$std_stringstream1;
+   $2477=24;
+   var $3129=$2476;
+   var $3130=$3129; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3131=(($3130+64)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3132=$3131; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2475=$3132;
+   var $3133=$2475;
+   var $3134=$3133; //@line 622 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2474=$3134;
+   var $3135=$2474;
+   var $3136=$3135; //@line 328 "G:/emscripten/system/include/libcxx/ios"
+   HEAP32[(($3136)>>2)]=((107288)|0); //@line 328 "G:/emscripten/system/include/libcxx/ios"
+   var $3137=$3133; //@line 622 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3137)>>2)]=((106832)|0); //@line 622 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3138=$3129; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3138)>>2)]=((108180)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3139=$3129; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3140=(($3139+64)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3141=$3140; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3141)>>2)]=((108220)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3142=$3129; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3143=(($3142+8)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3144=$3143; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3144)>>2)]=((108200)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3145=$3129; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3146=(($3129+12)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3147=$3146; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2444=$3145;
+   $2445=((109796)|0);
+   $2446=$3147;
+   var $3148=$2444;
+   var $3149=$2445;
+   var $3150=$3148; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3151=(($3149+4)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3152=$2446; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2441=$3150;
+   $2442=$3151;
+   $2443=$3152;
+   var $3153=$2441;
+   var $3154=$2442;
+   var $3155=HEAP32[(($3154)>>2)]; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3156=$3153; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3156)>>2)]=$3155; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3157=(($3154+4)|0); //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3158=HEAP32[(($3157)>>2)]; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3159=$3153; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3160=HEAP32[(($3159)>>2)]; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3161=((($3160)-(12))|0); //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3162=$3161; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3163=HEAP32[(($3162)>>2)]; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3164=$3153; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3165=(($3164+$3163)|0); //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3166=$3165; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3166)>>2)]=$3158; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3167=(($3153+4)|0); //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3167)>>2)]=0; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3168=$3153; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $3169=HEAP32[(($3168)>>2)]; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $3170=((($3169)-(12))|0); //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $3171=$3170; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $3172=HEAP32[(($3171)>>2)]; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $3173=$3153; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $3174=(($3173+$3172)|0); //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $3175=$3174; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $3176=$2443; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   $2439=$3175;
+   $2440=$3176;
+   var $3177=$2439;
+   var $3178=$3177; //@line 659 "G:/emscripten/system/include/libcxx/ios"
+   var $3179=$2440; //@line 659 "G:/emscripten/system/include/libcxx/ios"
+   var $3180=$3179; //@line 659 "G:/emscripten/system/include/libcxx/ios"
+   (function() { try { __THREW__ = 0; return __ZNSt3__18ios_base4initEPv($3178, $3180) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 73; break; } else { label = 89; break; }
+  case 73: 
+   var $3181=(($3177+72)|0); //@line 660 "G:/emscripten/system/include/libcxx/ios"
+   HEAP32[(($3181)>>2)]=0; //@line 660 "G:/emscripten/system/include/libcxx/ios"
+   var $3182=(($3177+76)|0); //@line 661 "G:/emscripten/system/include/libcxx/ios"
+   HEAP32[(($3182)>>2)]=-1; //@line 661 "G:/emscripten/system/include/libcxx/ios"
+   var $3183=$3148; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3184=(($3183+8)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3185=$3184; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3186=(($3149+12)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2437=$3185;
+   $2438=$3186;
+   var $3187=$2437;
+   var $3188=$2438;
+   var $3189=HEAP32[(($3188)>>2)]; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3190=$3187; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3190)>>2)]=$3189; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3191=(($3188+4)|0); //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3192=HEAP32[(($3191)>>2)]; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3193=$3187; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3194=HEAP32[(($3193)>>2)]; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3195=((($3194)-(12))|0); //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3196=$3195; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3197=HEAP32[(($3196)>>2)]; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3198=$3187; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3199=(($3198+$3197)|0); //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3200=$3199; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3200)>>2)]=$3192; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3201=HEAP32[(($3149)>>2)]; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3202=$3148; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3202)>>2)]=$3201; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3203=(($3149+20)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3204=HEAP32[(($3203)>>2)]; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3205=$3148; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3206=HEAP32[(($3205)>>2)]; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3207=((($3206)-(12))|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3208=$3207; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3209=HEAP32[(($3208)>>2)]; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3210=$3148; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3211=(($3210+$3209)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3212=$3211; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3212)>>2)]=$3204; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3213=(($3149+24)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3214=HEAP32[(($3213)>>2)]; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3215=$3148; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3216=(($3215+8)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3217=$3216; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3217)>>2)]=$3214; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3218=$3129; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3218)>>2)]=((108180)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3219=$3129; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3220=(($3219+64)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3221=$3220; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3221)>>2)]=((108220)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3222=$3129; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3223=(($3222+8)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3224=$3223; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3224)>>2)]=((108200)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3225=(($3129+12)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3226=$2477; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2472=$3225;
+   $2473=$3226;
+   var $3227=$2472;
+   var $3228=$2473; //@line 244 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2467=$3227;
+   $2468=$3228;
+   var $3229=$2467;
+   var $3230=$3229; //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   (function() { try { __THREW__ = 0; return __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEEC2Ev($3230) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 74; break; } else { label = 90; break; }
+  case 74: 
+   var $3231=$3229; //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3231)>>2)]=((108360)|0); //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3232=(($3229+32)|0); //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2466=$3232;
+   var $3233=$2466;
+   $2465=$3233;
+   var $3234=$2465;
+   var $3235=$3234; //@line 1794 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3236=(($3234)|0); //@line 1794 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2464=$3236;
+   var $3237=$2464;
+   $2463=$3237;
+   var $3238=$2463;
+   var $3239=$3238; //@line 2374 "G:/emscripten/system/include/libcxx/memory"
+   $2462=$3239;
+   var $3240=$2462;
+   var $3241=$3240; //@line 2187 "G:/emscripten/system/include/libcxx/memory"
+   $2461=$3241;
+   var $3242=$2461;
+   var $3243=(($3240)|0); //@line 2187 "G:/emscripten/system/include/libcxx/memory"
+   $2460=$3234;
+   var $3244=$2460;
+   var $3245=(($3244)|0); //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   $2459=$3245;
+   var $3246=$2459;
+   var $3247=$3246; //@line 2432 "G:/emscripten/system/include/libcxx/memory"
+   $2458=$3247;
+   var $3248=$2458;
+   var $3249=(($3248)|0); //@line 2253 "G:/emscripten/system/include/libcxx/memory"
+   var $3250=(($3249)|0); //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   var $3251=$3250; //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   var $3252=(($3251)|0); //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   $__a_i_i_i_i_i_i45=$3252; //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   $__i_i_i_i_i_i_i46=0; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   label = 75; break; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+  case 75: 
+   var $3254=$__i_i_i_i_i_i_i46; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   var $3255=(($3254)>>>(0)) < 3; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   if ($3255) { label = 76; break; } else { label = 77; break; } //@line 1611 "G:/emscripten/system/include/libcxx/string"
+  case 76: 
+   var $3257=$__i_i_i_i_i_i_i46; //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   var $3258=$__a_i_i_i_i_i_i45; //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   var $3259=(($3258+($3257<<2))|0); //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   HEAP32[(($3259)>>2)]=0; //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   var $3260=$__i_i_i_i_i_i_i46; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   var $3261=((($3260)+(1))|0); //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   $__i_i_i_i_i_i_i46=$3261; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   label = 75; break; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+  case 77: 
+   var $3262=(($3229+44)|0); //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3262)>>2)]=0; //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3263=(($3229+48)|0); //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3264=$2468; //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3263)>>2)]=$3264; //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2457=$2471;
+   var $3265=$2457;
+   $2456=$3265;
+   var $3266=$2456;
+   var $3267=$3266; //@line 1794 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3268=(($3266)|0); //@line 1794 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2455=$3268;
+   var $3269=$2455;
+   $2454=$3269;
+   var $3270=$2454;
+   var $3271=$3270; //@line 2374 "G:/emscripten/system/include/libcxx/memory"
+   $2453=$3271;
+   var $3272=$2453;
+   var $3273=$3272; //@line 2187 "G:/emscripten/system/include/libcxx/memory"
+   $2452=$3273;
+   var $3274=$2452;
+   var $3275=(($3272)|0); //@line 2187 "G:/emscripten/system/include/libcxx/memory"
+   $2451=$3266;
+   var $3276=$2451;
+   var $3277=(($3276)|0); //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   $2450=$3277;
+   var $3278=$2450;
+   var $3279=$3278; //@line 2432 "G:/emscripten/system/include/libcxx/memory"
+   $2449=$3279;
+   var $3280=$2449;
+   var $3281=(($3280)|0); //@line 2253 "G:/emscripten/system/include/libcxx/memory"
+   var $3282=(($3281)|0); //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   var $3283=$3282; //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   var $3284=(($3283)|0); //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   $__a_i_i_i1_i_i_i43=$3284; //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   $__i_i_i_i2_i_i_i44=0; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   label = 78; break; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+  case 78: 
+   var $3286=$__i_i_i_i2_i_i_i44; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   var $3287=(($3286)>>>(0)) < 3; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   if ($3287) { label = 79; break; } else { label = 80; break; } //@line 1611 "G:/emscripten/system/include/libcxx/string"
+  case 79: 
+   var $3289=$__i_i_i_i2_i_i_i44; //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   var $3290=$__a_i_i_i1_i_i_i43; //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   var $3291=(($3290+($3289<<2))|0); //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   HEAP32[(($3291)>>2)]=0; //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   var $3292=$__i_i_i_i2_i_i_i44; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   var $3293=((($3292)+(1))|0); //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   $__i_i_i_i2_i_i_i44=$3293; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   label = 78; break; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+  case 80: 
+   (function() { try { __THREW__ = 0; return __ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE3strERKNS_12basic_stringIcS2_S4_EE($3229, $2471) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 81; break; } else { label = 83; break; } //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+  case 81: 
+   (function() { try { __THREW__ = 0; return __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev($2471) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 96; break; } else { label = 82; break; } //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+  case 82: 
+   var $3296$0 = ___cxa_find_matching_catch(-1, -1); $3296$1 = tempRet0;
+   var $3297=$3296$0;
+   $2469=$3297; //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+   var $3298=$3296$1;
+   $2470=$3298; //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+   label = 85; break; //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+  case 83: 
+   var $3300$0 = ___cxa_find_matching_catch(-1, -1); $3300$1 = tempRet0;
+   var $3301=$3300$0;
+   $2469=$3301; //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+   var $3302=$3300$1;
+   $2470=$3302; //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+   (function() { try { __THREW__ = 0; return __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev($2471) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 84; break; } else { label = 88; break; } //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+  case 84: 
+   label = 85; break; //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+  case 85: 
+   (function() { try { __THREW__ = 0; return __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev($3232) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 86; break; } else { label = 88; break; } //@line 244 "G:/emscripten/system/include/libcxx/sstream"
+  case 86: 
+   var $3306=$3229; //@line 244 "G:/emscripten/system/include/libcxx/sstream"
+   (function() { try { __THREW__ = 0; return __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEED2Ev($3306) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 87; break; } else { label = 88; break; } //@line 244 "G:/emscripten/system/include/libcxx/sstream"
+  case 87: 
+   var $3308=$2469; //@line 244 "G:/emscripten/system/include/libcxx/sstream"
+   var $3309=$2470; //@line 244 "G:/emscripten/system/include/libcxx/sstream"
+   var $3310$0=$3308;
+   var $3310$1=0;
+   var $3311$0=$3310$0;
+   var $3311$1=$3309;
+   var $eh_lpad_body_i51$1 = $3311$1;var $eh_lpad_body_i51$0 = $3311$0;label = 91; break;
+  case 88: 
+   var $3313$0 = ___cxa_find_matching_catch(-1, -1,0); $3313$1 = tempRet0;
+   __ZSt9terminatev(); //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+   throw "Reached an unreachable!"; //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+  case 89: 
+   var $3315$0 = ___cxa_find_matching_catch(-1, -1); $3315$1 = tempRet0;
+   var $3316=$3315$0;
+   $2478=$3316; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3317=$3315$1;
+   $2479=$3317; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   label = 93; break; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+  case 90: 
+   var $3319$0 = ___cxa_find_matching_catch(-1, -1); $3319$1 = tempRet0;
+   var $eh_lpad_body_i51$1 = $3319$1;var $eh_lpad_body_i51$0 = $3319$0;label = 91; break;
+  case 91: 
+   var $eh_lpad_body_i51$0;
+   var $eh_lpad_body_i51$1;
+   var $3320=$eh_lpad_body_i51$0;
+   $2478=$3320; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3321=$eh_lpad_body_i51$1;
+   $2479=$3321; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3322=$3129; //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+   (function() { try { __THREW__ = 0; return __ZNSt3__114basic_iostreamIcNS_11char_traitsIcEEED2Ev($3322, ((109796)|0)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 92; break; } else { label = 95; break; } //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+  case 92: 
+   label = 93; break; //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+  case 93: 
+   var $3325=$3129; //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+   var $3326=(($3325+64)|0); //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+   var $3327=$3326; //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+   (function() { try { __THREW__ = 0; return __ZNSt3__19basic_iosIcNS_11char_traitsIcEEED2Ev($3327) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 94; break; } else { label = 95; break; } //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+  case 94: 
+   var $3329=$2478; //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+   var $3330=$2479; //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+   var $3331$0=$3329;
+   var $3331$1=0;
+   var $3332$0=$3331$0;
+   var $3332$1=$3330;
+   ___resumeException($3332$0) //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+  case 95: 
+   var $3334$0 = ___cxa_find_matching_catch(-1, -1,0); $3334$1 = tempRet0;
+   __ZSt9terminatev(); //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+   throw "Reached an unreachable!"; //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+  case 96: 
+   var $3335=$std_stringstream1; //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $3336=(($3335+8)|0); //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $3337=$3336; //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $3338 = (function() { try { __THREW__ = 0; return __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc($3337, ((12784)|0)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 97; break; } else { label = 118; break; } //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 97: 
+   (function() { try { __THREW__ = 0; return __ZN6StringC1EPKc($2551, ((13320)|0)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 98; break; } else { label = 118; break; } //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 98: 
+   (function() { try { __THREW__ = 0; return __ZN4File13NormalizePathERK6Stringc($2550, $2551, 92) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 99; break; } else { label = 119; break; } //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 99: 
+   var $3342 = (function() { try { __THREW__ = 0; return __ZlsRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEERK6String($3338, $2550) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 100; break; } else { label = 120; break; } //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 100: 
+   var $3344 = (function() { try { __THREW__ = 0; return __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc($3342, ((66832)|0)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 101; break; } else { label = 120; break; } //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 101: 
+   var $3346 = (function() { try { __THREW__ = 0; return __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc($3344, ((13320)|0)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 102; break; } else { label = 120; break; } //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 102: 
+   var $3348 = (function() { try { __THREW__ = 0; return __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc($3346, ((64456)|0)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 103; break; } else { label = 120; break; } //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 103: 
+   (function() { try { __THREW__ = 0; return __ZN6StringD1Ev($2550) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 104; break; } else { label = 119; break; } //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 104: 
+   (function() { try { __THREW__ = 0; return __ZN6StringD1Ev($2551) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 105; break; } else { label = 118; break; } //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 105: 
+   var $3352=___cxa_allocate_exception(8); //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   $2553=1;
+   var $3353=$3352; //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   $2436=$std_stringstream1;
+   var $3354=$2436;
+   var $3355=(($3354+12)|0); //@line 958 "G:/emscripten/system/include/libcxx/sstream"
+   (function() { try { __THREW__ = 0; return __ZNKSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE3strEv($2552, $3355) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 106; break; } else { label = 124; break; }
+  case 106: 
+   label = 107; break;
+  case 107: 
+   $2435=$2552;
+   var $3357=$2435;
+   $2434=$3357;
+   var $3358=$2434;
+   $2433=$3358;
+   var $3359=$2433;
+   $2432=$3359;
+   var $3360=$2432;
+   var $3361=(($3360)|0); //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   $2431=$3361;
+   var $3362=$2431;
+   var $3363=$3362; //@line 2433 "G:/emscripten/system/include/libcxx/memory"
+   $2430=$3363;
+   var $3364=$2430;
+   var $3365=(($3364)|0); //@line 2254 "G:/emscripten/system/include/libcxx/memory"
+   var $3366=(($3365)|0); //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   var $3367=$3366; //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   var $3368=(($3367)|0); //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   var $3369=$3368; //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   var $3370=HEAP8[($3369)]; //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   var $3371=(($3370)&(255)); //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   var $3372=$3371 & 1; //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   var $3373=(($3372)|(0))!=0; //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   if ($3373) { label = 108; break; } else { label = 109; break; } //@line 1605 "G:/emscripten/system/include/libcxx/string"
+  case 108: 
+   $2424=$3359;
+   var $3375=$2424;
+   var $3376=(($3375)|0); //@line 1593 "G:/emscripten/system/include/libcxx/string"
+   $2423=$3376;
+   var $3377=$2423;
+   var $3378=$3377; //@line 2433 "G:/emscripten/system/include/libcxx/memory"
+   $2422=$3378;
+   var $3379=$2422;
+   var $3380=(($3379)|0); //@line 2254 "G:/emscripten/system/include/libcxx/memory"
+   var $3381=(($3380)|0); //@line 1593 "G:/emscripten/system/include/libcxx/string"
+   var $3382=$3381; //@line 1593 "G:/emscripten/system/include/libcxx/string"
+   var $3383=(($3382+8)|0); //@line 1593 "G:/emscripten/system/include/libcxx/string"
+   var $3384=HEAP32[(($3383)>>2)]; //@line 1593 "G:/emscripten/system/include/libcxx/string"
+   var $3398 = $3384;label = 110; break; //@line 1605 "G:/emscripten/system/include/libcxx/string"
+  case 109: 
+   $2429=$3359;
+   var $3386=$2429;
+   var $3387=(($3386)|0); //@line 1599 "G:/emscripten/system/include/libcxx/string"
+   $2428=$3387;
+   var $3388=$2428;
+   var $3389=$3388; //@line 2433 "G:/emscripten/system/include/libcxx/memory"
+   $2427=$3389;
+   var $3390=$2427;
+   var $3391=(($3390)|0); //@line 2254 "G:/emscripten/system/include/libcxx/memory"
+   var $3392=(($3391)|0); //@line 1599 "G:/emscripten/system/include/libcxx/string"
+   var $3393=$3392; //@line 1599 "G:/emscripten/system/include/libcxx/string"
+   var $3394=(($3393+1)|0); //@line 1599 "G:/emscripten/system/include/libcxx/string"
+   var $3395=(($3394)|0); //@line 1599 "G:/emscripten/system/include/libcxx/string"
+   $2426=$3395;
+   var $3396=$2426; //@line 960 "G:/emscripten/system/include/libcxx/memory"
+   $2425=$3396;
+   var $3397=$2425; //@line 627 "G:/emscripten/system/include/libcxx/memory"
+   var $3398 = $3397;label = 110; break; //@line 1605 "G:/emscripten/system/include/libcxx/string"
+  case 110: 
+   var $3398; //@line 1605 "G:/emscripten/system/include/libcxx/string"
+   $2421=$3398;
+   var $3399=$2421; //@line 1086 "G:/emscripten/system/include/libcxx/memory"
+   (function() { try { __THREW__ = 0; return __ZNSt13runtime_errorC2EPKc($3353, $3399) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 111; break; } else { label = 125; break; } //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 111: 
+   $2553=0; //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   (function() { try { __THREW__ = 0; return ___cxa_throw($3352, 113416, (584)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 2842; break; } else { label = 125; break; } //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   (function() { try { __THREW__ = 0; return __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev($2552) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 112; break; } else { label = 124; break; } //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 112: 
+   __ZNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev($std_stringstream1); //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   label = 132; break; //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 113: 
+   var $3404$0 = ___cxa_find_matching_catch(-1, -1); $3404$1 = tempRet0;
+   var $3405=$3404$0;
+   $2542=$3405; //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $3406=$3404$1;
+   $2543=$3406; //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   label = 116; break; //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 114: 
+   var $3408$0 = ___cxa_find_matching_catch(-1, -1); $3408$1 = tempRet0;
+   var $3409=$3408$0;
+   $2542=$3409; //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $3410=$3408$1;
+   $2543=$3410; //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   (function() { try { __THREW__ = 0; return __ZN6StringD1Ev($2548) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 115; break; } else { label = 2841; break; } //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 115: 
+   label = 116; break; //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 116: 
+   (function() { try { __THREW__ = 0; return __ZN6StringD1Ev($2549) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 117; break; } else { label = 2841; break; } //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 117: 
+   label = 2840; break; //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 118: 
+   var $3415$0 = ___cxa_find_matching_catch(-1, -1); $3415$1 = tempRet0;
+   var $3416=$3415$0;
+   $2542=$3416; //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $3417=$3415$1;
+   $2543=$3417; //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   label = 130; break; //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 119: 
+   var $3419$0 = ___cxa_find_matching_catch(-1, -1); $3419$1 = tempRet0;
+   var $3420=$3419$0;
+   $2542=$3420; //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $3421=$3419$1;
+   $2543=$3421; //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   label = 122; break; //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 120: 
+   var $3423$0 = ___cxa_find_matching_catch(-1, -1); $3423$1 = tempRet0;
+   var $3424=$3423$0;
+   $2542=$3424; //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $3425=$3423$1;
+   $2543=$3425; //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   (function() { try { __THREW__ = 0; return __ZN6StringD1Ev($2550) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 121; break; } else { label = 2841; break; } //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 121: 
+   label = 122; break; //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 122: 
+   (function() { try { __THREW__ = 0; return __ZN6StringD1Ev($2551) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 123; break; } else { label = 2841; break; } //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 123: 
+   label = 130; break; //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 124: 
+   var $3430$0 = ___cxa_find_matching_catch(-1, -1); $3430$1 = tempRet0;
+   var $3431=$3430$0;
+   $2542=$3431; //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $3432=$3430$1;
+   $2543=$3432; //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   label = 127; break; //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 125: 
+   var $3434$0 = ___cxa_find_matching_catch(-1, -1); $3434$1 = tempRet0;
+   var $3435=$3434$0;
+   $2542=$3435; //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $3436=$3434$1;
+   $2543=$3436; //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   (function() { try { __THREW__ = 0; return __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev($2552) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 126; break; } else { label = 2841; break; } //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 126: 
+   label = 127; break; //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 127: 
+   var $3439=$2553; //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   if ($3439) { label = 128; break; } else { label = 129; break; } //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 128: 
+   ___cxa_free_exception($3352); //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   label = 129; break; //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 129: 
+   label = 130; break; //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 130: 
+   (function() { try { __THREW__ = 0; return __ZNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev($std_stringstream1) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 131; break; } else { label = 2841; break; } //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 131: 
+   label = 2840; break; //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 132: 
+   label = 133; break; //@line 137 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 133: 
+   label = 134; break; //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 134: 
+   __ZN6StringC1EPKc($2555, ((11736)|0)); //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   (function() { try { __THREW__ = 0; return __ZN4File13NormalizePathERK6Stringc($2554, $2555, 92) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 135; break; } else { label = 179; break; } //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 135: 
+   var $3448 = (function() { try { __THREW__ = 0; return __ZNK6StringneEPKc($2554, ((14584)|0)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 136; break; } else { label = 180; break; } //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 136: 
+   (function() { try { __THREW__ = 0; return __ZN6StringD1Ev($2554) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 137; break; } else { label = 179; break; } //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 137: 
+   __ZN6StringD1Ev($2555); //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   if ($3448) { label = 138; break; } else { label = 198; break; } //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 138: 
+   $2417=$std_stringstream2;
+   $2418=24;
+   var $3452=$2417;
+   var $3453=$3452; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3454=(($3453+64)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3455=$3454; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2416=$3455;
+   var $3456=$2416;
+   var $3457=$3456; //@line 622 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2415=$3457;
+   var $3458=$2415;
+   var $3459=$3458; //@line 328 "G:/emscripten/system/include/libcxx/ios"
+   HEAP32[(($3459)>>2)]=((107288)|0); //@line 328 "G:/emscripten/system/include/libcxx/ios"
+   var $3460=$3456; //@line 622 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3460)>>2)]=((106832)|0); //@line 622 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3461=$3452; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3461)>>2)]=((108180)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3462=$3452; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3463=(($3462+64)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3464=$3463; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3464)>>2)]=((108220)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3465=$3452; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3466=(($3465+8)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3467=$3466; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3467)>>2)]=((108200)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3468=$3452; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3469=(($3452+12)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3470=$3469; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2385=$3468;
+   $2386=((109796)|0);
+   $2387=$3470;
+   var $3471=$2385;
+   var $3472=$2386;
+   var $3473=$3471; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3474=(($3472+4)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3475=$2387; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2382=$3473;
+   $2383=$3474;
+   $2384=$3475;
+   var $3476=$2382;
+   var $3477=$2383;
+   var $3478=HEAP32[(($3477)>>2)]; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3479=$3476; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3479)>>2)]=$3478; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3480=(($3477+4)|0); //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3481=HEAP32[(($3480)>>2)]; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3482=$3476; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3483=HEAP32[(($3482)>>2)]; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3484=((($3483)-(12))|0); //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3485=$3484; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3486=HEAP32[(($3485)>>2)]; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3487=$3476; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3488=(($3487+$3486)|0); //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3489=$3488; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3489)>>2)]=$3481; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3490=(($3476+4)|0); //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3490)>>2)]=0; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3491=$3476; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $3492=HEAP32[(($3491)>>2)]; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $3493=((($3492)-(12))|0); //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $3494=$3493; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $3495=HEAP32[(($3494)>>2)]; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $3496=$3476; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $3497=(($3496+$3495)|0); //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $3498=$3497; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $3499=$2384; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   $2380=$3498;
+   $2381=$3499;
+   var $3500=$2380;
+   var $3501=$3500; //@line 659 "G:/emscripten/system/include/libcxx/ios"
+   var $3502=$2381; //@line 659 "G:/emscripten/system/include/libcxx/ios"
+   var $3503=$3502; //@line 659 "G:/emscripten/system/include/libcxx/ios"
+   (function() { try { __THREW__ = 0; return __ZNSt3__18ios_base4initEPv($3501, $3503) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 139; break; } else { label = 155; break; }
+  case 139: 
+   var $3504=(($3500+72)|0); //@line 660 "G:/emscripten/system/include/libcxx/ios"
+   HEAP32[(($3504)>>2)]=0; //@line 660 "G:/emscripten/system/include/libcxx/ios"
+   var $3505=(($3500+76)|0); //@line 661 "G:/emscripten/system/include/libcxx/ios"
+   HEAP32[(($3505)>>2)]=-1; //@line 661 "G:/emscripten/system/include/libcxx/ios"
+   var $3506=$3471; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3507=(($3506+8)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3508=$3507; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3509=(($3472+12)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2378=$3508;
+   $2379=$3509;
+   var $3510=$2378;
+   var $3511=$2379;
+   var $3512=HEAP32[(($3511)>>2)]; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3513=$3510; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3513)>>2)]=$3512; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3514=(($3511+4)|0); //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3515=HEAP32[(($3514)>>2)]; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3516=$3510; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3517=HEAP32[(($3516)>>2)]; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3518=((($3517)-(12))|0); //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3519=$3518; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3520=HEAP32[(($3519)>>2)]; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3521=$3510; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3522=(($3521+$3520)|0); //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3523=$3522; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3523)>>2)]=$3515; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3524=HEAP32[(($3472)>>2)]; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3525=$3471; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3525)>>2)]=$3524; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3526=(($3472+20)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3527=HEAP32[(($3526)>>2)]; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3528=$3471; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3529=HEAP32[(($3528)>>2)]; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3530=((($3529)-(12))|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3531=$3530; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3532=HEAP32[(($3531)>>2)]; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3533=$3471; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3534=(($3533+$3532)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3535=$3534; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3535)>>2)]=$3527; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3536=(($3472+24)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3537=HEAP32[(($3536)>>2)]; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3538=$3471; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3539=(($3538+8)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3540=$3539; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3540)>>2)]=$3537; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3541=$3452; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3541)>>2)]=((108180)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3542=$3452; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3543=(($3542+64)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3544=$3543; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3544)>>2)]=((108220)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3545=$3452; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3546=(($3545+8)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3547=$3546; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3547)>>2)]=((108200)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3548=(($3452+12)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3549=$2418; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2413=$3548;
+   $2414=$3549;
+   var $3550=$2413;
+   var $3551=$2414; //@line 244 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2408=$3550;
+   $2409=$3551;
+   var $3552=$2408;
+   var $3553=$3552; //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   (function() { try { __THREW__ = 0; return __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEEC2Ev($3553) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 140; break; } else { label = 156; break; }
+  case 140: 
+   var $3554=$3552; //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3554)>>2)]=((108360)|0); //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3555=(($3552+32)|0); //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2407=$3555;
+   var $3556=$2407;
+   $2406=$3556;
+   var $3557=$2406;
+   var $3558=$3557; //@line 1794 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3559=(($3557)|0); //@line 1794 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2405=$3559;
+   var $3560=$2405;
+   $2404=$3560;
+   var $3561=$2404;
+   var $3562=$3561; //@line 2374 "G:/emscripten/system/include/libcxx/memory"
+   $2403=$3562;
+   var $3563=$2403;
+   var $3564=$3563; //@line 2187 "G:/emscripten/system/include/libcxx/memory"
+   $2402=$3564;
+   var $3565=$2402;
+   var $3566=(($3563)|0); //@line 2187 "G:/emscripten/system/include/libcxx/memory"
+   $2401=$3557;
+   var $3567=$2401;
+   var $3568=(($3567)|0); //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   $2400=$3568;
+   var $3569=$2400;
+   var $3570=$3569; //@line 2432 "G:/emscripten/system/include/libcxx/memory"
+   $2399=$3570;
+   var $3571=$2399;
+   var $3572=(($3571)|0); //@line 2253 "G:/emscripten/system/include/libcxx/memory"
+   var $3573=(($3572)|0); //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   var $3574=$3573; //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   var $3575=(($3574)|0); //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   $__a_i_i_i_i_i_i58=$3575; //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   $__i_i_i_i_i_i_i59=0; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   label = 141; break; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+  case 141: 
+   var $3577=$__i_i_i_i_i_i_i59; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   var $3578=(($3577)>>>(0)) < 3; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   if ($3578) { label = 142; break; } else { label = 143; break; } //@line 1611 "G:/emscripten/system/include/libcxx/string"
+  case 142: 
+   var $3580=$__i_i_i_i_i_i_i59; //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   var $3581=$__a_i_i_i_i_i_i58; //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   var $3582=(($3581+($3580<<2))|0); //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   HEAP32[(($3582)>>2)]=0; //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   var $3583=$__i_i_i_i_i_i_i59; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   var $3584=((($3583)+(1))|0); //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   $__i_i_i_i_i_i_i59=$3584; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   label = 141; break; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+  case 143: 
+   var $3585=(($3552+44)|0); //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3585)>>2)]=0; //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3586=(($3552+48)|0); //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3587=$2409; //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3586)>>2)]=$3587; //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2398=$2412;
+   var $3588=$2398;
+   $2397=$3588;
+   var $3589=$2397;
+   var $3590=$3589; //@line 1794 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3591=(($3589)|0); //@line 1794 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2396=$3591;
+   var $3592=$2396;
+   $2395=$3592;
+   var $3593=$2395;
+   var $3594=$3593; //@line 2374 "G:/emscripten/system/include/libcxx/memory"
+   $2394=$3594;
+   var $3595=$2394;
+   var $3596=$3595; //@line 2187 "G:/emscripten/system/include/libcxx/memory"
+   $2393=$3596;
+   var $3597=$2393;
+   var $3598=(($3595)|0); //@line 2187 "G:/emscripten/system/include/libcxx/memory"
+   $2392=$3589;
+   var $3599=$2392;
+   var $3600=(($3599)|0); //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   $2391=$3600;
+   var $3601=$2391;
+   var $3602=$3601; //@line 2432 "G:/emscripten/system/include/libcxx/memory"
+   $2390=$3602;
+   var $3603=$2390;
+   var $3604=(($3603)|0); //@line 2253 "G:/emscripten/system/include/libcxx/memory"
+   var $3605=(($3604)|0); //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   var $3606=$3605; //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   var $3607=(($3606)|0); //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   $__a_i_i_i1_i_i_i56=$3607; //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   $__i_i_i_i2_i_i_i57=0; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   label = 144; break; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+  case 144: 
+   var $3609=$__i_i_i_i2_i_i_i57; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   var $3610=(($3609)>>>(0)) < 3; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   if ($3610) { label = 145; break; } else { label = 146; break; } //@line 1611 "G:/emscripten/system/include/libcxx/string"
+  case 145: 
+   var $3612=$__i_i_i_i2_i_i_i57; //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   var $3613=$__a_i_i_i1_i_i_i56; //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   var $3614=(($3613+($3612<<2))|0); //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   HEAP32[(($3614)>>2)]=0; //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   var $3615=$__i_i_i_i2_i_i_i57; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   var $3616=((($3615)+(1))|0); //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   $__i_i_i_i2_i_i_i57=$3616; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   label = 144; break; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+  case 146: 
+   (function() { try { __THREW__ = 0; return __ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE3strERKNS_12basic_stringIcS2_S4_EE($3552, $2412) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 147; break; } else { label = 149; break; } //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+  case 147: 
+   (function() { try { __THREW__ = 0; return __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev($2412) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 162; break; } else { label = 148; break; } //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+  case 148: 
+   var $3619$0 = ___cxa_find_matching_catch(-1, -1); $3619$1 = tempRet0;
+   var $3620=$3619$0;
+   $2410=$3620; //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+   var $3621=$3619$1;
+   $2411=$3621; //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+   label = 151; break; //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+  case 149: 
+   var $3623$0 = ___cxa_find_matching_catch(-1, -1); $3623$1 = tempRet0;
+   var $3624=$3623$0;
+   $2410=$3624; //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+   var $3625=$3623$1;
+   $2411=$3625; //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+   (function() { try { __THREW__ = 0; return __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev($2412) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 150; break; } else { label = 154; break; } //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+  case 150: 
+   label = 151; break; //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+  case 151: 
+   (function() { try { __THREW__ = 0; return __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev($3555) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 152; break; } else { label = 154; break; } //@line 244 "G:/emscripten/system/include/libcxx/sstream"
+  case 152: 
+   var $3629=$3552; //@line 244 "G:/emscripten/system/include/libcxx/sstream"
+   (function() { try { __THREW__ = 0; return __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEED2Ev($3629) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 153; break; } else { label = 154; break; } //@line 244 "G:/emscripten/system/include/libcxx/sstream"
+  case 153: 
+   var $3631=$2410; //@line 244 "G:/emscripten/system/include/libcxx/sstream"
+   var $3632=$2411; //@line 244 "G:/emscripten/system/include/libcxx/sstream"
+   var $3633$0=$3631;
+   var $3633$1=0;
+   var $3634$0=$3633$0;
+   var $3634$1=$3632;
+   var $eh_lpad_body_i64$1 = $3634$1;var $eh_lpad_body_i64$0 = $3634$0;label = 157; break;
+  case 154: 
+   var $3636$0 = ___cxa_find_matching_catch(-1, -1,0); $3636$1 = tempRet0;
+   __ZSt9terminatev(); //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+   throw "Reached an unreachable!"; //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+  case 155: 
+   var $3638$0 = ___cxa_find_matching_catch(-1, -1); $3638$1 = tempRet0;
+   var $3639=$3638$0;
+   $2419=$3639; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3640=$3638$1;
+   $2420=$3640; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   label = 159; break; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+  case 156: 
+   var $3642$0 = ___cxa_find_matching_catch(-1, -1); $3642$1 = tempRet0;
+   var $eh_lpad_body_i64$1 = $3642$1;var $eh_lpad_body_i64$0 = $3642$0;label = 157; break;
+  case 157: 
+   var $eh_lpad_body_i64$0;
+   var $eh_lpad_body_i64$1;
+   var $3643=$eh_lpad_body_i64$0;
+   $2419=$3643; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3644=$eh_lpad_body_i64$1;
+   $2420=$3644; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3645=$3452; //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+   (function() { try { __THREW__ = 0; return __ZNSt3__114basic_iostreamIcNS_11char_traitsIcEEED2Ev($3645, ((109796)|0)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 158; break; } else { label = 161; break; } //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+  case 158: 
+   label = 159; break; //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+  case 159: 
+   var $3648=$3452; //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+   var $3649=(($3648+64)|0); //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+   var $3650=$3649; //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+   (function() { try { __THREW__ = 0; return __ZNSt3__19basic_iosIcNS_11char_traitsIcEEED2Ev($3650) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 160; break; } else { label = 161; break; } //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+  case 160: 
+   var $3652=$2419; //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+   var $3653=$2420; //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+   var $3654$0=$3652;
+   var $3654$1=0;
+   var $3655$0=$3654$0;
+   var $3655$1=$3653;
+   ___resumeException($3655$0) //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+  case 161: 
+   var $3657$0 = ___cxa_find_matching_catch(-1, -1,0); $3657$1 = tempRet0;
+   __ZSt9terminatev(); //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+   throw "Reached an unreachable!"; //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+  case 162: 
+   var $3658=$std_stringstream2; //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $3659=(($3658+8)|0); //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $3660=$3659; //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $3661 = (function() { try { __THREW__ = 0; return __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc($3660, ((10896)|0)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 163; break; } else { label = 184; break; } //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 163: 
+   (function() { try { __THREW__ = 0; return __ZN6StringC1EPKc($2557, ((11736)|0)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 164; break; } else { label = 184; break; } //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 164: 
+   (function() { try { __THREW__ = 0; return __ZN4File13NormalizePathERK6Stringc($2556, $2557, 92) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 165; break; } else { label = 185; break; } //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 165: 
+   var $3665 = (function() { try { __THREW__ = 0; return __ZlsRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEERK6String($3661, $2556) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 166; break; } else { label = 186; break; } //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 166: 
+   var $3667 = (function() { try { __THREW__ = 0; return __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc($3665, ((66832)|0)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 167; break; } else { label = 186; break; } //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 167: 
+   var $3669 = (function() { try { __THREW__ = 0; return __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc($3667, ((14584)|0)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 168; break; } else { label = 186; break; } //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 168: 
+   var $3671 = (function() { try { __THREW__ = 0; return __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc($3669, ((64456)|0)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 169; break; } else { label = 186; break; } //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 169: 
+   (function() { try { __THREW__ = 0; return __ZN6StringD1Ev($2556) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 170; break; } else { label = 185; break; } //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 170: 
+   (function() { try { __THREW__ = 0; return __ZN6StringD1Ev($2557) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 171; break; } else { label = 184; break; } //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 171: 
+   var $3675=___cxa_allocate_exception(8); //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   $2559=1;
+   var $3676=$3675; //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   $2377=$std_stringstream2;
+   var $3677=$2377;
+   var $3678=(($3677+12)|0); //@line 958 "G:/emscripten/system/include/libcxx/sstream"
+   (function() { try { __THREW__ = 0; return __ZNKSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE3strEv($2558, $3678) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 172; break; } else { label = 190; break; }
+  case 172: 
+   label = 173; break;
+  case 173: 
+   $2376=$2558;
+   var $3680=$2376;
+   $2375=$3680;
+   var $3681=$2375;
+   $2374=$3681;
+   var $3682=$2374;
+   $2373=$3682;
+   var $3683=$2373;
+   var $3684=(($3683)|0); //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   $2372=$3684;
+   var $3685=$2372;
+   var $3686=$3685; //@line 2433 "G:/emscripten/system/include/libcxx/memory"
+   $2371=$3686;
+   var $3687=$2371;
+   var $3688=(($3687)|0); //@line 2254 "G:/emscripten/system/include/libcxx/memory"
+   var $3689=(($3688)|0); //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   var $3690=$3689; //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   var $3691=(($3690)|0); //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   var $3692=$3691; //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   var $3693=HEAP8[($3692)]; //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   var $3694=(($3693)&(255)); //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   var $3695=$3694 & 1; //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   var $3696=(($3695)|(0))!=0; //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   if ($3696) { label = 174; break; } else { label = 175; break; } //@line 1605 "G:/emscripten/system/include/libcxx/string"
+  case 174: 
+   $2365=$3682;
+   var $3698=$2365;
+   var $3699=(($3698)|0); //@line 1593 "G:/emscripten/system/include/libcxx/string"
+   $2364=$3699;
+   var $3700=$2364;
+   var $3701=$3700; //@line 2433 "G:/emscripten/system/include/libcxx/memory"
+   $2363=$3701;
+   var $3702=$2363;
+   var $3703=(($3702)|0); //@line 2254 "G:/emscripten/system/include/libcxx/memory"
+   var $3704=(($3703)|0); //@line 1593 "G:/emscripten/system/include/libcxx/string"
+   var $3705=$3704; //@line 1593 "G:/emscripten/system/include/libcxx/string"
+   var $3706=(($3705+8)|0); //@line 1593 "G:/emscripten/system/include/libcxx/string"
+   var $3707=HEAP32[(($3706)>>2)]; //@line 1593 "G:/emscripten/system/include/libcxx/string"
+   var $3721 = $3707;label = 176; break; //@line 1605 "G:/emscripten/system/include/libcxx/string"
+  case 175: 
+   $2370=$3682;
+   var $3709=$2370;
+   var $3710=(($3709)|0); //@line 1599 "G:/emscripten/system/include/libcxx/string"
+   $2369=$3710;
+   var $3711=$2369;
+   var $3712=$3711; //@line 2433 "G:/emscripten/system/include/libcxx/memory"
+   $2368=$3712;
+   var $3713=$2368;
+   var $3714=(($3713)|0); //@line 2254 "G:/emscripten/system/include/libcxx/memory"
+   var $3715=(($3714)|0); //@line 1599 "G:/emscripten/system/include/libcxx/string"
+   var $3716=$3715; //@line 1599 "G:/emscripten/system/include/libcxx/string"
+   var $3717=(($3716+1)|0); //@line 1599 "G:/emscripten/system/include/libcxx/string"
+   var $3718=(($3717)|0); //@line 1599 "G:/emscripten/system/include/libcxx/string"
+   $2367=$3718;
+   var $3719=$2367; //@line 960 "G:/emscripten/system/include/libcxx/memory"
+   $2366=$3719;
+   var $3720=$2366; //@line 627 "G:/emscripten/system/include/libcxx/memory"
+   var $3721 = $3720;label = 176; break; //@line 1605 "G:/emscripten/system/include/libcxx/string"
+  case 176: 
+   var $3721; //@line 1605 "G:/emscripten/system/include/libcxx/string"
+   $2362=$3721;
+   var $3722=$2362; //@line 1086 "G:/emscripten/system/include/libcxx/memory"
+   (function() { try { __THREW__ = 0; return __ZNSt13runtime_errorC2EPKc($3676, $3722) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 177; break; } else { label = 191; break; } //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 177: 
+   $2559=0; //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   (function() { try { __THREW__ = 0; return ___cxa_throw($3675, 113416, (584)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 2842; break; } else { label = 191; break; } //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   (function() { try { __THREW__ = 0; return __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev($2558) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 178; break; } else { label = 190; break; } //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 178: 
+   __ZNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev($std_stringstream2); //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   label = 198; break; //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 179: 
+   var $3727$0 = ___cxa_find_matching_catch(-1, -1); $3727$1 = tempRet0;
+   var $3728=$3727$0;
+   $2542=$3728; //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $3729=$3727$1;
+   $2543=$3729; //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   label = 182; break; //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 180: 
+   var $3731$0 = ___cxa_find_matching_catch(-1, -1); $3731$1 = tempRet0;
+   var $3732=$3731$0;
+   $2542=$3732; //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $3733=$3731$1;
+   $2543=$3733; //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   (function() { try { __THREW__ = 0; return __ZN6StringD1Ev($2554) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 181; break; } else { label = 2841; break; } //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 181: 
+   label = 182; break; //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 182: 
+   (function() { try { __THREW__ = 0; return __ZN6StringD1Ev($2555) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 183; break; } else { label = 2841; break; } //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 183: 
+   label = 2840; break; //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 184: 
+   var $3738$0 = ___cxa_find_matching_catch(-1, -1); $3738$1 = tempRet0;
+   var $3739=$3738$0;
+   $2542=$3739; //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $3740=$3738$1;
+   $2543=$3740; //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   label = 196; break; //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 185: 
+   var $3742$0 = ___cxa_find_matching_catch(-1, -1); $3742$1 = tempRet0;
+   var $3743=$3742$0;
+   $2542=$3743; //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $3744=$3742$1;
+   $2543=$3744; //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   label = 188; break; //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 186: 
+   var $3746$0 = ___cxa_find_matching_catch(-1, -1); $3746$1 = tempRet0;
+   var $3747=$3746$0;
+   $2542=$3747; //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $3748=$3746$1;
+   $2543=$3748; //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   (function() { try { __THREW__ = 0; return __ZN6StringD1Ev($2556) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 187; break; } else { label = 2841; break; } //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 187: 
+   label = 188; break; //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 188: 
+   (function() { try { __THREW__ = 0; return __ZN6StringD1Ev($2557) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 189; break; } else { label = 2841; break; } //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 189: 
+   label = 196; break; //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 190: 
+   var $3753$0 = ___cxa_find_matching_catch(-1, -1); $3753$1 = tempRet0;
+   var $3754=$3753$0;
+   $2542=$3754; //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $3755=$3753$1;
+   $2543=$3755; //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   label = 193; break; //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 191: 
+   var $3757$0 = ___cxa_find_matching_catch(-1, -1); $3757$1 = tempRet0;
+   var $3758=$3757$0;
+   $2542=$3758; //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $3759=$3757$1;
+   $2543=$3759; //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   (function() { try { __THREW__ = 0; return __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev($2558) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 192; break; } else { label = 2841; break; } //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 192: 
+   label = 193; break; //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 193: 
+   var $3762=$2559; //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   if ($3762) { label = 194; break; } else { label = 195; break; } //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 194: 
+   ___cxa_free_exception($3675); //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   label = 195; break; //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 195: 
+   label = 196; break; //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 196: 
+   (function() { try { __THREW__ = 0; return __ZNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev($std_stringstream2) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 197; break; } else { label = 2841; break; } //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 197: 
+   label = 2840; break; //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 198: 
+   label = 199; break; //@line 138 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 199: 
+   label = 200; break; //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 200: 
+   __ZN6StringC1EPKc($2561, ((10608)|0)); //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   (function() { try { __THREW__ = 0; return __ZN4File13NormalizePathERK6Stringc($2560, $2561, 92) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 201; break; } else { label = 245; break; } //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 201: 
+   var $3771 = (function() { try { __THREW__ = 0; return __ZNK6StringneEPKc($2560, ((13320)|0)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 202; break; } else { label = 246; break; } //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 202: 
+   (function() { try { __THREW__ = 0; return __ZN6StringD1Ev($2560) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 203; break; } else { label = 245; break; } //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 203: 
+   __ZN6StringD1Ev($2561); //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   if ($3771) { label = 204; break; } else { label = 264; break; } //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 204: 
+   $2358=$std_stringstream3;
+   $2359=24;
+   var $3775=$2358;
+   var $3776=$3775; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3777=(($3776+64)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3778=$3777; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2357=$3778;
+   var $3779=$2357;
+   var $3780=$3779; //@line 622 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2356=$3780;
+   var $3781=$2356;
+   var $3782=$3781; //@line 328 "G:/emscripten/system/include/libcxx/ios"
+   HEAP32[(($3782)>>2)]=((107288)|0); //@line 328 "G:/emscripten/system/include/libcxx/ios"
+   var $3783=$3779; //@line 622 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3783)>>2)]=((106832)|0); //@line 622 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3784=$3775; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3784)>>2)]=((108180)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3785=$3775; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3786=(($3785+64)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3787=$3786; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3787)>>2)]=((108220)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3788=$3775; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3789=(($3788+8)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3790=$3789; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3790)>>2)]=((108200)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3791=$3775; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3792=(($3775+12)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3793=$3792; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2326=$3791;
+   $2327=((109796)|0);
+   $2328=$3793;
+   var $3794=$2326;
+   var $3795=$2327;
+   var $3796=$3794; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3797=(($3795+4)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3798=$2328; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2323=$3796;
+   $2324=$3797;
+   $2325=$3798;
+   var $3799=$2323;
+   var $3800=$2324;
+   var $3801=HEAP32[(($3800)>>2)]; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3802=$3799; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3802)>>2)]=$3801; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3803=(($3800+4)|0); //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3804=HEAP32[(($3803)>>2)]; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3805=$3799; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3806=HEAP32[(($3805)>>2)]; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3807=((($3806)-(12))|0); //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3808=$3807; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3809=HEAP32[(($3808)>>2)]; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3810=$3799; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3811=(($3810+$3809)|0); //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3812=$3811; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3812)>>2)]=$3804; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3813=(($3799+4)|0); //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3813)>>2)]=0; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3814=$3799; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $3815=HEAP32[(($3814)>>2)]; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $3816=((($3815)-(12))|0); //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $3817=$3816; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $3818=HEAP32[(($3817)>>2)]; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $3819=$3799; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $3820=(($3819+$3818)|0); //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $3821=$3820; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $3822=$2325; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   $2321=$3821;
+   $2322=$3822;
+   var $3823=$2321;
+   var $3824=$3823; //@line 659 "G:/emscripten/system/include/libcxx/ios"
+   var $3825=$2322; //@line 659 "G:/emscripten/system/include/libcxx/ios"
+   var $3826=$3825; //@line 659 "G:/emscripten/system/include/libcxx/ios"
+   (function() { try { __THREW__ = 0; return __ZNSt3__18ios_base4initEPv($3824, $3826) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 205; break; } else { label = 221; break; }
+  case 205: 
+   var $3827=(($3823+72)|0); //@line 660 "G:/emscripten/system/include/libcxx/ios"
+   HEAP32[(($3827)>>2)]=0; //@line 660 "G:/emscripten/system/include/libcxx/ios"
+   var $3828=(($3823+76)|0); //@line 661 "G:/emscripten/system/include/libcxx/ios"
+   HEAP32[(($3828)>>2)]=-1; //@line 661 "G:/emscripten/system/include/libcxx/ios"
+   var $3829=$3794; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3830=(($3829+8)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3831=$3830; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3832=(($3795+12)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2319=$3831;
+   $2320=$3832;
+   var $3833=$2319;
+   var $3834=$2320;
+   var $3835=HEAP32[(($3834)>>2)]; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3836=$3833; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3836)>>2)]=$3835; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3837=(($3834+4)|0); //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3838=HEAP32[(($3837)>>2)]; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3839=$3833; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3840=HEAP32[(($3839)>>2)]; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3841=((($3840)-(12))|0); //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3842=$3841; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3843=HEAP32[(($3842)>>2)]; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3844=$3833; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3845=(($3844+$3843)|0); //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3846=$3845; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3846)>>2)]=$3838; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3847=HEAP32[(($3795)>>2)]; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3848=$3794; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3848)>>2)]=$3847; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3849=(($3795+20)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3850=HEAP32[(($3849)>>2)]; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3851=$3794; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3852=HEAP32[(($3851)>>2)]; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3853=((($3852)-(12))|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3854=$3853; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3855=HEAP32[(($3854)>>2)]; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3856=$3794; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3857=(($3856+$3855)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3858=$3857; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3858)>>2)]=$3850; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3859=(($3795+24)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3860=HEAP32[(($3859)>>2)]; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3861=$3794; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3862=(($3861+8)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3863=$3862; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3863)>>2)]=$3860; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3864=$3775; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3864)>>2)]=((108180)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3865=$3775; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3866=(($3865+64)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3867=$3866; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3867)>>2)]=((108220)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3868=$3775; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3869=(($3868+8)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3870=$3869; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3870)>>2)]=((108200)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3871=(($3775+12)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3872=$2359; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2354=$3871;
+   $2355=$3872;
+   var $3873=$2354;
+   var $3874=$2355; //@line 244 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2349=$3873;
+   $2350=$3874;
+   var $3875=$2349;
+   var $3876=$3875; //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   (function() { try { __THREW__ = 0; return __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEEC2Ev($3876) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 206; break; } else { label = 222; break; }
+  case 206: 
+   var $3877=$3875; //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3877)>>2)]=((108360)|0); //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3878=(($3875+32)|0); //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2348=$3878;
+   var $3879=$2348;
+   $2347=$3879;
+   var $3880=$2347;
+   var $3881=$3880; //@line 1794 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3882=(($3880)|0); //@line 1794 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2346=$3882;
+   var $3883=$2346;
+   $2345=$3883;
+   var $3884=$2345;
+   var $3885=$3884; //@line 2374 "G:/emscripten/system/include/libcxx/memory"
+   $2344=$3885;
+   var $3886=$2344;
+   var $3887=$3886; //@line 2187 "G:/emscripten/system/include/libcxx/memory"
+   $2343=$3887;
+   var $3888=$2343;
+   var $3889=(($3886)|0); //@line 2187 "G:/emscripten/system/include/libcxx/memory"
+   $2342=$3880;
+   var $3890=$2342;
+   var $3891=(($3890)|0); //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   $2341=$3891;
+   var $3892=$2341;
+   var $3893=$3892; //@line 2432 "G:/emscripten/system/include/libcxx/memory"
+   $2340=$3893;
+   var $3894=$2340;
+   var $3895=(($3894)|0); //@line 2253 "G:/emscripten/system/include/libcxx/memory"
+   var $3896=(($3895)|0); //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   var $3897=$3896; //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   var $3898=(($3897)|0); //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   $__a_i_i_i_i_i_i71=$3898; //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   $__i_i_i_i_i_i_i72=0; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   label = 207; break; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+  case 207: 
+   var $3900=$__i_i_i_i_i_i_i72; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   var $3901=(($3900)>>>(0)) < 3; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   if ($3901) { label = 208; break; } else { label = 209; break; } //@line 1611 "G:/emscripten/system/include/libcxx/string"
+  case 208: 
+   var $3903=$__i_i_i_i_i_i_i72; //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   var $3904=$__a_i_i_i_i_i_i71; //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   var $3905=(($3904+($3903<<2))|0); //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   HEAP32[(($3905)>>2)]=0; //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   var $3906=$__i_i_i_i_i_i_i72; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   var $3907=((($3906)+(1))|0); //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   $__i_i_i_i_i_i_i72=$3907; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   label = 207; break; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+  case 209: 
+   var $3908=(($3875+44)|0); //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3908)>>2)]=0; //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3909=(($3875+48)|0); //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3910=$2350; //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($3909)>>2)]=$3910; //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2339=$2353;
+   var $3911=$2339;
+   $2338=$3911;
+   var $3912=$2338;
+   var $3913=$3912; //@line 1794 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3914=(($3912)|0); //@line 1794 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2337=$3914;
+   var $3915=$2337;
+   $2336=$3915;
+   var $3916=$2336;
+   var $3917=$3916; //@line 2374 "G:/emscripten/system/include/libcxx/memory"
+   $2335=$3917;
+   var $3918=$2335;
+   var $3919=$3918; //@line 2187 "G:/emscripten/system/include/libcxx/memory"
+   $2334=$3919;
+   var $3920=$2334;
+   var $3921=(($3918)|0); //@line 2187 "G:/emscripten/system/include/libcxx/memory"
+   $2333=$3912;
+   var $3922=$2333;
+   var $3923=(($3922)|0); //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   $2332=$3923;
+   var $3924=$2332;
+   var $3925=$3924; //@line 2432 "G:/emscripten/system/include/libcxx/memory"
+   $2331=$3925;
+   var $3926=$2331;
+   var $3927=(($3926)|0); //@line 2253 "G:/emscripten/system/include/libcxx/memory"
+   var $3928=(($3927)|0); //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   var $3929=$3928; //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   var $3930=(($3929)|0); //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   $__a_i_i_i1_i_i_i69=$3930; //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   $__i_i_i_i2_i_i_i70=0; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   label = 210; break; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+  case 210: 
+   var $3932=$__i_i_i_i2_i_i_i70; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   var $3933=(($3932)>>>(0)) < 3; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   if ($3933) { label = 211; break; } else { label = 212; break; } //@line 1611 "G:/emscripten/system/include/libcxx/string"
+  case 211: 
+   var $3935=$__i_i_i_i2_i_i_i70; //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   var $3936=$__a_i_i_i1_i_i_i69; //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   var $3937=(($3936+($3935<<2))|0); //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   HEAP32[(($3937)>>2)]=0; //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   var $3938=$__i_i_i_i2_i_i_i70; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   var $3939=((($3938)+(1))|0); //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   $__i_i_i_i2_i_i_i70=$3939; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   label = 210; break; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+  case 212: 
+   (function() { try { __THREW__ = 0; return __ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE3strERKNS_12basic_stringIcS2_S4_EE($3875, $2353) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 213; break; } else { label = 215; break; } //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+  case 213: 
+   (function() { try { __THREW__ = 0; return __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev($2353) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 228; break; } else { label = 214; break; } //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+  case 214: 
+   var $3942$0 = ___cxa_find_matching_catch(-1, -1); $3942$1 = tempRet0;
+   var $3943=$3942$0;
+   $2351=$3943; //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+   var $3944=$3942$1;
+   $2352=$3944; //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+   label = 217; break; //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+  case 215: 
+   var $3946$0 = ___cxa_find_matching_catch(-1, -1); $3946$1 = tempRet0;
+   var $3947=$3946$0;
+   $2351=$3947; //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+   var $3948=$3946$1;
+   $2352=$3948; //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+   (function() { try { __THREW__ = 0; return __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev($2353) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 216; break; } else { label = 220; break; } //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+  case 216: 
+   label = 217; break; //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+  case 217: 
+   (function() { try { __THREW__ = 0; return __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev($3878) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 218; break; } else { label = 220; break; } //@line 244 "G:/emscripten/system/include/libcxx/sstream"
+  case 218: 
+   var $3952=$3875; //@line 244 "G:/emscripten/system/include/libcxx/sstream"
+   (function() { try { __THREW__ = 0; return __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEED2Ev($3952) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 219; break; } else { label = 220; break; } //@line 244 "G:/emscripten/system/include/libcxx/sstream"
+  case 219: 
+   var $3954=$2351; //@line 244 "G:/emscripten/system/include/libcxx/sstream"
+   var $3955=$2352; //@line 244 "G:/emscripten/system/include/libcxx/sstream"
+   var $3956$0=$3954;
+   var $3956$1=0;
+   var $3957$0=$3956$0;
+   var $3957$1=$3955;
+   var $eh_lpad_body_i77$1 = $3957$1;var $eh_lpad_body_i77$0 = $3957$0;label = 223; break;
+  case 220: 
+   var $3959$0 = ___cxa_find_matching_catch(-1, -1,0); $3959$1 = tempRet0;
+   __ZSt9terminatev(); //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+   throw "Reached an unreachable!"; //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+  case 221: 
+   var $3961$0 = ___cxa_find_matching_catch(-1, -1); $3961$1 = tempRet0;
+   var $3962=$3961$0;
+   $2360=$3962; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3963=$3961$1;
+   $2361=$3963; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   label = 225; break; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+  case 222: 
+   var $3965$0 = ___cxa_find_matching_catch(-1, -1); $3965$1 = tempRet0;
+   var $eh_lpad_body_i77$1 = $3965$1;var $eh_lpad_body_i77$0 = $3965$0;label = 223; break;
+  case 223: 
+   var $eh_lpad_body_i77$0;
+   var $eh_lpad_body_i77$1;
+   var $3966=$eh_lpad_body_i77$0;
+   $2360=$3966; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3967=$eh_lpad_body_i77$1;
+   $2361=$3967; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $3968=$3775; //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+   (function() { try { __THREW__ = 0; return __ZNSt3__114basic_iostreamIcNS_11char_traitsIcEEED2Ev($3968, ((109796)|0)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 224; break; } else { label = 227; break; } //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+  case 224: 
+   label = 225; break; //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+  case 225: 
+   var $3971=$3775; //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+   var $3972=(($3971+64)|0); //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+   var $3973=$3972; //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+   (function() { try { __THREW__ = 0; return __ZNSt3__19basic_iosIcNS_11char_traitsIcEEED2Ev($3973) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 226; break; } else { label = 227; break; } //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+  case 226: 
+   var $3975=$2360; //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+   var $3976=$2361; //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+   var $3977$0=$3975;
+   var $3977$1=0;
+   var $3978$0=$3977$0;
+   var $3978$1=$3976;
+   ___resumeException($3978$0) //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+  case 227: 
+   var $3980$0 = ___cxa_find_matching_catch(-1, -1,0); $3980$1 = tempRet0;
+   __ZSt9terminatev(); //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+   throw "Reached an unreachable!"; //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+  case 228: 
+   var $3981=$std_stringstream3; //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $3982=(($3981+8)|0); //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $3983=$3982; //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $3984 = (function() { try { __THREW__ = 0; return __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc($3983, ((10208)|0)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 229; break; } else { label = 250; break; } //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 229: 
+   (function() { try { __THREW__ = 0; return __ZN6StringC1EPKc($2563, ((10608)|0)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 230; break; } else { label = 250; break; } //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 230: 
+   (function() { try { __THREW__ = 0; return __ZN4File13NormalizePathERK6Stringc($2562, $2563, 92) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 231; break; } else { label = 251; break; } //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 231: 
+   var $3988 = (function() { try { __THREW__ = 0; return __ZlsRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEERK6String($3984, $2562) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 232; break; } else { label = 252; break; } //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 232: 
+   var $3990 = (function() { try { __THREW__ = 0; return __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc($3988, ((66832)|0)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 233; break; } else { label = 252; break; } //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 233: 
+   var $3992 = (function() { try { __THREW__ = 0; return __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc($3990, ((13320)|0)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 234; break; } else { label = 252; break; } //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 234: 
+   var $3994 = (function() { try { __THREW__ = 0; return __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc($3992, ((64456)|0)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 235; break; } else { label = 252; break; } //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 235: 
+   (function() { try { __THREW__ = 0; return __ZN6StringD1Ev($2562) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 236; break; } else { label = 251; break; } //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 236: 
+   (function() { try { __THREW__ = 0; return __ZN6StringD1Ev($2563) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 237; break; } else { label = 250; break; } //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 237: 
+   var $3998=___cxa_allocate_exception(8); //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   $2565=1;
+   var $3999=$3998; //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   $2318=$std_stringstream3;
+   var $4000=$2318;
+   var $4001=(($4000+12)|0); //@line 958 "G:/emscripten/system/include/libcxx/sstream"
+   (function() { try { __THREW__ = 0; return __ZNKSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE3strEv($2564, $4001) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 238; break; } else { label = 256; break; }
+  case 238: 
+   label = 239; break;
+  case 239: 
+   $2317=$2564;
+   var $4003=$2317;
+   $2316=$4003;
+   var $4004=$2316;
+   $2315=$4004;
+   var $4005=$2315;
+   $2314=$4005;
+   var $4006=$2314;
+   var $4007=(($4006)|0); //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   $2313=$4007;
+   var $4008=$2313;
+   var $4009=$4008; //@line 2433 "G:/emscripten/system/include/libcxx/memory"
+   $2312=$4009;
+   var $4010=$2312;
+   var $4011=(($4010)|0); //@line 2254 "G:/emscripten/system/include/libcxx/memory"
+   var $4012=(($4011)|0); //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   var $4013=$4012; //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   var $4014=(($4013)|0); //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   var $4015=$4014; //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   var $4016=HEAP8[($4015)]; //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   var $4017=(($4016)&(255)); //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   var $4018=$4017 & 1; //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   var $4019=(($4018)|(0))!=0; //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   if ($4019) { label = 240; break; } else { label = 241; break; } //@line 1605 "G:/emscripten/system/include/libcxx/string"
+  case 240: 
+   $2306=$4005;
+   var $4021=$2306;
+   var $4022=(($4021)|0); //@line 1593 "G:/emscripten/system/include/libcxx/string"
+   $2305=$4022;
+   var $4023=$2305;
+   var $4024=$4023; //@line 2433 "G:/emscripten/system/include/libcxx/memory"
+   $2304=$4024;
+   var $4025=$2304;
+   var $4026=(($4025)|0); //@line 2254 "G:/emscripten/system/include/libcxx/memory"
+   var $4027=(($4026)|0); //@line 1593 "G:/emscripten/system/include/libcxx/string"
+   var $4028=$4027; //@line 1593 "G:/emscripten/system/include/libcxx/string"
+   var $4029=(($4028+8)|0); //@line 1593 "G:/emscripten/system/include/libcxx/string"
+   var $4030=HEAP32[(($4029)>>2)]; //@line 1593 "G:/emscripten/system/include/libcxx/string"
+   var $4044 = $4030;label = 242; break; //@line 1605 "G:/emscripten/system/include/libcxx/string"
+  case 241: 
+   $2311=$4005;
+   var $4032=$2311;
+   var $4033=(($4032)|0); //@line 1599 "G:/emscripten/system/include/libcxx/string"
+   $2310=$4033;
+   var $4034=$2310;
+   var $4035=$4034; //@line 2433 "G:/emscripten/system/include/libcxx/memory"
+   $2309=$4035;
+   var $4036=$2309;
+   var $4037=(($4036)|0); //@line 2254 "G:/emscripten/system/include/libcxx/memory"
+   var $4038=(($4037)|0); //@line 1599 "G:/emscripten/system/include/libcxx/string"
+   var $4039=$4038; //@line 1599 "G:/emscripten/system/include/libcxx/string"
+   var $4040=(($4039+1)|0); //@line 1599 "G:/emscripten/system/include/libcxx/string"
+   var $4041=(($4040)|0); //@line 1599 "G:/emscripten/system/include/libcxx/string"
+   $2308=$4041;
+   var $4042=$2308; //@line 960 "G:/emscripten/system/include/libcxx/memory"
+   $2307=$4042;
+   var $4043=$2307; //@line 627 "G:/emscripten/system/include/libcxx/memory"
+   var $4044 = $4043;label = 242; break; //@line 1605 "G:/emscripten/system/include/libcxx/string"
+  case 242: 
+   var $4044; //@line 1605 "G:/emscripten/system/include/libcxx/string"
+   $2303=$4044;
+   var $4045=$2303; //@line 1086 "G:/emscripten/system/include/libcxx/memory"
+   (function() { try { __THREW__ = 0; return __ZNSt13runtime_errorC2EPKc($3999, $4045) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 243; break; } else { label = 257; break; } //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 243: 
+   $2565=0; //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   (function() { try { __THREW__ = 0; return ___cxa_throw($3998, 113416, (584)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 2842; break; } else { label = 257; break; } //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   (function() { try { __THREW__ = 0; return __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev($2564) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 244; break; } else { label = 256; break; } //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 244: 
+   __ZNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev($std_stringstream3); //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   label = 264; break; //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 245: 
+   var $4050$0 = ___cxa_find_matching_catch(-1, -1); $4050$1 = tempRet0;
+   var $4051=$4050$0;
+   $2542=$4051; //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $4052=$4050$1;
+   $2543=$4052; //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   label = 248; break; //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 246: 
+   var $4054$0 = ___cxa_find_matching_catch(-1, -1); $4054$1 = tempRet0;
+   var $4055=$4054$0;
+   $2542=$4055; //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $4056=$4054$1;
+   $2543=$4056; //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   (function() { try { __THREW__ = 0; return __ZN6StringD1Ev($2560) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 247; break; } else { label = 2841; break; } //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 247: 
+   label = 248; break; //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 248: 
+   (function() { try { __THREW__ = 0; return __ZN6StringD1Ev($2561) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 249; break; } else { label = 2841; break; } //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 249: 
+   label = 2840; break; //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 250: 
+   var $4061$0 = ___cxa_find_matching_catch(-1, -1); $4061$1 = tempRet0;
+   var $4062=$4061$0;
+   $2542=$4062; //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $4063=$4061$1;
+   $2543=$4063; //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   label = 262; break; //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 251: 
+   var $4065$0 = ___cxa_find_matching_catch(-1, -1); $4065$1 = tempRet0;
+   var $4066=$4065$0;
+   $2542=$4066; //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $4067=$4065$1;
+   $2543=$4067; //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   label = 254; break; //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 252: 
+   var $4069$0 = ___cxa_find_matching_catch(-1, -1); $4069$1 = tempRet0;
+   var $4070=$4069$0;
+   $2542=$4070; //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $4071=$4069$1;
+   $2543=$4071; //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   (function() { try { __THREW__ = 0; return __ZN6StringD1Ev($2562) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 253; break; } else { label = 2841; break; } //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 253: 
+   label = 254; break; //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 254: 
+   (function() { try { __THREW__ = 0; return __ZN6StringD1Ev($2563) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 255; break; } else { label = 2841; break; } //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 255: 
+   label = 262; break; //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 256: 
+   var $4076$0 = ___cxa_find_matching_catch(-1, -1); $4076$1 = tempRet0;
+   var $4077=$4076$0;
+   $2542=$4077; //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $4078=$4076$1;
+   $2543=$4078; //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   label = 259; break; //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 257: 
+   var $4080$0 = ___cxa_find_matching_catch(-1, -1); $4080$1 = tempRet0;
+   var $4081=$4080$0;
+   $2542=$4081; //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $4082=$4080$1;
+   $2543=$4082; //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   (function() { try { __THREW__ = 0; return __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev($2564) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 258; break; } else { label = 2841; break; } //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 258: 
+   label = 259; break; //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 259: 
+   var $4085=$2565; //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   if ($4085) { label = 260; break; } else { label = 261; break; } //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 260: 
+   ___cxa_free_exception($3998); //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   label = 261; break; //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 261: 
+   label = 262; break; //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 262: 
+   (function() { try { __THREW__ = 0; return __ZNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev($std_stringstream3) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 263; break; } else { label = 2841; break; } //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 263: 
+   label = 2840; break; //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 264: 
+   label = 265; break; //@line 139 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 265: 
+   label = 266; break; //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 266: 
+   __ZN6StringC1EPKc($2567, ((9904)|0)); //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   (function() { try { __THREW__ = 0; return __ZN4File13NormalizePathERK6Stringc($2566, $2567, 92) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 267; break; } else { label = 311; break; } //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 267: 
+   var $4094 = (function() { try { __THREW__ = 0; return __ZNK6StringneEPKc($2566, ((14584)|0)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 268; break; } else { label = 312; break; } //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 268: 
+   (function() { try { __THREW__ = 0; return __ZN6StringD1Ev($2566) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 269; break; } else { label = 311; break; } //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 269: 
+   __ZN6StringD1Ev($2567); //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   if ($4094) { label = 270; break; } else { label = 330; break; } //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 270: 
+   $2299=$std_stringstream4;
+   $2300=24;
+   var $4098=$2299;
+   var $4099=$4098; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4100=(($4099+64)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4101=$4100; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2298=$4101;
+   var $4102=$2298;
+   var $4103=$4102; //@line 622 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2297=$4103;
+   var $4104=$2297;
+   var $4105=$4104; //@line 328 "G:/emscripten/system/include/libcxx/ios"
+   HEAP32[(($4105)>>2)]=((107288)|0); //@line 328 "G:/emscripten/system/include/libcxx/ios"
+   var $4106=$4102; //@line 622 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4106)>>2)]=((106832)|0); //@line 622 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4107=$4098; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4107)>>2)]=((108180)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4108=$4098; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4109=(($4108+64)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4110=$4109; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4110)>>2)]=((108220)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4111=$4098; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4112=(($4111+8)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4113=$4112; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4113)>>2)]=((108200)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4114=$4098; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4115=(($4098+12)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4116=$4115; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2267=$4114;
+   $2268=((109796)|0);
+   $2269=$4116;
+   var $4117=$2267;
+   var $4118=$2268;
+   var $4119=$4117; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4120=(($4118+4)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4121=$2269; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2264=$4119;
+   $2265=$4120;
+   $2266=$4121;
+   var $4122=$2264;
+   var $4123=$2265;
+   var $4124=HEAP32[(($4123)>>2)]; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4125=$4122; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4125)>>2)]=$4124; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4126=(($4123+4)|0); //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4127=HEAP32[(($4126)>>2)]; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4128=$4122; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4129=HEAP32[(($4128)>>2)]; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4130=((($4129)-(12))|0); //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4131=$4130; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4132=HEAP32[(($4131)>>2)]; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4133=$4122; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4134=(($4133+$4132)|0); //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4135=$4134; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4135)>>2)]=$4127; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4136=(($4122+4)|0); //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4136)>>2)]=0; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4137=$4122; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $4138=HEAP32[(($4137)>>2)]; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $4139=((($4138)-(12))|0); //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $4140=$4139; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $4141=HEAP32[(($4140)>>2)]; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $4142=$4122; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $4143=(($4142+$4141)|0); //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $4144=$4143; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $4145=$2266; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   $2262=$4144;
+   $2263=$4145;
+   var $4146=$2262;
+   var $4147=$4146; //@line 659 "G:/emscripten/system/include/libcxx/ios"
+   var $4148=$2263; //@line 659 "G:/emscripten/system/include/libcxx/ios"
+   var $4149=$4148; //@line 659 "G:/emscripten/system/include/libcxx/ios"
+   (function() { try { __THREW__ = 0; return __ZNSt3__18ios_base4initEPv($4147, $4149) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 271; break; } else { label = 287; break; }
+  case 271: 
+   var $4150=(($4146+72)|0); //@line 660 "G:/emscripten/system/include/libcxx/ios"
+   HEAP32[(($4150)>>2)]=0; //@line 660 "G:/emscripten/system/include/libcxx/ios"
+   var $4151=(($4146+76)|0); //@line 661 "G:/emscripten/system/include/libcxx/ios"
+   HEAP32[(($4151)>>2)]=-1; //@line 661 "G:/emscripten/system/include/libcxx/ios"
+   var $4152=$4117; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4153=(($4152+8)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4154=$4153; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4155=(($4118+12)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2260=$4154;
+   $2261=$4155;
+   var $4156=$2260;
+   var $4157=$2261;
+   var $4158=HEAP32[(($4157)>>2)]; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4159=$4156; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4159)>>2)]=$4158; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4160=(($4157+4)|0); //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4161=HEAP32[(($4160)>>2)]; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4162=$4156; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4163=HEAP32[(($4162)>>2)]; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4164=((($4163)-(12))|0); //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4165=$4164; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4166=HEAP32[(($4165)>>2)]; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4167=$4156; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4168=(($4167+$4166)|0); //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4169=$4168; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4169)>>2)]=$4161; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4170=HEAP32[(($4118)>>2)]; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4171=$4117; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4171)>>2)]=$4170; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4172=(($4118+20)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4173=HEAP32[(($4172)>>2)]; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4174=$4117; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4175=HEAP32[(($4174)>>2)]; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4176=((($4175)-(12))|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4177=$4176; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4178=HEAP32[(($4177)>>2)]; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4179=$4117; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4180=(($4179+$4178)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4181=$4180; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4181)>>2)]=$4173; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4182=(($4118+24)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4183=HEAP32[(($4182)>>2)]; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4184=$4117; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4185=(($4184+8)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4186=$4185; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4186)>>2)]=$4183; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4187=$4098; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4187)>>2)]=((108180)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4188=$4098; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4189=(($4188+64)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4190=$4189; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4190)>>2)]=((108220)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4191=$4098; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4192=(($4191+8)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4193=$4192; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4193)>>2)]=((108200)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4194=(($4098+12)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4195=$2300; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2295=$4194;
+   $2296=$4195;
+   var $4196=$2295;
+   var $4197=$2296; //@line 244 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2290=$4196;
+   $2291=$4197;
+   var $4198=$2290;
+   var $4199=$4198; //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   (function() { try { __THREW__ = 0; return __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEEC2Ev($4199) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 272; break; } else { label = 288; break; }
+  case 272: 
+   var $4200=$4198; //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4200)>>2)]=((108360)|0); //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4201=(($4198+32)|0); //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2289=$4201;
+   var $4202=$2289;
+   $2288=$4202;
+   var $4203=$2288;
+   var $4204=$4203; //@line 1794 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4205=(($4203)|0); //@line 1794 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2287=$4205;
+   var $4206=$2287;
+   $2286=$4206;
+   var $4207=$2286;
+   var $4208=$4207; //@line 2374 "G:/emscripten/system/include/libcxx/memory"
+   $2285=$4208;
+   var $4209=$2285;
+   var $4210=$4209; //@line 2187 "G:/emscripten/system/include/libcxx/memory"
+   $2284=$4210;
+   var $4211=$2284;
+   var $4212=(($4209)|0); //@line 2187 "G:/emscripten/system/include/libcxx/memory"
+   $2283=$4203;
+   var $4213=$2283;
+   var $4214=(($4213)|0); //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   $2282=$4214;
+   var $4215=$2282;
+   var $4216=$4215; //@line 2432 "G:/emscripten/system/include/libcxx/memory"
+   $2281=$4216;
+   var $4217=$2281;
+   var $4218=(($4217)|0); //@line 2253 "G:/emscripten/system/include/libcxx/memory"
+   var $4219=(($4218)|0); //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   var $4220=$4219; //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   var $4221=(($4220)|0); //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   $__a_i_i_i_i_i_i84=$4221; //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   $__i_i_i_i_i_i_i85=0; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   label = 273; break; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+  case 273: 
+   var $4223=$__i_i_i_i_i_i_i85; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   var $4224=(($4223)>>>(0)) < 3; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   if ($4224) { label = 274; break; } else { label = 275; break; } //@line 1611 "G:/emscripten/system/include/libcxx/string"
+  case 274: 
+   var $4226=$__i_i_i_i_i_i_i85; //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   var $4227=$__a_i_i_i_i_i_i84; //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   var $4228=(($4227+($4226<<2))|0); //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   HEAP32[(($4228)>>2)]=0; //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   var $4229=$__i_i_i_i_i_i_i85; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   var $4230=((($4229)+(1))|0); //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   $__i_i_i_i_i_i_i85=$4230; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   label = 273; break; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+  case 275: 
+   var $4231=(($4198+44)|0); //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4231)>>2)]=0; //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4232=(($4198+48)|0); //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4233=$2291; //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4232)>>2)]=$4233; //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2280=$2294;
+   var $4234=$2280;
+   $2279=$4234;
+   var $4235=$2279;
+   var $4236=$4235; //@line 1794 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4237=(($4235)|0); //@line 1794 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2278=$4237;
+   var $4238=$2278;
+   $2277=$4238;
+   var $4239=$2277;
+   var $4240=$4239; //@line 2374 "G:/emscripten/system/include/libcxx/memory"
+   $2276=$4240;
+   var $4241=$2276;
+   var $4242=$4241; //@line 2187 "G:/emscripten/system/include/libcxx/memory"
+   $2275=$4242;
+   var $4243=$2275;
+   var $4244=(($4241)|0); //@line 2187 "G:/emscripten/system/include/libcxx/memory"
+   $2274=$4235;
+   var $4245=$2274;
+   var $4246=(($4245)|0); //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   $2273=$4246;
+   var $4247=$2273;
+   var $4248=$4247; //@line 2432 "G:/emscripten/system/include/libcxx/memory"
+   $2272=$4248;
+   var $4249=$2272;
+   var $4250=(($4249)|0); //@line 2253 "G:/emscripten/system/include/libcxx/memory"
+   var $4251=(($4250)|0); //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   var $4252=$4251; //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   var $4253=(($4252)|0); //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   $__a_i_i_i1_i_i_i82=$4253; //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   $__i_i_i_i2_i_i_i83=0; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   label = 276; break; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+  case 276: 
+   var $4255=$__i_i_i_i2_i_i_i83; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   var $4256=(($4255)>>>(0)) < 3; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   if ($4256) { label = 277; break; } else { label = 278; break; } //@line 1611 "G:/emscripten/system/include/libcxx/string"
+  case 277: 
+   var $4258=$__i_i_i_i2_i_i_i83; //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   var $4259=$__a_i_i_i1_i_i_i82; //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   var $4260=(($4259+($4258<<2))|0); //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   HEAP32[(($4260)>>2)]=0; //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   var $4261=$__i_i_i_i2_i_i_i83; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   var $4262=((($4261)+(1))|0); //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   $__i_i_i_i2_i_i_i83=$4262; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   label = 276; break; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+  case 278: 
+   (function() { try { __THREW__ = 0; return __ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE3strERKNS_12basic_stringIcS2_S4_EE($4198, $2294) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 279; break; } else { label = 281; break; } //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+  case 279: 
+   (function() { try { __THREW__ = 0; return __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev($2294) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 294; break; } else { label = 280; break; } //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+  case 280: 
+   var $4265$0 = ___cxa_find_matching_catch(-1, -1); $4265$1 = tempRet0;
+   var $4266=$4265$0;
+   $2292=$4266; //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+   var $4267=$4265$1;
+   $2293=$4267; //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+   label = 283; break; //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+  case 281: 
+   var $4269$0 = ___cxa_find_matching_catch(-1, -1); $4269$1 = tempRet0;
+   var $4270=$4269$0;
+   $2292=$4270; //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+   var $4271=$4269$1;
+   $2293=$4271; //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+   (function() { try { __THREW__ = 0; return __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev($2294) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 282; break; } else { label = 286; break; } //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+  case 282: 
+   label = 283; break; //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+  case 283: 
+   (function() { try { __THREW__ = 0; return __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev($4201) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 284; break; } else { label = 286; break; } //@line 244 "G:/emscripten/system/include/libcxx/sstream"
+  case 284: 
+   var $4275=$4198; //@line 244 "G:/emscripten/system/include/libcxx/sstream"
+   (function() { try { __THREW__ = 0; return __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEED2Ev($4275) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 285; break; } else { label = 286; break; } //@line 244 "G:/emscripten/system/include/libcxx/sstream"
+  case 285: 
+   var $4277=$2292; //@line 244 "G:/emscripten/system/include/libcxx/sstream"
+   var $4278=$2293; //@line 244 "G:/emscripten/system/include/libcxx/sstream"
+   var $4279$0=$4277;
+   var $4279$1=0;
+   var $4280$0=$4279$0;
+   var $4280$1=$4278;
+   var $eh_lpad_body_i90$1 = $4280$1;var $eh_lpad_body_i90$0 = $4280$0;label = 289; break;
+  case 286: 
+   var $4282$0 = ___cxa_find_matching_catch(-1, -1,0); $4282$1 = tempRet0;
+   __ZSt9terminatev(); //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+   throw "Reached an unreachable!"; //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+  case 287: 
+   var $4284$0 = ___cxa_find_matching_catch(-1, -1); $4284$1 = tempRet0;
+   var $4285=$4284$0;
+   $2301=$4285; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4286=$4284$1;
+   $2302=$4286; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   label = 291; break; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+  case 288: 
+   var $4288$0 = ___cxa_find_matching_catch(-1, -1); $4288$1 = tempRet0;
+   var $eh_lpad_body_i90$1 = $4288$1;var $eh_lpad_body_i90$0 = $4288$0;label = 289; break;
+  case 289: 
+   var $eh_lpad_body_i90$0;
+   var $eh_lpad_body_i90$1;
+   var $4289=$eh_lpad_body_i90$0;
+   $2301=$4289; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4290=$eh_lpad_body_i90$1;
+   $2302=$4290; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4291=$4098; //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+   (function() { try { __THREW__ = 0; return __ZNSt3__114basic_iostreamIcNS_11char_traitsIcEEED2Ev($4291, ((109796)|0)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 290; break; } else { label = 293; break; } //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+  case 290: 
+   label = 291; break; //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+  case 291: 
+   var $4294=$4098; //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+   var $4295=(($4294+64)|0); //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+   var $4296=$4295; //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+   (function() { try { __THREW__ = 0; return __ZNSt3__19basic_iosIcNS_11char_traitsIcEEED2Ev($4296) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 292; break; } else { label = 293; break; } //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+  case 292: 
+   var $4298=$2301; //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+   var $4299=$2302; //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+   var $4300$0=$4298;
+   var $4300$1=0;
+   var $4301$0=$4300$0;
+   var $4301$1=$4299;
+   ___resumeException($4301$0) //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+  case 293: 
+   var $4303$0 = ___cxa_find_matching_catch(-1, -1,0); $4303$1 = tempRet0;
+   __ZSt9terminatev(); //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+   throw "Reached an unreachable!"; //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+  case 294: 
+   var $4304=$std_stringstream4; //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $4305=(($4304+8)|0); //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $4306=$4305; //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $4307 = (function() { try { __THREW__ = 0; return __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc($4306, ((9600)|0)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 295; break; } else { label = 316; break; } //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 295: 
+   (function() { try { __THREW__ = 0; return __ZN6StringC1EPKc($2569, ((9904)|0)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 296; break; } else { label = 316; break; } //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 296: 
+   (function() { try { __THREW__ = 0; return __ZN4File13NormalizePathERK6Stringc($2568, $2569, 92) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 297; break; } else { label = 317; break; } //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 297: 
+   var $4311 = (function() { try { __THREW__ = 0; return __ZlsRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEERK6String($4307, $2568) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 298; break; } else { label = 318; break; } //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 298: 
+   var $4313 = (function() { try { __THREW__ = 0; return __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc($4311, ((66832)|0)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 299; break; } else { label = 318; break; } //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 299: 
+   var $4315 = (function() { try { __THREW__ = 0; return __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc($4313, ((14584)|0)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 300; break; } else { label = 318; break; } //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 300: 
+   var $4317 = (function() { try { __THREW__ = 0; return __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc($4315, ((64456)|0)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 301; break; } else { label = 318; break; } //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 301: 
+   (function() { try { __THREW__ = 0; return __ZN6StringD1Ev($2568) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 302; break; } else { label = 317; break; } //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 302: 
+   (function() { try { __THREW__ = 0; return __ZN6StringD1Ev($2569) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 303; break; } else { label = 316; break; } //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 303: 
+   var $4321=___cxa_allocate_exception(8); //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   $2571=1;
+   var $4322=$4321; //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   $2259=$std_stringstream4;
+   var $4323=$2259;
+   var $4324=(($4323+12)|0); //@line 958 "G:/emscripten/system/include/libcxx/sstream"
+   (function() { try { __THREW__ = 0; return __ZNKSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE3strEv($2570, $4324) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 304; break; } else { label = 322; break; }
+  case 304: 
+   label = 305; break;
+  case 305: 
+   $2258=$2570;
+   var $4326=$2258;
+   $2257=$4326;
+   var $4327=$2257;
+   $2256=$4327;
+   var $4328=$2256;
+   $2255=$4328;
+   var $4329=$2255;
+   var $4330=(($4329)|0); //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   $2254=$4330;
+   var $4331=$2254;
+   var $4332=$4331; //@line 2433 "G:/emscripten/system/include/libcxx/memory"
+   $2253=$4332;
+   var $4333=$2253;
+   var $4334=(($4333)|0); //@line 2254 "G:/emscripten/system/include/libcxx/memory"
+   var $4335=(($4334)|0); //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   var $4336=$4335; //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   var $4337=(($4336)|0); //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   var $4338=$4337; //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   var $4339=HEAP8[($4338)]; //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   var $4340=(($4339)&(255)); //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   var $4341=$4340 & 1; //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   var $4342=(($4341)|(0))!=0; //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   if ($4342) { label = 306; break; } else { label = 307; break; } //@line 1605 "G:/emscripten/system/include/libcxx/string"
+  case 306: 
+   $2247=$4328;
+   var $4344=$2247;
+   var $4345=(($4344)|0); //@line 1593 "G:/emscripten/system/include/libcxx/string"
+   $2246=$4345;
+   var $4346=$2246;
+   var $4347=$4346; //@line 2433 "G:/emscripten/system/include/libcxx/memory"
+   $2245=$4347;
+   var $4348=$2245;
+   var $4349=(($4348)|0); //@line 2254 "G:/emscripten/system/include/libcxx/memory"
+   var $4350=(($4349)|0); //@line 1593 "G:/emscripten/system/include/libcxx/string"
+   var $4351=$4350; //@line 1593 "G:/emscripten/system/include/libcxx/string"
+   var $4352=(($4351+8)|0); //@line 1593 "G:/emscripten/system/include/libcxx/string"
+   var $4353=HEAP32[(($4352)>>2)]; //@line 1593 "G:/emscripten/system/include/libcxx/string"
+   var $4367 = $4353;label = 308; break; //@line 1605 "G:/emscripten/system/include/libcxx/string"
+  case 307: 
+   $2252=$4328;
+   var $4355=$2252;
+   var $4356=(($4355)|0); //@line 1599 "G:/emscripten/system/include/libcxx/string"
+   $2251=$4356;
+   var $4357=$2251;
+   var $4358=$4357; //@line 2433 "G:/emscripten/system/include/libcxx/memory"
+   $2250=$4358;
+   var $4359=$2250;
+   var $4360=(($4359)|0); //@line 2254 "G:/emscripten/system/include/libcxx/memory"
+   var $4361=(($4360)|0); //@line 1599 "G:/emscripten/system/include/libcxx/string"
+   var $4362=$4361; //@line 1599 "G:/emscripten/system/include/libcxx/string"
+   var $4363=(($4362+1)|0); //@line 1599 "G:/emscripten/system/include/libcxx/string"
+   var $4364=(($4363)|0); //@line 1599 "G:/emscripten/system/include/libcxx/string"
+   $2249=$4364;
+   var $4365=$2249; //@line 960 "G:/emscripten/system/include/libcxx/memory"
+   $2248=$4365;
+   var $4366=$2248; //@line 627 "G:/emscripten/system/include/libcxx/memory"
+   var $4367 = $4366;label = 308; break; //@line 1605 "G:/emscripten/system/include/libcxx/string"
+  case 308: 
+   var $4367; //@line 1605 "G:/emscripten/system/include/libcxx/string"
+   $2244=$4367;
+   var $4368=$2244; //@line 1086 "G:/emscripten/system/include/libcxx/memory"
+   (function() { try { __THREW__ = 0; return __ZNSt13runtime_errorC2EPKc($4322, $4368) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 309; break; } else { label = 323; break; } //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 309: 
+   $2571=0; //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   (function() { try { __THREW__ = 0; return ___cxa_throw($4321, 113416, (584)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 2842; break; } else { label = 323; break; } //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   (function() { try { __THREW__ = 0; return __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev($2570) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 310; break; } else { label = 322; break; } //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 310: 
+   __ZNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev($std_stringstream4); //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   label = 330; break; //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 311: 
+   var $4373$0 = ___cxa_find_matching_catch(-1, -1); $4373$1 = tempRet0;
+   var $4374=$4373$0;
+   $2542=$4374; //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $4375=$4373$1;
+   $2543=$4375; //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   label = 314; break; //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 312: 
+   var $4377$0 = ___cxa_find_matching_catch(-1, -1); $4377$1 = tempRet0;
+   var $4378=$4377$0;
+   $2542=$4378; //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $4379=$4377$1;
+   $2543=$4379; //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   (function() { try { __THREW__ = 0; return __ZN6StringD1Ev($2566) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 313; break; } else { label = 2841; break; } //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 313: 
+   label = 314; break; //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 314: 
+   (function() { try { __THREW__ = 0; return __ZN6StringD1Ev($2567) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 315; break; } else { label = 2841; break; } //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 315: 
+   label = 2840; break; //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 316: 
+   var $4384$0 = ___cxa_find_matching_catch(-1, -1); $4384$1 = tempRet0;
+   var $4385=$4384$0;
+   $2542=$4385; //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $4386=$4384$1;
+   $2543=$4386; //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   label = 328; break; //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 317: 
+   var $4388$0 = ___cxa_find_matching_catch(-1, -1); $4388$1 = tempRet0;
+   var $4389=$4388$0;
+   $2542=$4389; //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $4390=$4388$1;
+   $2543=$4390; //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   label = 320; break; //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 318: 
+   var $4392$0 = ___cxa_find_matching_catch(-1, -1); $4392$1 = tempRet0;
+   var $4393=$4392$0;
+   $2542=$4393; //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $4394=$4392$1;
+   $2543=$4394; //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   (function() { try { __THREW__ = 0; return __ZN6StringD1Ev($2568) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 319; break; } else { label = 2841; break; } //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 319: 
+   label = 320; break; //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 320: 
+   (function() { try { __THREW__ = 0; return __ZN6StringD1Ev($2569) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 321; break; } else { label = 2841; break; } //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 321: 
+   label = 328; break; //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 322: 
+   var $4399$0 = ___cxa_find_matching_catch(-1, -1); $4399$1 = tempRet0;
+   var $4400=$4399$0;
+   $2542=$4400; //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $4401=$4399$1;
+   $2543=$4401; //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   label = 325; break; //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 323: 
+   var $4403$0 = ___cxa_find_matching_catch(-1, -1); $4403$1 = tempRet0;
+   var $4404=$4403$0;
+   $2542=$4404; //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $4405=$4403$1;
+   $2543=$4405; //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   (function() { try { __THREW__ = 0; return __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev($2570) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 324; break; } else { label = 2841; break; } //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 324: 
+   label = 325; break; //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 325: 
+   var $4408=$2571; //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   if ($4408) { label = 326; break; } else { label = 327; break; } //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 326: 
+   ___cxa_free_exception($4321); //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   label = 327; break; //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 327: 
+   label = 328; break; //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 328: 
+   (function() { try { __THREW__ = 0; return __ZNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev($std_stringstream4) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 329; break; } else { label = 2841; break; } //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 329: 
+   label = 2840; break; //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 330: 
+   label = 331; break; //@line 140 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 331: 
+   label = 332; break; //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 332: 
+   __ZN6StringC1EPKc($2573, ((9192)|0)); //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   (function() { try { __THREW__ = 0; return __ZN4File13NormalizePathERK6Stringc($2572, $2573, 92) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 333; break; } else { label = 377; break; } //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 333: 
+   var $4417 = (function() { try { __THREW__ = 0; return __ZNK6StringneEPKc($2572, ((14584)|0)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 334; break; } else { label = 378; break; } //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 334: 
+   (function() { try { __THREW__ = 0; return __ZN6StringD1Ev($2572) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 335; break; } else { label = 377; break; } //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 335: 
+   __ZN6StringD1Ev($2573); //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   if ($4417) { label = 336; break; } else { label = 396; break; } //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 336: 
+   $2240=$std_stringstream5;
+   $2241=24;
+   var $4421=$2240;
+   var $4422=$4421; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4423=(($4422+64)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4424=$4423; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2239=$4424;
+   var $4425=$2239;
+   var $4426=$4425; //@line 622 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2238=$4426;
+   var $4427=$2238;
+   var $4428=$4427; //@line 328 "G:/emscripten/system/include/libcxx/ios"
+   HEAP32[(($4428)>>2)]=((107288)|0); //@line 328 "G:/emscripten/system/include/libcxx/ios"
+   var $4429=$4425; //@line 622 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4429)>>2)]=((106832)|0); //@line 622 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4430=$4421; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4430)>>2)]=((108180)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4431=$4421; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4432=(($4431+64)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4433=$4432; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4433)>>2)]=((108220)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4434=$4421; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4435=(($4434+8)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4436=$4435; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4436)>>2)]=((108200)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4437=$4421; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4438=(($4421+12)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4439=$4438; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2208=$4437;
+   $2209=((109796)|0);
+   $2210=$4439;
+   var $4440=$2208;
+   var $4441=$2209;
+   var $4442=$4440; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4443=(($4441+4)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4444=$2210; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2205=$4442;
+   $2206=$4443;
+   $2207=$4444;
+   var $4445=$2205;
+   var $4446=$2206;
+   var $4447=HEAP32[(($4446)>>2)]; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4448=$4445; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4448)>>2)]=$4447; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4449=(($4446+4)|0); //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4450=HEAP32[(($4449)>>2)]; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4451=$4445; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4452=HEAP32[(($4451)>>2)]; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4453=((($4452)-(12))|0); //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4454=$4453; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4455=HEAP32[(($4454)>>2)]; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4456=$4445; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4457=(($4456+$4455)|0); //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4458=$4457; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4458)>>2)]=$4450; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4459=(($4445+4)|0); //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4459)>>2)]=0; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4460=$4445; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $4461=HEAP32[(($4460)>>2)]; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $4462=((($4461)-(12))|0); //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $4463=$4462; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $4464=HEAP32[(($4463)>>2)]; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $4465=$4445; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $4466=(($4465+$4464)|0); //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $4467=$4466; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $4468=$2207; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   $2203=$4467;
+   $2204=$4468;
+   var $4469=$2203;
+   var $4470=$4469; //@line 659 "G:/emscripten/system/include/libcxx/ios"
+   var $4471=$2204; //@line 659 "G:/emscripten/system/include/libcxx/ios"
+   var $4472=$4471; //@line 659 "G:/emscripten/system/include/libcxx/ios"
+   (function() { try { __THREW__ = 0; return __ZNSt3__18ios_base4initEPv($4470, $4472) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 337; break; } else { label = 353; break; }
+  case 337: 
+   var $4473=(($4469+72)|0); //@line 660 "G:/emscripten/system/include/libcxx/ios"
+   HEAP32[(($4473)>>2)]=0; //@line 660 "G:/emscripten/system/include/libcxx/ios"
+   var $4474=(($4469+76)|0); //@line 661 "G:/emscripten/system/include/libcxx/ios"
+   HEAP32[(($4474)>>2)]=-1; //@line 661 "G:/emscripten/system/include/libcxx/ios"
+   var $4475=$4440; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4476=(($4475+8)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4477=$4476; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4478=(($4441+12)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2201=$4477;
+   $2202=$4478;
+   var $4479=$2201;
+   var $4480=$2202;
+   var $4481=HEAP32[(($4480)>>2)]; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4482=$4479; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4482)>>2)]=$4481; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4483=(($4480+4)|0); //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4484=HEAP32[(($4483)>>2)]; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4485=$4479; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4486=HEAP32[(($4485)>>2)]; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4487=((($4486)-(12))|0); //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4488=$4487; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4489=HEAP32[(($4488)>>2)]; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4490=$4479; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4491=(($4490+$4489)|0); //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4492=$4491; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4492)>>2)]=$4484; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4493=HEAP32[(($4441)>>2)]; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4494=$4440; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4494)>>2)]=$4493; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4495=(($4441+20)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4496=HEAP32[(($4495)>>2)]; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4497=$4440; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4498=HEAP32[(($4497)>>2)]; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4499=((($4498)-(12))|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4500=$4499; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4501=HEAP32[(($4500)>>2)]; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4502=$4440; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4503=(($4502+$4501)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4504=$4503; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4504)>>2)]=$4496; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4505=(($4441+24)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4506=HEAP32[(($4505)>>2)]; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4507=$4440; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4508=(($4507+8)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4509=$4508; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4509)>>2)]=$4506; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4510=$4421; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4510)>>2)]=((108180)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4511=$4421; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4512=(($4511+64)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4513=$4512; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4513)>>2)]=((108220)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4514=$4421; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4515=(($4514+8)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4516=$4515; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4516)>>2)]=((108200)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4517=(($4421+12)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4518=$2241; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2236=$4517;
+   $2237=$4518;
+   var $4519=$2236;
+   var $4520=$2237; //@line 244 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2231=$4519;
+   $2232=$4520;
+   var $4521=$2231;
+   var $4522=$4521; //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   (function() { try { __THREW__ = 0; return __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEEC2Ev($4522) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 338; break; } else { label = 354; break; }
+  case 338: 
+   var $4523=$4521; //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4523)>>2)]=((108360)|0); //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4524=(($4521+32)|0); //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2230=$4524;
+   var $4525=$2230;
+   $2229=$4525;
+   var $4526=$2229;
+   var $4527=$4526; //@line 1794 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4528=(($4526)|0); //@line 1794 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2228=$4528;
+   var $4529=$2228;
+   $2227=$4529;
+   var $4530=$2227;
+   var $4531=$4530; //@line 2374 "G:/emscripten/system/include/libcxx/memory"
+   $2226=$4531;
+   var $4532=$2226;
+   var $4533=$4532; //@line 2187 "G:/emscripten/system/include/libcxx/memory"
+   $2225=$4533;
+   var $4534=$2225;
+   var $4535=(($4532)|0); //@line 2187 "G:/emscripten/system/include/libcxx/memory"
+   $2224=$4526;
+   var $4536=$2224;
+   var $4537=(($4536)|0); //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   $2223=$4537;
+   var $4538=$2223;
+   var $4539=$4538; //@line 2432 "G:/emscripten/system/include/libcxx/memory"
+   $2222=$4539;
+   var $4540=$2222;
+   var $4541=(($4540)|0); //@line 2253 "G:/emscripten/system/include/libcxx/memory"
+   var $4542=(($4541)|0); //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   var $4543=$4542; //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   var $4544=(($4543)|0); //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   $__a_i_i_i_i_i_i97=$4544; //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   $__i_i_i_i_i_i_i98=0; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   label = 339; break; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+  case 339: 
+   var $4546=$__i_i_i_i_i_i_i98; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   var $4547=(($4546)>>>(0)) < 3; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   if ($4547) { label = 340; break; } else { label = 341; break; } //@line 1611 "G:/emscripten/system/include/libcxx/string"
+  case 340: 
+   var $4549=$__i_i_i_i_i_i_i98; //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   var $4550=$__a_i_i_i_i_i_i97; //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   var $4551=(($4550+($4549<<2))|0); //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   HEAP32[(($4551)>>2)]=0; //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   var $4552=$__i_i_i_i_i_i_i98; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   var $4553=((($4552)+(1))|0); //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   $__i_i_i_i_i_i_i98=$4553; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   label = 339; break; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+  case 341: 
+   var $4554=(($4521+44)|0); //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4554)>>2)]=0; //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4555=(($4521+48)|0); //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4556=$2232; //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4555)>>2)]=$4556; //@line 242 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2221=$2235;
+   var $4557=$2221;
+   $2220=$4557;
+   var $4558=$2220;
+   var $4559=$4558; //@line 1794 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4560=(($4558)|0); //@line 1794 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2219=$4560;
+   var $4561=$2219;
+   $2218=$4561;
+   var $4562=$2218;
+   var $4563=$4562; //@line 2374 "G:/emscripten/system/include/libcxx/memory"
+   $2217=$4563;
+   var $4564=$2217;
+   var $4565=$4564; //@line 2187 "G:/emscripten/system/include/libcxx/memory"
+   $2216=$4565;
+   var $4566=$2216;
+   var $4567=(($4564)|0); //@line 2187 "G:/emscripten/system/include/libcxx/memory"
+   $2215=$4558;
+   var $4568=$2215;
+   var $4569=(($4568)|0); //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   $2214=$4569;
+   var $4570=$2214;
+   var $4571=$4570; //@line 2432 "G:/emscripten/system/include/libcxx/memory"
+   $2213=$4571;
+   var $4572=$2213;
+   var $4573=(($4572)|0); //@line 2253 "G:/emscripten/system/include/libcxx/memory"
+   var $4574=(($4573)|0); //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   var $4575=$4574; //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   var $4576=(($4575)|0); //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   $__a_i_i_i1_i_i_i95=$4576; //@line 1610 "G:/emscripten/system/include/libcxx/string"
+   $__i_i_i_i2_i_i_i96=0; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   label = 342; break; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+  case 342: 
+   var $4578=$__i_i_i_i2_i_i_i96; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   var $4579=(($4578)>>>(0)) < 3; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   if ($4579) { label = 343; break; } else { label = 344; break; } //@line 1611 "G:/emscripten/system/include/libcxx/string"
+  case 343: 
+   var $4581=$__i_i_i_i2_i_i_i96; //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   var $4582=$__a_i_i_i1_i_i_i95; //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   var $4583=(($4582+($4581<<2))|0); //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   HEAP32[(($4583)>>2)]=0; //@line 1612 "G:/emscripten/system/include/libcxx/string"
+   var $4584=$__i_i_i_i2_i_i_i96; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   var $4585=((($4584)+(1))|0); //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   $__i_i_i_i2_i_i_i96=$4585; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+   label = 342; break; //@line 1611 "G:/emscripten/system/include/libcxx/string"
+  case 344: 
+   (function() { try { __THREW__ = 0; return __ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE3strERKNS_12basic_stringIcS2_S4_EE($4521, $2235) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 345; break; } else { label = 347; break; } //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+  case 345: 
+   (function() { try { __THREW__ = 0; return __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev($2235) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 360; break; } else { label = 346; break; } //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+  case 346: 
+   var $4588$0 = ___cxa_find_matching_catch(-1, -1); $4588$1 = tempRet0;
+   var $4589=$4588$0;
+   $2233=$4589; //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+   var $4590=$4588$1;
+   $2234=$4590; //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+   label = 349; break; //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+  case 347: 
+   var $4592$0 = ___cxa_find_matching_catch(-1, -1); $4592$1 = tempRet0;
+   var $4593=$4592$0;
+   $2233=$4593; //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+   var $4594=$4592$1;
+   $2234=$4594; //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+   (function() { try { __THREW__ = 0; return __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev($2235) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 348; break; } else { label = 352; break; } //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+  case 348: 
+   label = 349; break; //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+  case 349: 
+   (function() { try { __THREW__ = 0; return __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev($4524) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 350; break; } else { label = 352; break; } //@line 244 "G:/emscripten/system/include/libcxx/sstream"
+  case 350: 
+   var $4598=$4521; //@line 244 "G:/emscripten/system/include/libcxx/sstream"
+   (function() { try { __THREW__ = 0; return __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEED2Ev($4598) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 351; break; } else { label = 352; break; } //@line 244 "G:/emscripten/system/include/libcxx/sstream"
+  case 351: 
+   var $4600=$2233; //@line 244 "G:/emscripten/system/include/libcxx/sstream"
+   var $4601=$2234; //@line 244 "G:/emscripten/system/include/libcxx/sstream"
+   var $4602$0=$4600;
+   var $4602$1=0;
+   var $4603$0=$4602$0;
+   var $4603$1=$4601;
+   var $eh_lpad_body_i103$1 = $4603$1;var $eh_lpad_body_i103$0 = $4603$0;label = 355; break;
+  case 352: 
+   var $4605$0 = ___cxa_find_matching_catch(-1, -1,0); $4605$1 = tempRet0;
+   __ZSt9terminatev(); //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+   throw "Reached an unreachable!"; //@line 243 "G:/emscripten/system/include/libcxx/sstream"
+  case 353: 
+   var $4607$0 = ___cxa_find_matching_catch(-1, -1); $4607$1 = tempRet0;
+   var $4608=$4607$0;
+   $2242=$4608; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4609=$4607$1;
+   $2243=$4609; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   label = 357; break; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+  case 354: 
+   var $4611$0 = ___cxa_find_matching_catch(-1, -1); $4611$1 = tempRet0;
+   var $eh_lpad_body_i103$1 = $4611$1;var $eh_lpad_body_i103$0 = $4611$0;label = 355; break;
+  case 355: 
+   var $eh_lpad_body_i103$0;
+   var $eh_lpad_body_i103$1;
+   var $4612=$eh_lpad_body_i103$0;
+   $2242=$4612; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4613=$eh_lpad_body_i103$1;
+   $2243=$4613; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4614=$4421; //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+   (function() { try { __THREW__ = 0; return __ZNSt3__114basic_iostreamIcNS_11char_traitsIcEEED2Ev($4614, ((109796)|0)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 356; break; } else { label = 359; break; } //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+  case 356: 
+   label = 357; break; //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+  case 357: 
+   var $4617=$4421; //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+   var $4618=(($4617+64)|0); //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+   var $4619=$4618; //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+   (function() { try { __THREW__ = 0; return __ZNSt3__19basic_iosIcNS_11char_traitsIcEEED2Ev($4619) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 358; break; } else { label = 359; break; } //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+  case 358: 
+   var $4621=$2242; //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+   var $4622=$2243; //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+   var $4623$0=$4621;
+   var $4623$1=0;
+   var $4624$0=$4623$0;
+   var $4624$1=$4622;
+   ___resumeException($4624$0) //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+  case 359: 
+   var $4626$0 = ___cxa_find_matching_catch(-1, -1,0); $4626$1 = tempRet0;
+   __ZSt9terminatev(); //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+   throw "Reached an unreachable!"; //@line 894 "G:/emscripten/system/include/libcxx/sstream"
+  case 360: 
+   var $4627=$std_stringstream5; //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $4628=(($4627+8)|0); //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $4629=$4628; //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $4630 = (function() { try { __THREW__ = 0; return __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc($4629, ((8792)|0)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 361; break; } else { label = 382; break; } //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 361: 
+   (function() { try { __THREW__ = 0; return __ZN6StringC1EPKc($2575, ((9192)|0)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 362; break; } else { label = 382; break; } //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 362: 
+   (function() { try { __THREW__ = 0; return __ZN4File13NormalizePathERK6Stringc($2574, $2575, 92) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 363; break; } else { label = 383; break; } //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 363: 
+   var $4634 = (function() { try { __THREW__ = 0; return __ZlsRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEERK6String($4630, $2574) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 364; break; } else { label = 384; break; } //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 364: 
+   var $4636 = (function() { try { __THREW__ = 0; return __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc($4634, ((66832)|0)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 365; break; } else { label = 384; break; } //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 365: 
+   var $4638 = (function() { try { __THREW__ = 0; return __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc($4636, ((14584)|0)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 366; break; } else { label = 384; break; } //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 366: 
+   var $4640 = (function() { try { __THREW__ = 0; return __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc($4638, ((64456)|0)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 367; break; } else { label = 384; break; } //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 367: 
+   (function() { try { __THREW__ = 0; return __ZN6StringD1Ev($2574) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 368; break; } else { label = 383; break; } //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 368: 
+   (function() { try { __THREW__ = 0; return __ZN6StringD1Ev($2575) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 369; break; } else { label = 382; break; } //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 369: 
+   var $4644=___cxa_allocate_exception(8); //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   $2577=1;
+   var $4645=$4644; //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   $2200=$std_stringstream5;
+   var $4646=$2200;
+   var $4647=(($4646+12)|0); //@line 958 "G:/emscripten/system/include/libcxx/sstream"
+   (function() { try { __THREW__ = 0; return __ZNKSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE3strEv($2576, $4647) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 370; break; } else { label = 388; break; }
+  case 370: 
+   label = 371; break;
+  case 371: 
+   $2199=$2576;
+   var $4649=$2199;
+   $2198=$4649;
+   var $4650=$2198;
+   $2197=$4650;
+   var $4651=$2197;
+   $2196=$4651;
+   var $4652=$2196;
+   var $4653=(($4652)|0); //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   $2195=$4653;
+   var $4654=$2195;
+   var $4655=$4654; //@line 2433 "G:/emscripten/system/include/libcxx/memory"
+   $2194=$4655;
+   var $4656=$2194;
+   var $4657=(($4656)|0); //@line 2254 "G:/emscripten/system/include/libcxx/memory"
+   var $4658=(($4657)|0); //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   var $4659=$4658; //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   var $4660=(($4659)|0); //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   var $4661=$4660; //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   var $4662=HEAP8[($4661)]; //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   var $4663=(($4662)&(255)); //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   var $4664=$4663 & 1; //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   var $4665=(($4664)|(0))!=0; //@line 1520 "G:/emscripten/system/include/libcxx/string"
+   if ($4665) { label = 372; break; } else { label = 373; break; } //@line 1605 "G:/emscripten/system/include/libcxx/string"
+  case 372: 
+   $2188=$4651;
+   var $4667=$2188;
+   var $4668=(($4667)|0); //@line 1593 "G:/emscripten/system/include/libcxx/string"
+   $2187=$4668;
+   var $4669=$2187;
+   var $4670=$4669; //@line 2433 "G:/emscripten/system/include/libcxx/memory"
+   $2186=$4670;
+   var $4671=$2186;
+   var $4672=(($4671)|0); //@line 2254 "G:/emscripten/system/include/libcxx/memory"
+   var $4673=(($4672)|0); //@line 1593 "G:/emscripten/system/include/libcxx/string"
+   var $4674=$4673; //@line 1593 "G:/emscripten/system/include/libcxx/string"
+   var $4675=(($4674+8)|0); //@line 1593 "G:/emscripten/system/include/libcxx/string"
+   var $4676=HEAP32[(($4675)>>2)]; //@line 1593 "G:/emscripten/system/include/libcxx/string"
+   var $4690 = $4676;label = 374; break; //@line 1605 "G:/emscripten/system/include/libcxx/string"
+  case 373: 
+   $2193=$4651;
+   var $4678=$2193;
+   var $4679=(($4678)|0); //@line 1599 "G:/emscripten/system/include/libcxx/string"
+   $2192=$4679;
+   var $4680=$2192;
+   var $4681=$4680; //@line 2433 "G:/emscripten/system/include/libcxx/memory"
+   $2191=$4681;
+   var $4682=$2191;
+   var $4683=(($4682)|0); //@line 2254 "G:/emscripten/system/include/libcxx/memory"
+   var $4684=(($4683)|0); //@line 1599 "G:/emscripten/system/include/libcxx/string"
+   var $4685=$4684; //@line 1599 "G:/emscripten/system/include/libcxx/string"
+   var $4686=(($4685+1)|0); //@line 1599 "G:/emscripten/system/include/libcxx/string"
+   var $4687=(($4686)|0); //@line 1599 "G:/emscripten/system/include/libcxx/string"
+   $2190=$4687;
+   var $4688=$2190; //@line 960 "G:/emscripten/system/include/libcxx/memory"
+   $2189=$4688;
+   var $4689=$2189; //@line 627 "G:/emscripten/system/include/libcxx/memory"
+   var $4690 = $4689;label = 374; break; //@line 1605 "G:/emscripten/system/include/libcxx/string"
+  case 374: 
+   var $4690; //@line 1605 "G:/emscripten/system/include/libcxx/string"
+   $2185=$4690;
+   var $4691=$2185; //@line 1086 "G:/emscripten/system/include/libcxx/memory"
+   (function() { try { __THREW__ = 0; return __ZNSt13runtime_errorC2EPKc($4645, $4691) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 375; break; } else { label = 389; break; } //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 375: 
+   $2577=0; //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   (function() { try { __THREW__ = 0; return ___cxa_throw($4644, 113416, (584)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 2842; break; } else { label = 389; break; } //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   (function() { try { __THREW__ = 0; return __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev($2576) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 376; break; } else { label = 388; break; } //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 376: 
+   __ZNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev($std_stringstream5); //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   label = 396; break; //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 377: 
+   var $4696$0 = ___cxa_find_matching_catch(-1, -1); $4696$1 = tempRet0;
+   var $4697=$4696$0;
+   $2542=$4697; //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $4698=$4696$1;
+   $2543=$4698; //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   label = 380; break; //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 378: 
+   var $4700$0 = ___cxa_find_matching_catch(-1, -1); $4700$1 = tempRet0;
+   var $4701=$4700$0;
+   $2542=$4701; //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $4702=$4700$1;
+   $2543=$4702; //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   (function() { try { __THREW__ = 0; return __ZN6StringD1Ev($2572) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 379; break; } else { label = 2841; break; } //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 379: 
+   label = 380; break; //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 380: 
+   (function() { try { __THREW__ = 0; return __ZN6StringD1Ev($2573) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 381; break; } else { label = 2841; break; } //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 381: 
+   label = 2840; break; //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 382: 
+   var $4707$0 = ___cxa_find_matching_catch(-1, -1); $4707$1 = tempRet0;
+   var $4708=$4707$0;
+   $2542=$4708; //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $4709=$4707$1;
+   $2543=$4709; //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   label = 394; break; //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 383: 
+   var $4711$0 = ___cxa_find_matching_catch(-1, -1); $4711$1 = tempRet0;
+   var $4712=$4711$0;
+   $2542=$4712; //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $4713=$4711$1;
+   $2543=$4713; //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   label = 386; break; //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 384: 
+   var $4715$0 = ___cxa_find_matching_catch(-1, -1); $4715$1 = tempRet0;
+   var $4716=$4715$0;
+   $2542=$4716; //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $4717=$4715$1;
+   $2543=$4717; //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   (function() { try { __THREW__ = 0; return __ZN6StringD1Ev($2574) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 385; break; } else { label = 2841; break; } //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 385: 
+   label = 386; break; //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 386: 
+   (function() { try { __THREW__ = 0; return __ZN6StringD1Ev($2575) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 387; break; } else { label = 2841; break; } //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 387: 
+   label = 394; break; //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 388: 
+   var $4722$0 = ___cxa_find_matching_catch(-1, -1); $4722$1 = tempRet0;
+   var $4723=$4722$0;
+   $2542=$4723; //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $4724=$4722$1;
+   $2543=$4724; //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   label = 391; break; //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 389: 
+   var $4726$0 = ___cxa_find_matching_catch(-1, -1); $4726$1 = tempRet0;
+   var $4727=$4726$0;
+   $2542=$4727; //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   var $4728=$4726$1;
+   $2543=$4728; //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   (function() { try { __THREW__ = 0; return __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev($2576) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 390; break; } else { label = 2841; break; } //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 390: 
+   label = 391; break; //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 391: 
+   var $4731=$2577; //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   if ($4731) { label = 392; break; } else { label = 393; break; } //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 392: 
+   ___cxa_free_exception($4644); //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   label = 393; break; //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 393: 
+   label = 394; break; //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 394: 
+   (function() { try { __THREW__ = 0; return __ZNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev($std_stringstream5) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 395; break; } else { label = 2841; break; } //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 395: 
+   label = 2840; break; //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 396: 
+   label = 397; break; //@line 141 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 397: 
+   label = 398; break; //@line 142 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 398: 
+   __ZN6StringC1EPKc($2579, ((8536)|0)); //@line 142 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   (function() { try { __THREW__ = 0; return __ZN4File13NormalizePathERK6Stringc($2578, $2579, 92) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 399; break; } else { label = 443; break; } //@line 142 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 399: 
+   var $4740 = (function() { try { __THREW__ = 0; return __ZNK6StringneEPKc($2578, ((8272)|0)) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 400; break; } else { label = 444; break; } //@line 142 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 400: 
+   (function() { try { __THREW__ = 0; return __ZN6StringD1Ev($2578) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 401; break; } else { label = 443; break; } //@line 142 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 401: 
+   __ZN6StringD1Ev($2579); //@line 142 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+   if ($4740) { label = 402; break; } else { label = 462; break; } //@line 142 "G:/gfxapiSlave/win7-emcc/GraphicsEngine/../CodeLib/src/../tests/FileTests.cpp"
+  case 402: 
+   $2181=$std_stringstream6;
+   $2182=24;
+   var $4744=$2181;
+   var $4745=$4744; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4746=(($4745+64)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4747=$4746; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2180=$4747;
+   var $4748=$2180;
+   var $4749=$4748; //@line 622 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2179=$4749;
+   var $4750=$2179;
+   var $4751=$4750; //@line 328 "G:/emscripten/system/include/libcxx/ios"
+   HEAP32[(($4751)>>2)]=((107288)|0); //@line 328 "G:/emscripten/system/include/libcxx/ios"
+   var $4752=$4748; //@line 622 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4752)>>2)]=((106832)|0); //@line 622 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4753=$4744; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4753)>>2)]=((108180)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4754=$4744; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4755=(($4754+64)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4756=$4755; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4756)>>2)]=((108220)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4757=$4744; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4758=(($4757+8)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4759=$4758; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4759)>>2)]=((108200)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4760=$4744; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4761=(($4744+12)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4762=$4761; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2149=$4760;
+   $2150=((109796)|0);
+   $2151=$4762;
+   var $4763=$2149;
+   var $4764=$2150;
+   var $4765=$4763; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4766=(($4764+4)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4767=$2151; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2146=$4765;
+   $2147=$4766;
+   $2148=$4767;
+   var $4768=$2146;
+   var $4769=$2147;
+   var $4770=HEAP32[(($4769)>>2)]; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4771=$4768; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4771)>>2)]=$4770; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4772=(($4769+4)|0); //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4773=HEAP32[(($4772)>>2)]; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4774=$4768; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4775=HEAP32[(($4774)>>2)]; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4776=((($4775)-(12))|0); //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4777=$4776; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4778=HEAP32[(($4777)>>2)]; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4779=$4768; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4780=(($4779+$4778)|0); //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4781=$4780; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4781)>>2)]=$4773; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4782=(($4768+4)|0); //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4782)>>2)]=0; //@line 293 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4783=$4768; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $4784=HEAP32[(($4783)>>2)]; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $4785=((($4784)-(12))|0); //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $4786=$4785; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $4787=HEAP32[(($4786)>>2)]; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $4788=$4768; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $4789=(($4788+$4787)|0); //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $4790=$4789; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   var $4791=$2148; //@line 294 "G:/emscripten/system/include/libcxx/istream"
+   $2144=$4790;
+   $2145=$4791;
+   var $4792=$2144;
+   var $4793=$4792; //@line 659 "G:/emscripten/system/include/libcxx/ios"
+   var $4794=$2145; //@line 659 "G:/emscripten/system/include/libcxx/ios"
+   var $4795=$4794; //@line 659 "G:/emscripten/system/include/libcxx/ios"
+   (function() { try { __THREW__ = 0; return __ZNSt3__18ios_base4initEPv($4793, $4795) } catch(e) { if (typeof e != "number") throw e; if (ABORT) throw e; __THREW__ = 1; return null } })();if (!__THREW__) { label = 403; break; } else { label = 419; break; }
+  case 403: 
+   var $4796=(($4792+72)|0); //@line 660 "G:/emscripten/system/include/libcxx/ios"
+   HEAP32[(($4796)>>2)]=0; //@line 660 "G:/emscripten/system/include/libcxx/ios"
+   var $4797=(($4792+76)|0); //@line 661 "G:/emscripten/system/include/libcxx/ios"
+   HEAP32[(($4797)>>2)]=-1; //@line 661 "G:/emscripten/system/include/libcxx/ios"
+   var $4798=$4763; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4799=(($4798+8)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4800=$4799; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4801=(($4764+12)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   $2142=$4800;
+   $2143=$4801;
+   var $4802=$2142;
+   var $4803=$2143;
+   var $4804=HEAP32[(($4803)>>2)]; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4805=$4802; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4805)>>2)]=$4804; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4806=(($4803+4)|0); //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4807=HEAP32[(($4806)>>2)]; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4808=$4802; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4809=HEAP32[(($4808)>>2)]; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4810=((($4809)-(12))|0); //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4811=$4810; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4812=HEAP32[(($4811)>>2)]; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4813=$4802; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4814=(($4813+$4812)|0); //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4815=$4814; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4815)>>2)]=$4807; //@line 205 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4816=HEAP32[(($4764)>>2)]; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4817=$4763; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4817)>>2)]=$4816; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4818=(($4764+20)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4819=HEAP32[(($4818)>>2)]; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4820=$4763; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4821=HEAP32[(($4820)>>2)]; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4822=((($4821)-(12))|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4823=$4822; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4824=HEAP32[(($4823)>>2)]; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4825=$4763; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4826=(($4825+$4824)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4827=$4826; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4827)>>2)]=$4819; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4828=(($4764+24)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4829=HEAP32[(($4828)>>2)]; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4830=$4763; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4831=(($4830+8)|0); //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4832=$4831; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4832)>>2)]=$4829; //@line 1487 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4833=$4744; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4833)>>2)]=((108180)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4834=$4744; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4835=(($4834+64)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4836=$4835; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4836)>>2)]=((108220)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4837=$4744; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4838=(($4837+8)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4839=$4838; //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   HEAP32[(($4839)>>2)]=((108200)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"
+   var $4840=(($4744+12)|0); //@line 893 "G:/emscripten/system/include/libcxx/iosfwd"